Coherent Semantic Attention for Image Inpainting


文章的基本信息

文章來源: ICCV 2019
下載鏈接:Code Download


現狀: 現存基於學習的圖像修復算法生成的內容帶有模糊的紋理和扭曲的結構,這是因為局部像素的不連續性導致的。從語義級別的角度來看,局部像素不連續性主要是因為這些方法忽略了語義相關性和缺失區域的特征連續性。

提出的方法: 根據人類修復圖片的行為,提出一種帶有coherent semantic attention (CSA) layer的基於深度生成模型的方法。

提出方法的作用: 不僅能夠保持上下文結構,而且還能通過對缺失區域特征之間的語義相關性進行建模,可以更有效地預測缺失部分。

網絡架構: 由兩部分組成,粗修復網絡和精細修復網絡,兩個網絡都是基於U-Net結構,其中CSA層被嵌入在細修復網絡中的編碼階段。

損失函數: 提出一致損失函數consistency loss和塊判別器patch discriminator,這兩個來進一步穩定訓練過程和提升細節。

數據集: CelebAPlaces2Paris StreetView

Introduction

圖像修復 是合成合理假設的缺失或損壞部分的任務,可用於許多應用程序中,例如刪除不需要的物體,完成遮擋的區域,恢復損壞或損壞的部分。

圖像修復面臨主要的挑戰維持全局語義結構並為缺失的區域生成逼真的紋理細節。

傳統修復工作總結 :主要是通過紋理合成來實現。Patch-Match algorithm等。存在的缺陷是沒有有效地利用上下文信息contextual information來生成缺失部分的內容,從而導致結果包含噪聲模式。

最近的修復工作總結 :利用上下文信息contextual information來實現修復,這些方法可以分為兩種類型。

  • 第一種類型是利用spatial attention利用周圍圖像特征來恢復缺失圖像區域。這些方法可以確保所生成內容與上下文信息的語義一致性。但是只是在缺失區域為矩形,並且結果顯示像素不連續且具有語義鴻溝。
  • 第二種類型是對原始圖像中的有效像素進行像素丟失情況的預測,這些方法可以正確處理不規則缺失部分,但生成的內容仍然遇到語義錯誤和邊界偽影的問題。
  • 上述方法存在的問題是忽略生成內容的語義相關性和特征連續性,這對於圖像級別的局部像素連續性至關重要。

人修復圖片的過程: 分為構思和修復兩個過程。構思階段,人先觀察圖像的整體結構,構思缺失部分的內容,這樣可以保持圖像的全局一致性。在修復階段,人總是接着之前的線來添加新的線段和顏色。這實際上是確保局部一致性。

CSA(coherent semantic attention layer): 填充缺失區域對應的特征圖。具體步驟:最初,用已知區域中最相似的特征Patch初始化未知區域中的每個未知特征Patch。 此后,通過考慮與相鄰Patch的空間一致性來迭代優化它們。 因此,第一步可以保證全局語義的一致性,而優化步驟可以保持局部特征的一致性。

網絡結構: 將網絡結構分為兩個步驟,第一步驟為粗修復網絡,粗略的生成缺失的部分。第二步為精細修復網絡,在編碼器encoder階段嵌入了CSA層,來實現更好的修復。為了讓網絡訓練的過程更容易穩定,提出了一致損失函數,不僅可以測量VGG特征層與CSA層之間的距離,而且還可以測量VGG特征層與CSA解碼器中相應層之間的距離。於此同時,還增加了一個塊判別器patch discriminator來提升細節信息,訓練更快,更穩定。除了一致損失consistency loss,重構損失reconstruction loss,相對平均LS對抗損失relativistic average LS adversarial loss也被合並加入進來。

