[AI] 論文筆記 - CVPR2018: Generative Image Inpainting with Contextual Attention


注:博主是大四學生,翻譯水平可能比不上研究人員的水平,博主會盡自己的力量為大家翻譯這篇論文。翻譯結果僅供參考,提供思路,翻譯不足的地方博主會標注出來,請大家參照原文,請大家多多關照。

轉載請務必注明出處,謝謝。

0. 譯者序

  題目翻譯:基於內容感知生成模型的圖像修復

  介紹:這篇文章也被稱作deepfill v1,作者的后續工作 "Free-Form Image Inpainting with Gated Convolution" 也被稱為deepfill v2。兩者最主要的區別是,v2支持任意形狀的mask(標記圖像待修復區域的罩子),且支持標記黑線來指定修復的大致形狀。

相關資料:

  近期在做有關圖像修復的工作,正好看到CVPR2018上這篇Jiahui Yu(余家輝)大牛的著作deepfill v1,在此基礎上作者與其導師Thomas S.Huang(黃煦濤,計算機視覺之父)等人發布了deepfill v2 。本博文只關注deepfill v1,今后會更新deepfill v2的翻譯解讀。

引言 Abstract

  近期的基於深度學習的圖像修復方法展現了很大的潛力,這些方法都能生成看似合理的圖像結構及紋理,但在修復區域的邊界,經常會生成扭曲的結構和模糊的圖像,這是因為卷積神經網絡無法從圖像較遠的區域提取信息導致的。不過,傳統的紋理和斑塊(patch)的修復能取得比較好的效果(因為他們只需要從周圍區域借鑒圖像)。

  作者基於上述這些現象,提出了一種新的基於深度生成模型的方法,不僅可以生成新的圖像結構,還能夠很好地利用周圍的圖像特征作為參考,從而做出更好的預測。

  該模型是一個前饋全卷積神經網絡,可以處理包含多個缺失區域的圖像,且在修復圖像的時候,輸入的圖像大小沒有限制。作者在人臉圖像、自然圖像、紋理圖像等測試集上,都產生了比現在已有的方法更好的效果。

1. 介紹 Introduction

  圖像修復(填補缺失像素值)在計算機視覺領域是一項很重要的研究工作。其核心挑戰就是能夠綜合現實情況(realistic)和圖像的語義(semantic),來修補缺失的圖像。

  早期的圖像修復原理,都類似於紋理的合成,通過匹配(match)和復制(copy)背景的斑塊來填補缺失的圖像。這些方法在背景修復(background inpainting)任務上都有着比較好的結果,但他們無法修復一些比較復雜的,不可重復的圖像結構(類似於人臉、物體)。更多地,這些方法不能捕捉到圖像的高維特征(high-level semantics)。

  近期基於深度卷積網絡和GAN(生成對抗網絡)的圖像修復方法,其原理都是通過自編碼器,結合對抗網絡訓練的方式,來讓生成的圖像和存在的圖像保持一致性。

  可惜的是,這些基於CNN的方法,通常都會在邊界生成扭曲的結構和模糊的紋理。作者發現是因為卷積神經網絡無法很好地提取遠距離的圖像內容(distant contextual information)和不規則區域的圖像內容(hole regions)。

  舉例來說,一個像素點的內容被64個像素點以外的內容影響,那么他至少要使用6層3x3的卷積核才能夠有這么大的感受野(receptive filed)。而且由於這個感受野的形狀是非常標准且對稱的矩形(regular and symmetric grid),所以在不規則的一些圖像內容上,無法很好地給對應特征分配正確的權值。

  近期的一項研究基於生成斑塊和匹配斑塊的相似性優化問題(optimize problem),能夠提高效果,但由於是基於優化問題,需要非常多次的梯度下降迭代,以及處理一張512x512的圖像需要很長的時間。

  作者提出了一個帶有內容感知層(contextual attention layer)的前饋生成網絡,這個網絡的訓練分為兩個階段。第一階段是一個簡單的卷積網絡,通過不斷修復缺失區域來產生損失值reconstruction loss,修復出的是一個比較模糊的結果。第二階段是內容感知層的訓練,其核心思想是:使用已知圖像斑塊的特征作為卷積核來加工生成出來的斑塊,來精細化這個模糊的修復結果。它是這樣來設計和實現的:用卷積的方法,來從已知的圖像內容中匹配相似的斑塊,通過在全通道上做softmax來找出最像待修補區域的斑塊,然后使用這個區域的信息做反卷積(deconvolution)從而來重建該修補區域。

