文章的基本信息
文章來源: ICCV 2019
下載鏈接:Code Download
現狀: 現存基於學習的圖像修復算法生成的內容帶有模糊的紋理和扭曲的結構,這是因為局部像素的不連續性導致的。從語義級別的角度來看,局部像素不連續性主要是因為這些方法忽略了語義相關性和缺失區域的特征連續性。
提出的方法: 根據人類修復圖片的行為,提出一種帶有coherent semantic attention (CSA)
layer
的基於深度生成模型的方法。
提出方法的作用: 不僅能夠保持上下文結構,而且還能通過對缺失區域特征之間的語義相關性進行建模,可以更有效地預測缺失部分。
網絡架構: 由兩部分組成,粗修復網絡和精細修復網絡,兩個網絡都是基於U-Net
結構,其中CSA
層被嵌入在細修復網絡中的編碼階段。
損失函數: 提出一致損失函數consistency loss
和塊判別器patch discriminator
,這兩個來進一步穩定訓練過程和提升細節。
數據集: CelebA
、Places2
、Paris 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
。整個網絡結構圖如下:
網絡參數的定義:
- \(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\)。這種類型的輸入會堆疊已知區域的信息,以促使網絡更快地捕獲有效特征,這對於重建孔區域的內容至關重要。
- 細修復網絡包括
encoder
和decoder
,同時skip connection
也被采用,類似於粗修復網絡。 - 在
encoder
,每一層由3×3的卷積和4×4的空洞卷積dilated convolution
構成。3×3卷積保持相同的空間大小,同時通道數量加倍。這種大小的層可以提高獲取深度語義信息的能力。4×4擴展的空洞卷積將空間大小減小一半,並保持相同的通道數。 空洞卷積可以擴大感受野,從而可以防止過多的信息丟失。CSA
層被嵌入到encoder
的第四層。 decoder
和encoder
對稱的,只是沒有CSA
層,並且所有的卷積是4×4的反卷積deconvolutions
。
Coherent Semantic Attention
- \(M\)和\(M^-\)分別表示缺失區域和非缺失區域。
- 作者認為只考慮\(M\)和\(M^-\)的特征層圖的關系是不夠的,這是因為生成的
patch
之間的關系被忽略了,這將會導致最終結果缺乏像素的延展性和連續性。 - 由此,作者提出了
CSA
層,在考慮\(M\)和\(M^-\)之間關系的同時,也考慮\(M\)中生成的patch
之間的關系。
以缺失區域為中心的矩形為例,解釋CSA
層的原理:
-
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
公式得到:其中\(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^-\)中所有patch
的cross-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\),生成的過程可以總結為:
總結: 生成的過程是一個迭代的過程,每一個\(m_i\)包括\(m_{1到i}\)的信息,當我計算根據\(m_i\)和\(m_{i-1}\)計算\(D_{ad_i}\),相應的\(m_i\)和\(m_{1到i-1}\)也被考慮在其中。並且由於\(D_{ad_i}\)值的范圍是0
到1
,因此當前生成的Patch
和先前生成的patch
之間的相關性隨着距離的增加而減小。
Attention map \(A_i\):
CSA層算法:
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 loss
。perceptual loss
定義為:\(φ_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 discriminato
r和patch discriminator
,不僅在訓練過程中快速且穩定,而且使優化網絡合成了更有意義的高頻細節。如圖:作者使用
VGG-16
在pool3
層之后提取特征圖,然后將該特征圖作為幾個下采樣層的輸入,以捕獲Markovain patches
的特征統計信息。最終,因為此特征圖中每個點的接受域仍可以覆蓋整個輸入圖像,所有作者直在此特征圖上計算adversarial loss
。 -
除了
feature patch discriminator
外,我們使用的70×70
的patch discriminator
通過類似[25]
的方法來檢測像素值來區分\(l_r\)和\(l_{gt}\)圖像。同時,作者使用Relativistic Average LS adversarial loss
做為判別器。這種損失可以幫助細修復網絡從對抗訓練中生成的數據和實際的數據的梯度中受益,這有利於訓練的穩定性。精細網絡的GAN
損失項\(D_R\)和鑒別器的損失項\(D_F\)定義為:其中\(D\)代表鑒別器,\(E{I_{{gt}/I_f}[.]}\)是指
mini patch
所有實/假數據取平均值的操作。
Objective
- 和
[35]
一樣,我們使用\(L_1\)距離做為我們reconstruction loss
,以保證\(I_p\)和\(I_r\)應該近似於真實圖像的約束: - 考慮
consistency, adversarial, and reconstruct losses
,我們的細修復網絡和粗修復網絡的總體目標定義為:其中,\(λ\)表示權重參數。
Experiments
- 測試數據集為:
Places2
,CelebA
和Paris StreetView
。 - 作者使用數據集本身的數據集划分,同時也使用數據增強等操作。
- 模型參數:
- 輸入網絡的圖片大小為:
256×256
(training and testing
) - 優化器:
Adam algorithm
- 學習率:\(2 × 10^{−4}\)和\(β_1=0.5\)
- 總目標函數權重參數:\(λ_1\)=1,\(λ_2\)=0.01,\(λ_3\)=0.002
BatchSize
設置為1.- 模型訓練花費的時間:
CelebA 9days
,Paris StreetView 5 days
,Place2 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
的大小對其進行分類。- 對於居中矩形缺失的情況,作者在
CelebA
和Places2
的驗證集,將本文提出的方法和CA
和SH
進行對比。 - 對於任意形狀的缺失情況,作者在
Paris StreetView
和CelebA
驗證集,將本文所提出的方法和PC
和GC
進行了對比。
- 對於居中矩形缺失的情況,作者在
定性比較(Qualitative Comparison)
- 在居中矩形缺失的情況和任意形狀的情況,每種方法的表示都做得講解,並且講解了效果好與不好的原因,最后的總結是以上這四種方法都沒有考慮缺失區域之間深層特征之間的相關性。
- 另外就是
Attention map
的問題:第一行是左右相鄰像素的注意力圖,第二和第三行是上下相鄰像素的注意力圖。可以注意到兩個相鄰像素的注意力圖基本相同,並且相關區域不限於最相關的上下文區域,注意力圖中的弱相關區域是所生成的patch
的關注區域,與之相距甚遠。 強相關區域是相鄰生成的patch
和最相關的上下文補丁所關注的領域。
定量比較(Quantitative comparisons)
- 我們從
Celeba
驗證數據集中隨機選擇500
張圖像,並為每個圖像生成不規則和居中的缺失部分以進行比較。 - 衡量標准:
L1
L2
PSNR
SSIM
實驗結果表明我們的結果在兩種情況都優於其他方法。
Ablation Study(消融研究[對照實驗])
Effect of CSA layer
為了評估CSA
層的影響,我們將CSA
層替換成3×3
的卷積和contextual attention layer
分別進行比較,結果如圖8(b)
,使用常規的卷積,缺失部分沒辦法恢復成較好的結果,盡管contextual attention layer
,與傳統的卷積相比,它可以改善性能,修復結果仍然缺乏精細的紋理細節,並且像素與背景不一致,如圖8(c)
。以其他方法相比,我們的性能更好,如圖8(d)
。這說明CSA層構造了全局語義結構和局部一致性的事實。
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)
。
Effect of consistency loss
如圖10
所示,可以看出在沒有consistency loss
情況下,缺失區域中心呈現扭曲結構,這可能是由於訓練的不穩定性和對圖像語義的誤解引起的,如圖10(b)
。一致性損失consistency loss
有助於解決這些問題,如圖10(c)
.
Effect of feature patch discriminator
如圖11(b)所示,當我們僅使用patch discriminator
時,結果性能會失真。 然后我們添加了傳統的特征鑒別器[25]
,但是生成的內容仍然顯得模糊(參見圖11(c)。 最后,通過執行feature patch discriminator
,可以獲得精細的細節和合理的結構(見圖11(d)。 而且,feature patch discriminator
比傳統的[25]更快地處理每個圖像0.2秒。
Conclusion
本文提出了一種基於精細深度生成模型的方法,該方法設計了一種新穎的Coherent Semantic Attention layer
,以學習圖像修復任務中缺失區域的特征之間的關系。 引入一致性損失 consistency loss
是為了增強CSA
層學習能力,以增強地面真值特征分布和訓練穩定性。 此外,feature patch discriminator
已加入我們的模型中,以實現更好的預測。 實驗已經驗證了我們提出的方法的有效性。 將來,我們計划將該方法擴展到其他任務,例如樣式轉換和單圖像超分辨率。