本文貢獻:

  • 提出coherent semantic attention layer來構造缺失區域深層特征之間的相關性。無論缺失的區域是否規則。
  • 提出一致損失函數consistency loss來指導CSA層來學習ground truth的VGG特征。同時塊判別器patch discriminator被引入,來實現更好預測結果。
  • 實現了高質量的結果,即使修復任務是兩個階段(粗、細修復網絡),但是我們的網絡在訓練的過程是端到端的過程。

Related Works

Image inpainting

  • 圖像修復分為兩類:
    • 第一類Non-learning inpainting approaches,利用低級特征,基於傳播相鄰信息的方法或者基於patch的方法。
    • 第二類Learning inpainting approaches,學習圖像的語義來完成修復任務,並且通常訓練卷積神經網絡來推斷缺失的內容。Context encoders第一個使用卷積神經網絡來實現圖像修復。(發展流程參考原文)
  • 以上論文存在的問題:這些方法未明確考慮有效特征之間的相關性,因此導致完整圖像的顏色不一致。

Attention based image inpainting

近來,基於上下文contextual和缺失區域hole regions之間的關系的空間注意力spatial attention通常用於圖像修復任務。

論文名 方法 具體操作
Contextual Attention [40] contextual attention layer searches for a collection of background patches with the highest similarity to the coarse prediction
Yan et al. [35] introduce a shift-net powered by a shift operation and a guidance loss The shift operation speculates the relationship between the contextual regions in the encoder layer and the associated hole region in the decoder layer.
Song et al. [30] introduce a patch-swap layer patch-swap layer replaces each patch inside the missing regions of a feature map with the most similar patch on the contextual regions, and the feature map is extracted by VGG network
[40]存在的缺陷 Although [40] has the spatial propagation layer to encourage spatial coherency by the fusion of attention scores, it fails to model the correlations between patches inside the hole regions, which is also the drawbacks of the other two methods.

Approach

The overall structure

模型包括兩個部分:粗修復網絡精細修復網絡。這樣的結構能夠穩定訓練和增大感受野receptive fields。整個網絡結構圖如下:

8Wz5Y8.jpg

網絡參數的定義:

  • \(I_{gt}\)表示ground truth images\(I_{in}\)表示the input to the rough network\(I_{p}\)表示粗修復網絡輸出結構。\(I_{r}\)精細網絡的輸出結構。

網絡的工作流程:

  • 首先在粗修復階段,輸入\(I_{in}\)到粗修復網絡得到預測結構\(I_{p}\)
  • 然后帶有CSA層的細修復網絡將\(I_{p}\)\(I_{in}\)做為輸入對輸入到網絡,得到最后的結果\(I_r\)
  • 最后patch和feature判別器共同工作得到高分辨率的\(I_r\)

Rough inpainting

  • 粗修復網絡的輸入\(I_{in}\)是一個3×256×256的中間缺失或者不規則缺失的圖片,輸出結果為\(I_{p}\),粗修復網絡和這篇文章Image-to-image translation with conditional adversarial networks. CVPR, 2017.的網絡結構一樣,composed of 4×4 convolutions with skip connections to concatenate the features from each layer of encoder and the corresponding layer of decoder.
  • 粗修復網絡采用L1 reconstruction loss

Refinement inpainting

refinement network

  • 我們以\(I_{in}\)為條件的\(I_{p}\)做為細修復網絡的輸入,得到預測的結果\(I_r\)。這種類型的輸入會堆疊已知區域的信息,以促使網絡更快地捕獲有效特征,這對於重建孔區域的內容至關重要。
  • 細修復網絡包括encoderdecoder,同時skip connection也被采用,類似於粗修復網絡。
  • encoder,每一層由3×3的卷積和4×4的空洞卷積dilated convolution構成。3×3卷積保持相同的空間大小,同時通道數量加倍。這種大小的層可以提高獲取深度語義信息的能力。4×4擴展的空洞卷積將空間大小減小一半,並保持相同的通道數。 空洞卷積可以擴大感受野,從而可以防止過多的信息丟失。CSA層被嵌入到encoder的第四層。
  • decoderencoder對稱的,只是沒有CSA層,並且所有的卷積是4×4的反卷積deconvolutions