(譯者注:這里的思想應該是,假設我有一個待修補區域x,我要通過卷積的方法,從整個圖像出匹配出幾個像x的區域a, b, c, d,然后從a, b, c, d中使用softmax的方法挑選出最像x的那個區域,然后通過反卷積的方式,來生成x區域的圖像。)

  這個內容感知模塊,還有着空間傳播層(spatial propagation layer)來提高感知的空間一致性。

  為了讓網絡能“想象”(hallucinate)出新的圖像內容,有着另一條卷積通路(convolutional pathway),這條通路和內容感知卷積通路是平行的。這兩個通路最終聚合並送入一個解碼器來產生最后的輸出。第二階段的網絡通過兩個損失值來訓練(重建損失值 reconstruction losses 和兩個WGAN-GP損失(Wasserstein GAN losses),其中一個WGAN來觀察全局圖像,另一個WGAN來觀察局部生成出的圖像。

網絡架構如下圖:

 圖1

作者的主要貢獻總結如下:

  • 作者提出了一種全新的內容感知層(contextual attention layer)來從距離遙遠的區域提取近似待修復區域的特征。
  • 介紹了幾種技術(圖像修復網絡增強、全局和局部的WGANs、空間衰減的重建損失(spatially discounted reconstruction loss, 會在下文中講到)來提高訓練的穩定性和速度,上述這些方法都基於最近的圖像修復生成網絡。最終,作者能夠在一周內訓練出該網絡而不是兩個月。(據譯者在github issue里看到,作者使用的是一個GTX1080Ti進行訓練)
  • 作者的前饋生成網絡在眾多具有挑戰的數據集(例如CelebA、CelebA-HQ、DTD textures、ImageNet、Places2)實現了高質量的圖像修復結果

2. 相關研究 Related Work

2.1 圖像修復 Image Inpainting

  現有的圖像修復技術分為兩個流派,一個是傳統算法,其基於擴散(diffusion)或斑塊(patch-based),只能提取出低維特征(low-level features)。另一個是基於學習的算法,比如訓練深度卷積神經網絡來預測像素值。

  傳統的擴散或斑塊算法,通常使用變分算法(variational algorithms)或斑塊相似性來將圖像信息從背景區域傳播到缺失區域內,這些算法在靜態紋理(stationary textures)比較適用,但在處理一些非靜態紋理(non-stationary textures)比如自然景觀就不行了。

  Simakov等人提出的基於雙向斑塊相似性的方法(bidirectional patch similarity-based scheme)可以更好地模擬非靜態紋理,但計算量十分巨大,無法投入使用。

  最近,深度學習和基於GAN的方法在圖像修復領域很有前途,初始的研究是將卷積網絡用於圖像去噪、小區域的圖像修復。內容編碼器(Context Encoder)首先被用於訓練大面積圖像修復的深度神經網絡。它使用GAN的損失值加上2-范數(MSE)作為重建損失值(reconstruction loss)來作為目標函數。

  更進一步的研究,比如Iizuka等人提出了利用全局和局部的判別器(Discriminator)來作為GAN的對抗損失,全局判別器用於判定整幅圖像的語義一致性,局部判別器專注於小塊生成區域的語義,以此來保證修復出的圖像的高度一致性。

  此外,Iizuka等人還使用了擴展卷積(dialated convolutions)的方式來替代內容編碼器的全連接層,這兩種方法的目標都是為了提高輸出神經元(output neurons)的感受野的大小。

  與此同時,還有多項研究專注於人臉的圖像生成修復。例如Yeh等人通過在缺失區域的周圍尋找一種編碼,來嘗試解碼來獲得完整的圖像。Li等人引入了額外的人臉完整度作為損失值來訓練網絡。然而這些方法通常都需要圖像的后續處理,來修復缺失區域邊界上的色彩一致性(color coherency)。

2.2 感知模型 Attention Modeling

(譯者注:感知模型在參考資料里有)

  關於深度卷積網絡中的空間感知問題有着很多的研究。在這里,作者回顧了幾個具有代表性的內容感知模型。

  首先是Jaderberg等人提出的STN(spatial transformer network),用來進行目標分類任務。由於整個網絡專注於全局遷移問題(global transformation),所以在斑塊大小的問題上不合適,不能用於圖像修復。

  第二個是Zhou等人的表征擴散(appearance flow),就是從輸入的圖像中查找哪些像素點應該被移動到待修復區域,這種方法適合在多個同樣的物體之間進行圖像修復。但從背景區域還原前景效果不是很好(譯者注:可能是因為找不到哪些像素點可以flow到前景)

  第三個是Dai等人提出的空間感知卷積核的學習和激活。

  這些方法都不能很好地從背景中提取有效的特征。

3. 改進圖像修復的生成網絡 Improved Generative Inpainting Network

(譯者注:為了不讓讀者讀懵了,譯者在這里說明一下接下來的論文結構。作者在第三部分改進了Iizuka等人提出的圖像修復網絡,在第四部分將內容感知層加入這個修復網絡,從而構建出完整的圖像修復網絡)

  作者通過復現近期的圖像修復模型(其實就是上文中提到的用全局和局部Discriminator的Iizuka的方案),以及做出多種提升方法來構建生成模型。Iizuka的模型在人臉圖像、建築圖像、自然圖像都能有較好的結果。

1) 粗細網絡 Coarse-to-fine network architecture

網絡結構如下圖(其實就是上文中網絡結構的簡化版):

圖2

  整個網絡的輸入和輸出和Iizuka的網絡設定是一樣的,也就是說,生成網絡的輸入是一張帶有白色mask的圖像,以及一個用於表示mask區域的二進制串,輸出是一張完整的圖像。作者配對(pair)了輸入的圖像和對應的二進制mask,這樣就可以處理任意大小、任意位置、任意形狀的mask了。

  網絡的輸入是帶有隨機矩形缺失區域的256x256圖像,訓練后的模型可以接受包含多個孔洞的任意大小的圖像。

  在圖像修復任務中,感受野的大小決定了修復的質量,Iizuka等人通過使用擴張卷積(dilated convolution)來增大感受野,為了進一步增大感受野,作者提出了粗細網絡的概念。

(譯者注:這里擴張卷積的意思就是,將卷積核填充擴大,見參考資料,以此來提高感受野的大小,在下文中會反復提到。)

  粗網絡(Coarse network)僅僅使用使用重構損失進行訓練,而細網絡(Refinement network)使用重構損失+兩個GAN損失進行訓練。

  直觀上,細網絡比帶有缺失區域的圖像看到的場景更完整(譯者注:因為粗網絡已經修復了一部分),因此編碼器比粗網絡能更好地學習特征表示。這種二階段(two-stage)的網絡架構類似於殘差學習(residual learning)或是深度監督機制(deep supervision)。

  為了提高網絡的訓練效率以及減少參數的數量,作者使用了窄而深(thin and deep)的網絡,在layer的實現方面,作者對所有layer的邊界使用了鏡像填充(mirror padding)移除了批歸一化(batch normalization),原因是作者發現批歸一化會降低修復的圖像色彩的一致性。此外,作者使用了ELUs來替代ReLU,通過對輸出卷積核的值的裁剪(clip the output filter values)來替代激活函數tanh或是sigmoid。另外,作者發現將全局和局部的特征表示分開,而不是合並到一起(Iizuka的網絡合並到一起了),能夠更好地對GAN進行訓練。

2) 全局和局部的WGAN Global and local Wasserstein GANs

  不同於先前的使用DCGAN進行圖像修復,作者提出了WGAN-GP的修改版本。通過在第二階段結合全局和局部的WGAN-GP損失來增強全局和局部的一致性(這一點是受Iizuka網絡的啟發)。WGAN-GP損失是目前已有的用於圖像生成的GAN中表現最好的損失值(使用1-范數重建損失,表現的會更好)。

