文章來源:SIGGRAPH ?2017
下載鏈接:Paper Download
解決的問題:圖像補(bǔ)全
應(yīng)用場景:圖像補(bǔ)全(Image completion),目標(biāo)移除(Object remove)
圖像補(bǔ)全相關(guān)工作:
1)基于Patch-based的圖像補(bǔ)全,該類方法主要是從源圖像中尋找相似的patch,然后將該patch貼到缺失的區(qū)域。當(dāng)源圖像中沒有類似的區(qū)域時,該方法就無法填充看上去合理的洞。

Patch-based方法的不足:(1)Depend on low-level features;(2)Unable to generate novel objects;
2)基于Context Encoder的圖像補(bǔ)全,該方法基于深度學(xué)習(xí)生成相似的紋理區(qū)域,在一定程度上可以補(bǔ)全缺失的區(qū)域,而且效果還不錯。但是不能夠保持局部一致性。

Context Encoder方法的不足:(1)Can generate novel objects but fixed low resolution images;(2)Masks region must in the center of image;(3)補(bǔ)全的區(qū)域不能保持與周圍區(qū)域的局部一致性。
本文方法主要是基于Context Encoder方法進(jìn)行相關(guān)改進(jìn)。下表為三種方法的簡單比較。

文章內(nèi)容:
本文提出一種新穎的圖像補(bǔ)全方法,可以保持圖像在局部和全局一致。使用完全卷積神經(jīng)網(wǎng)絡(luò),我們可以通過填充任何形狀的缺失區(qū)域來完成任意分辨率的圖像。為了訓(xùn)練這個圖像補(bǔ)全網(wǎng)絡(luò),作者使用全局和局部上下文鑒別器進(jìn)行訓(xùn)練,以區(qū)分真實圖像和已補(bǔ)全的圖像。全局鑒別器查看整個圖像,以評估其是否整體一致,而局部鑒別器僅在以補(bǔ)全區(qū)域為中心的小區(qū)域上看,以確保生成的補(bǔ)丁在局部保持一致性。

該文章完全以卷積網(wǎng)絡(luò)作為基礎(chǔ),遵循GAN的思路,設(shè)計為兩部分(三個網(wǎng)絡(luò)),一部分用于生成圖像,即生成網(wǎng)絡(luò),一部分用于鑒別生成圖像是否與原圖像一致,即全局鑒別器和局部鑒別器。在整個網(wǎng)絡(luò)中,作者采用ReLU函數(shù),在最后一層采用Sigmoid函數(shù)使得輸出在0到1區(qū)間內(nèi)。網(wǎng)絡(luò)結(jié)構(gòu)圖如下所示。

生成圖像部分,作者采用12層卷積網(wǎng)絡(luò)對原始圖片(去除需要進(jìn)行填充的部分)進(jìn)行encoding,得到一張原圖16分之一大小的網(wǎng)格。然后再對該網(wǎng)格采用4層卷積網(wǎng)絡(luò)進(jìn)行decoding,從而得到復(fù)原圖像,下表為生成網(wǎng)絡(luò)各層參數(shù)分布情況。
輸入:RGB圖像,二進(jìn)制掩碼(需要填充的區(qū)域以1填充)
輸出:RGB圖像

鑒別器被分為兩個部分,一個全局鑒別器(Global Discriminator)以及一個局部鑒別器(Local Discriminator)。全局鑒別器將完整圖像作為輸入,識別場景的全局一致性,而局部鑒別器僅在以填充區(qū)域為中心的原圖像4分之一大小區(qū)域上觀測,識別局部一致性。
通過采用兩個不同的鑒別器,使得最終網(wǎng)絡(luò)不但可以使全局觀測一致,并且能夠優(yōu)化其細(xì)節(jié),最終產(chǎn)生更好的圖片填充效果。
全局鑒別網(wǎng)絡(luò)輸入是256X256,RGB三通道圖片,局部網(wǎng)絡(luò)輸入是128X128,RGB三通道圖片,根據(jù)論文當(dāng)中的設(shè)置,全局網(wǎng)絡(luò)和局部網(wǎng)絡(luò)都會通過5X5的convolution layer,以及2X2的stride降低分辨率,最終分別得到1024維向量。然后,作者將全局和局部兩個鑒別器輸出連接成一個2048維向量,通過一個全連接然后用sigmoid函數(shù)得到整體圖像一致性打分。