Coherent Semantic Attention

  • \(M\)\(M^-\)分別表示缺失區域和非缺失區域。
  • 作者認為只考慮\(M\)\(M^-\)的特征層圖的關系是不夠的,這是因為生成的patch之間的關系被忽略了,這將會導致最終結果缺乏像素的延展性和連續性。
  • 由此,作者提出了CSA層,在考慮\(M\)\(M^-\)之間關系的同時,也考慮\(M\)中生成的patch之間的關系。

以缺失區域為中心的矩形為例,解釋CSA層的原理:

8fQBDI.jpg

  • CSA層包括兩部分,搜索和生成(Searching and Generating)。

  • 在搜索階段,對於每個1×1的生成patch\(m_i\),其中\(m_i\)屬於\(M\)\(i\)屬於[1,n]CSA層在\(M^-\)尋找語境最近最匹配的\(m_{i}^-\)來初始化\(m_i\)

  • 在生成階段,設置\(m_{i}^-\)為恢復\(m_i\)的主要部分,之前生成的patch\(m_1\)-\(m_{i-1}\))為次要部分。

  • 這兩部分的權重由cross-correlation metric公式得到:8fK1z9.jpg其中\(D_{max_i}\)表示\(m_i\)和最相似的\(m_{i}^-\)之間的相似程度。\(D_{ad_i}\)表示\(m_{i}^-\)兩個相鄰生成patch之間的相似程度。

  • \(D_{max_i}\)\(D_{ad_i}\)分別歸一化(兩個加權來為1)分別做為主要部分和次要部分(所有先前生成的patch)的權重。

CSA的具體工作過程:

Searching: 我首先從\(M^-\)種提取出Patch,然后reshape他們為卷積核大小,然后與\(M\)進行卷積。然后得到一個向量,表示\(M\)中的每一個patch\(M^-\)中所有patchcross-correlation。以這為基礎,每個生成patch\(m_i\),用最相似的\(m_{i}^-\)初始化\(m_i\)並且分配最大的cross-correlation\(D_{max_i}\)給它。

Generating: \(M\)左上方的patch被用作生成過程的初始Patch(在圖3用\(m_1\)表示)。因為\(m_1\)沒有前驅,所以\(D_{ad_1}\)記為0,並且直接用\(m_{1}^-\)代替

\(m_1\),即\(m_1\)=\(m_{1}^-\)。同時,下一個patch\(m_2\)有前驅 \(m_1\)\(m_1\)做為\(m_2\)的附件參考。因此將\(m_1\)做為卷積核,去測量\(m_1\)\(m_2\)之間的cross-correlation metric\(D_{ad_2}\),然后歸一化\(D_{max_2}\)\(D_{ad_2}\),分別做為\(m_1\)\(m_{2}^-\)的權重,得到新生成的\(m_2\),即\(m_2\)=\({D_{ad_2}/(D_{ad_2}+D_{max_2})×m_1+D_{max_2}/(D_{ad_2}+D_{max_2})×m_{2}^-}\)。總結上面的過程,從\(m_1\)\(m_n\),生成的過程可以總結為:846G8S.jpg

總結: 生成的過程是一個迭代的過程,每一個\(m_i\)包括\(m_{1到i}\)的信息,當我計算根據\(m_i\)\(m_{i-1}\)計算\(D_{ad_i}\),相應的\(m_i\)\(m_{1到i-1}\)也被考慮在其中。並且由於\(D_{ad_i}\)值的范圍是01,因此當前生成的Patch和先前生成的patch之間的相關性隨着距離的增加而減小。

Attention map \(A_i\):85ub1e.jpg

CSA層算法:

85KAns.jpg

Consistency loss

  • 一些方法[27][23]使用perceptual loss,來提高網絡的恢復能力。
  • perceptual loss不能直接優化指定的卷積層,這可能會誤導CSA層的訓練過程。perceptual loss不能確保CSA層之后的特征圖與解碼器中相應層之間的一致性。
  • 我們重新設計了perceptual loss並且提出Consistency loss來結果這個問題。
  • 我們使用ImageNet-pretrained VGG-16來提取原圖的高維特征空間。對於\(M\)任意中任意位置,我們將特征空間分別設置為解碼器中CSA層和CSA對應層的目標,以計算L2距離。為了匹配特征圖的形狀,我們采用VGG-16的4-3層作為perceptual lossperceptual loss定義為:85laCV.jpg\(φ_n\)VGG-16被選擇層的activation map\(CSA(.)\)表示為CSA層之后的特征,\(CSA_d(.)\)是解碼器中的相應特征。
  • Guidance loss和我們的perceptual loss類似。

Feature Patch Discriminator

  • 之前的圖像修復網絡總是使用一個local discriminator來提高結果。但是local discriminator是不適合缺失部分為任意形狀的情況,借鑒Gated Conv [39], Markovian Gans [21] and SRFeat [25],我們提出了feature patch discriminator檢測特征圖來區分修復后的圖像和原始圖像。

  • feature patch discriminator,結合了conventional feature discriminator和patch discriminator,不僅在訓練過程中快速且穩定,而且使優化網絡合成了更有意義的高頻細節。如圖:85t1JA.jpg作者使用VGG-16pool3層之后提取特征圖,然后將該特征圖作為幾個下采樣層的輸入,以捕獲Markovain patches的特征統計信息。最終,因為此特征圖中每個點的接受域仍可以覆蓋整個輸入圖像,所有作者直在此特征圖上計算adversarial loss

  • 除了feature patch discriminator外,我們使用的70×70patch discriminator通過類似[25]的方法來檢測像素值來區分\(l_r\)\(l_{gt}\)圖像。同時,作者使用Relativistic Average LS adversarial loss做為判別器。這種損失可以幫助細修復網絡從對抗訓練中生成的數據和實際的數據的梯度中受益,這有利於訓練的穩定性。精細網絡的GAN損失項\(D_R\)和鑒別器的損失項\(D_F\)定義為:85dplR.jpg其中\(D\)代表鑒別器,\(E{I_{{gt}/I_f}[.]}\)是指mini patch所有實/假數據取平均值的操作。

Objective

  • [35]一樣,我們使用\(L_1\)距離做為我們reconstruction loss,以保證\(I_p\)\(I_r\)應該近似於真實圖像的約束:85DVbt.jpg
  • 考慮consistency, adversarial, and reconstruct losses,我們的細修復網絡和粗修復網絡的總體目標定義為:85DQ2Q.jpg 其中,\(λ\)表示權重參數。

Experiments

  • 測試數據集為:Places2 , CelebAParis StreetView
  • 作者使用數據集本身的數據集划分,同時也使用數據增強等操作。
  • 模型參數:
    • 輸入網絡的圖片大小為:256×256training and testing
    • 優化器:Adam algorithm
    • 學習率:\(2 × 10^{−4}\)\(β_1=0.5\)
    • 總目標函數權重參數:\(λ_1\)=1,\(λ_2\)=0.01,\(λ_3\)=0.002
    • BatchSize設置為1.
    • 模型訓練花費的時間:CelebA 9daysParis StreetView 5 daysPlace2 2day
  • 與其它論文相比:
    • CA: Contextual Attention, proposed by Yu et al.
    • SH: Shift-net, proposed by Yan et al.
    • PC: Partial Conv, proposed by Liu et al.
    • GC: Gated Conv, proposed by Yu et al.
  • 為了公平的進行評估,我對居中矩形和任意形狀的缺失情況,都進行了評估。我們從PC中得到任意形狀缺失的情況的mask,並且跟去mask的大小對其進行分類。
    • 對於居中矩形缺失的情況,作者在CelebAPlaces2的驗證集,將本文提出的方法和CASH進行對比。
    • 對於任意形狀的缺失情況,作者在Paris StreetViewCelebA驗證集,將本文所提出的方法和PCGC進行了對比。