(譯者注:以下是公式證明推導來說明WGAN損失的有效性,譯者的數學水平不夠,請大家見諒,詳細推導請參照原文)

  更精確的說,WGAN使用了Earth-Mover距離來比較生成圖像和真實圖像的分布。它的目標函數應用了Kantorovich-Rubinstein duality……

3) 空間衰減重構損失 Spatially discounted reconstruction loss

  對於圖像修復問題,一個缺失區域可能會有多種可行的修復結果。一個可行的修復結果可能會和原始圖像差距很大,如果使用原始圖像作為唯一的參照標准(ground truth),計算重構損失(reconstruction loss)時就會誤導卷積網絡的訓練過程

  直觀上來說,在缺失區域的邊界上修復的結果的歧義性(ambiguity),要遠小於中心區域(譯者注:這里的意思是邊界區域的取值范圍要比中心區域小)。這與強化學習中的問題類似。當長期獎勵(long-term rewards)有着很大的取值范圍時,人們在采樣軌跡(sampled trajectories)上使用隨着時間衰減的獎勵(譯者注:隨着時間的流逝,網絡得到的獎勵會越來越小)

  受這一點的啟發,作者提出了空間衰減重構損失。

 (譯者注:隨着像素點越靠近中心位置,權重越來越小,以此來減小中心區域的權值,使計算損失值時,不會因為中心結果和原始圖像差距過大,從而誤導訓練過程)

  具體的做法是使用一個帶有權值的mask M,在M上,每一點的權值由γl來計算,其中γ被設定為0.99,l是該點到最近的已知像素點的距離(1-范數,即城市街區距離)。