該文章的特點:
(1)生成網(wǎng)絡(luò)模型僅僅降低了兩次分辨率,使用大小為原始大小四分之一的卷積,其目的是為了降低最終圖像的紋理模糊程度。
(2)使用dilated convolutional layer(空洞卷積/擴(kuò)張卷積),它能夠通過相同數(shù)量的參數(shù)和計算能力感知每個像素周圍更大的區(qū)域。(Multi-Scale Context Aggregation by Dilated Convolutions)
文章中給出了具體的示意,為了能夠計算填充圖像每一個像素的顏色,該像素需要知道周圍圖像的內(nèi)容,采用空洞卷積能夠幫助每一個點有效 的“看到”比使用標(biāo)準(zhǔn)卷積更大的輸入圖像區(qū)域,從而填充圖中點p2的顏色。

擴(kuò)張卷積算子可以用下式來表示:

其中,η是擴(kuò)張因子,當(dāng)η=1,則表示標(biāo)準(zhǔn)卷積操作,文中的η1>1;
Dilated convolutions:307×307pixels
standard convolutional:99×99 pixels
損失函數(shù):
生成網(wǎng)絡(luò)使用weighted Mean Squared Error (MSE)作為損失函數(shù),計算原圖與生成圖像像素之間的差異,表達(dá)式如下所示:

其中,⊙ is the pixelwise multiplication,|| · || is the Euclidean norm.
鑒別器網(wǎng)絡(luò)使用GAN損失函數(shù),其目標(biāo)是最大化生成圖像和原始圖像的相似概率(見圖5中的2048維向量,它代表的是概率),表達(dá)式如下所示:

最后結(jié)合兩者損失,形成下式:

其中α為超參,文中取值0.004.
訓(xùn)練步驟:
(1)Trained completion network with the MSE loss. (TC= 90, 000 iterations)
(2)Fix the completion network and train the discriminators. (TD = 10, 000 iterations)
(3)?Completion network and content discriminators are trained jointly. (Ttrain = 500, 000 iterations )
(4)post-processing,Blending the completed region with the color of the surrounding pixels. (首先使用fast marching method 然后使用泊松分布圖像融合)
其中第(1)、(2)對于該網(wǎng)絡(luò)取得成功至關(guān)重要。
Some tricks:(訓(xùn)練圖像可以是任何尺寸)
(1)將圖像的較短邊resize成(256,384)中的一個隨機(jī)數(shù)(等比例resize)。
(2)從圖像上隨機(jī)crop一個256*256的圖片。
(3)在圖像上隨機(jī)挖一個洞,洞的長和寬為(96,128)中的某個隨機(jī)數(shù)(長寬不需一樣,且相互獨(dú)立)。
(4)全局discriminator的輸入為full 256×256-pixel。
(5)局部discriminator的輸入128 × 128-pixel patch.
實驗結(jié)果:

網(wǎng)絡(luò)中不同部分對補(bǔ)全圖像的影響:

后處理的效果圖:

目標(biāo)移除結(jié)果圖:

人臉補(bǔ)全及場景補(bǔ)全結(jié)果圖:

存在的不足:
(1)不能補(bǔ)全具有大尺寸洞的圖,這主要與空洞卷積所能“看到”的區(qū)域大小有關(guān),文中最大可看到307×307pixels。
(2)不能生成復(fù)雜性的結(jié)構(gòu)性紋理,這個可能與作者的網(wǎng)絡(luò)設(shè)計的網(wǎng)絡(luò)有關(guān)。
(3)一定程度上受到訓(xùn)練圖像庫的限制。
失敗案例圖:



相關(guān)參考:民科帶你讀文章2: 全局與局部GAN做圖片填充、孫嘉睿視頻解說
內(nèi)容說明:
上述內(nèi)容僅個人的點滴粗見,如有不當(dāng)之處,請同行批評指正。