定性比較(Qualitative Comparison)

  • 在居中矩形缺失的情況和任意形狀的情況,每種方法的表示都做得講解,並且講解了效果好與不好的原因,最后的總結是以上這四種方法都沒有考慮缺失區域之間深層特征之間的相關性。
  • 另外就是Attention map的問題:第一行是左右相鄰像素的注意力圖,第二和第三行是上下相鄰像素的注意力圖。可以注意到兩個相鄰像素的注意力圖基本相同,並且相關區域不限於最相關的上下文區域,注意力圖中的弱相關區域是所生成的patch的關注區域,與之相距甚遠。 強相關區域是相鄰生成的patch和最相關的上下文補丁所關注的領域。8I1X4I.jpg8I3Sv8.jpg

定量比較(Quantitative comparisons)

  • 我們從Celeba驗證數據集中隨機選擇500張圖像,並為每個圖像生成不規則和居中的缺失部分以進行比較。
  • 衡量標准:L1 L2 PSNR SSIM
  • 8I3Wqg.jpg8I3HzV.jpg實驗結果表明我們的結果在兩種情況都優於其他方法。

Ablation Study(消融研究[對照實驗])

Effect of CSA layer

為了評估CSA 層的影響,我們將CSA層替換成3×3的卷積和contextual attention layer分別進行比較,結果如圖8(b),使用常規的卷積,缺失部分沒辦法恢復成較好的結果,盡管contextual attention layer,與傳統的卷積相比,它可以改善性能,修復結果仍然缺乏精細的紋理細節,並且像素與背景不一致,如圖8(c)。以其他方法相比,我們的性能更好,如圖8(d)。這說明CSA層構造了全局語義結構和局部一致性的事實。8ItS0O.jpg

Effect of CSA layer at different positions

CSA層的位置太深或太淺都可能導致信息細節丟失或增加計算時間開銷。圖(9)顯示了CSA層在細修復網絡第二,第三,第四層下采樣的位置,當CSA層第二層,大小為64×64的時候,模型表現出更好的結果,如圖9(b)。當CSA層第四層,大小為16×16的時候,模型表現出非常有效率,如圖9(c)。當CSA層第三層,大小為32×32的時候,模型表現出最高有效率,如圖9(d)8INtxI.jpg

Effect of consistency loss

如圖10所示,可以看出在沒有consistency loss情況下,缺失區域中心呈現扭曲結構,這可能是由於訓練的不穩定性和對圖像語義的誤解引起的,如圖10(b)。一致性損失consistency loss有助於解決這些問題,如圖10(c).8Irf56.jpg

Effect of feature patch discriminator

如圖11(b)所示,當我們僅使用patch discriminator時,結果性能會失真。 然后我們添加了傳統的特征鑒別器[25],但是生成的內容仍然顯得模糊(參見圖11(c)。 最后,通過執行feature patch discriminator,可以獲得精細的細節和合理的結構(見圖11(d)。 而且,feature patch discriminator比傳統的[25]更快地處理每個圖像0.2秒。8Ir7KH.jpg


Conclusion

本文提出了一種基於精細深度生成模型的方法,該方法設計了一種新穎的Coherent Semantic Attention layer,以學習圖像修復任務中缺失區域的特征之間的關系。 引入一致性損失 consistency loss是為了增強CSA層學習能力,以增強地面真值特征分布和訓練穩定性。 此外,feature patch discriminator已加入我們的模型中,以實現更好的預測。 實驗已經驗證了我們提出的方法的有效性。 將來,我們計划將該方法擴展到其他任務,例如樣式轉換和單圖像超分辨率。


免責聲明!

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



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