近似的權重衰減方法在其他人的研究中也被提到了(例如Pathak等人的研究),在修復大面積缺失區域的時候,這種帶衰減的損失值在提高修復質量上將更有效。

 

  通過上述提升的方法,作者的生成修復網絡有着比Iizuka的網絡更快的收斂速度,結果也更精確。此外也不需要圖像的后續處理了。

4. 使用內容感知進行圖像修復 Image Inpainting with Contextual Attention

  卷積神經網絡通過一層層的卷積核,很難從遠處區域提取圖像特征,為了克服這一限制。作者考慮了感知機制(attention mechanism)以及提出了內容感知層(contextual attention layer)。在這一部分,作者首先討論內容感知層的細節,然后說明如何將它融入生成修復網絡中。

4.1 內容感知 Contextual Attention

  內容感知層學習的內容是,從已知圖像的何處借鑒特征信息,以此來生成缺失的斑塊。

(譯者注:這一部分譯者在第一部分Introduction里就有簡單的說明,如果沒有概念的讀者可以倒回去看一看)

  由於這個layer是可微的(differentiable),所以可以在深度模型和全卷積網絡中進行訓練,允許在任意分辨率的圖像上進行測試。

圖3

1) 匹配及選取 Match and attend

  作者想解決的問題是:在背景區域中匹配缺失區域的特征

  作者首先在背景區域提取3x3的斑塊,並作為卷積核。為了匹配前景(即待修復區域)斑塊,使用標准化內積(余弦相似度)來測量,然后用softmax來為每個背景斑塊計算權值,最后選取出一個最好的斑塊,並反卷積出前景區域。對於反卷積過程中的重疊區域(overlapped pixels)取平均值。

  對於這個匹配出的背景斑塊可視化:

圖4

 

2) 感知傳播 Attention propagation

(譯者注:這一部分譯者不是很明白其原理,各位讀者可參照原文)

  為了進一步保持圖像的一致性,作者使用了感知傳播。思想是對前景區域做偏移,可能對應和背景區域做相同的偏移,實現方式是使用單位矩陣作為卷積核,從而做到對圖像的偏移。作者先做了左右傳播,然后再做上下傳播。從而得到新的感知分數(attention score)

  該方法有效的提高了修復的結果,以及在訓練過程中提供了更豐富的梯度。

3) 顯存效率 Memory efficiency

  假設在128x128的圖像中有個64x64的缺失區域作為輸入,那么從背景區域提取出的卷積核個數是12288個(3x3大小)。這可能會超過GPU的顯存限制。

  為了克服這一問題,作者介紹兩種方法:1)在提取背景斑塊時添加步長參數來減少提取的卷積核個數;2)在卷積前降低前景區域(缺失區域)的分辨率,然后在感知傳播后提高感知圖(attention map)的大小。

4.2 合並修復網絡 Unified Inpainting Network

  為了將感知模塊集成到修復模型中,作者提出了兩個平行的編碼器(見圖4).

  下面的那個編碼器通過擴張卷積(dilated convolution)來“想象”缺失區域的內容。

  上面的那個編碼器則專注於提取感興趣的背景區域。

  兩個編碼器的輸出被聚合輸入到一個解碼器中,反卷積生成出最后的圖像。

  在圖4中,作者使用了顏色來指出最感興趣的背景區域的相關位置。比如說,白色區域(彩色圖的中心)意味着該區域的像素依賴於自己、左下角的粉色、右上角的綠色。對於不同的圖像,偏移值也會跟着縮放,以此來更好地標記出感興趣的區域(interested background patch)。

(譯者注:這里用顏色圖(color map)來可視化感知圖(attention map)的概念譯者不是很明白,讀者可以參考原文)

  對於訓練過程,可以用以下算法來表示:

當G還沒有收斂時:

  以下步驟循環5次:

    從訓練集中提取圖像x

    生成隨機的mask m

    使用x和m生成帶有缺失區域的圖像z

    將z和m輸入生成網絡G中,獲取修復后的缺失區域圖像~x

    通過空間衰減重構損失的maskM,對~x做一個權值處理,然后覆蓋原圖像的這個區域,得到圖像^x(這一步譯者不確定)

    使用x、~x、^x計算全局、局部損失值(這一步譯者不確定)

  循環結束

  從訓練集中提取圖像x

  生成隨機的mask m

  計算空間衰減重構損失、全局和局部的WGAN-GP損失,來更新生成網絡G的權值。

結束循環。

 

5. 實驗 Experiments

(譯者注:這里實驗可以直接參照參考資料中的余家輝官方的demo,譯者后續會給出翻譯)

6. 總結 Conclusion

  作者提出了粗細網絡圖像生成修復的框架(coarse-to-fine generative image inpainting framework),並介紹了帶有內容感知的模型。作者展示了內容感知模型在提高圖像修復結果上,有着很大的意義(通過對背景特征的匹配、提取這一過程的學習)。在今后的研究中,作者基於GAN的不斷發展,計划將該方法擴展到更高分辨率的圖像修復應用中。圖像修復框架和內容感知模塊也可以用於帶有條件的圖像生成、圖像編輯、計算攝影任務中(例如圖像渲染、超高分辨率圖像、指導編輯(guided editing),以及其他種種應用。

其他

 D. 網絡架構 Network Architectures

  這里是論文第三部分的附錄,提供了網絡的更多細節。

  以下的表示方法:K(卷積核大小,kernel size)、D(卷積核擴張量,dilation)、S(卷積步長,stride size)、C(通道數,channel number)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM