高 杰,霍智勇
(1.南京郵電大學 通信與信息工程學院,江蘇 南京210003;2.南京郵電大學 教育科學與技術學院,江蘇 南京210003)
圖像修復技術[1](Inpainting)是圖像處理領域研究的一項重要內容,其目的是根據(jù)圖像或視頻中的已知部分來重建丟失區(qū)域[2]。現(xiàn)有的圖像修復方法包括基于序列的方法、基于卷積神經網絡(Convolutional Neural Network,CNN)的方法和基于生成對抗網絡(Generative Adversarial Network,GAN)的方法?;谛蛄械姆椒ㄓ志唧w分為:基于擴散的方法[3-5]和基于補丁的方法[6-9]。這些方法在針對小區(qū)域遮擋和裂縫修復任務時非常有效,但是當圖像包含很多紋理或者圖像掩碼區(qū)域比例超過10%時,修復效果較差[10]。
近年來,基于卷積神經網絡和生成對抗網絡[11]的圖像修復技術逐漸成為主流研究方向。文獻[12]在傳統(tǒng)的卷積神經網絡的基礎上設計并首次應用了生成對抗網絡,提出了編解碼器網絡,將網絡的輸出送至判別器檢測真?zhèn)?,大大增加了結果的合理性,但該網絡僅能修復固定且規(guī)則形狀的掩碼的圖像,在修復具有自由形狀掩碼的圖像時,會產生不自然的結果。文獻[13]中提出使用部分卷積(Partial Convolution)對不規(guī)則孔洞進行圖像修復,將包含無效輸入的卷積屏蔽并重新歸一化,僅對有效像素卷積,結合其提出的掩碼更新機制取得了較好的修復結果。但隨著層的加深,掩碼與圖像之間的關系很難學習,導致修復后的圖像中有掩碼邊界殘留。文獻[14]將修復任務分為并行處理的粗網絡和細網絡,提升了修復的效率,但該算法只適用于較小掩碼區(qū)域的修復。文獻[15]提出了一種結合邊緣信息先驗的兩階段生成對抗網絡來進行圖像修復,準確地重建了圖片中的高頻信息。它包括邊緣修復網絡和紋理修復網絡,邊緣修復網絡在圖像的掩碼區(qū)域生成預測邊緣,然后紋理修復網絡使用預測邊緣作為先驗來填充掩碼區(qū)域。該方法得到了具有豐富紋理細節(jié)的修復結果,但由于網絡中空洞卷積的各個卷積層的結果之間沒有相關性,同樣很難獲得掩碼與圖像之間的關系,導致有時不能保證填充區(qū)域和已知區(qū)域的一致性。
針對上述方法存在的問題,筆者提出了一種門控卷積生成對抗網絡的圖像修復算法。針對任意形狀掩碼區(qū)域的修復任務,算法在生成對抗網絡中利用門控卷積[16],使得網絡可以針對每個通道和每個空間位置,學習一種動態(tài)特征選擇機制,可以根據(jù)一些通道的語義分割結果來選擇特征圖[17]。在網絡深層,門控卷積還可針對不同的通道對遮蔽區(qū)域進行突出表示[18]。另外,算法針對網絡生成器的輸出,用譜歸一化馬爾科夫判別器來穩(wěn)定訓練過程,以獲得更好的修復結果。
文獻[15]采用邊緣修復加紋理修復的兩階段生成對抗修復網絡,將圖像修復任務分步驟進行,其結構如圖1所示。
圖1 兩階段生成對抗修復網絡結構
首先用邊緣檢測算法檢測出破損圖像中已知區(qū)域的結構;然后將掩碼區(qū)域中的邊緣與已知區(qū)域的顏色和紋理信息結合起來進行結構修復;再將完整結構與待修復圖像一起送入紋理修復網絡中進行紋理修復,最終得到完整圖像。這種兩階段網絡充分利用了先驗的圖像結構信息,從而提高了修復結果在結構上的合理性。
該網絡中兩段網絡的生成器結構是相同的,都由兩種卷積組成:① 普通卷積,用于上采樣和下采樣;② 與殘差塊結合的空洞卷積,用于擴大卷積的感受野??斩淳矸e雖然在參數(shù)不變的情況下保證了更大的感受野,但在面對掩碼區(qū)域較小的情況時容易丟失細節(jié)信息,導致算法無法達到生成對抗網絡的最佳性能[19]。為了解決這一問題,用門控卷積代替空洞卷積,通過自動地從數(shù)據(jù)中學習掩碼,獲得掩碼通道與圖像通道的關系,從而實現(xiàn)靈活調整卷積的感受域,提升修復結果的合理性。
圖像修復網絡將修復任務分解成掩碼區(qū)域高頻信息(邊緣)和低頻信息(紋理)的補全,分3個步驟完成修復:① 預處理(邊緣檢測),即用整體嵌套邊緣檢測算法[20](Holistically-Nested Edge Detection,HED)對破損圖像進行邊緣檢測,得到圖像邊緣的破損信息;② 邊緣修復,即將檢測到的破損邊緣圖像、掩碼以及破損圖像一起輸入到邊緣修復網絡,網絡包含生成器G1和判別器D1,在判別器檢測生成的邊緣為真時,輸出完整邊緣;③ 紋理修復,即將完整邊緣與破損圖像送到紋理修復網絡,網絡包含生成器G2和判別器D2,在判別器檢測生成器填充的紋理為真時,輸出修復后的完整圖像。
算法的網絡如圖2所示,由結構相同的邊緣修復網絡和紋理修復網絡兩部分組成,每個部分都是生成對抗網絡,均由含14層卷積層的生成器和含6層卷積層的判別器組成。
圖2 門控卷積生成對抗網絡結構圖
網絡在生成器的下采樣層和上采樣層之間構建內嵌門控卷積的殘差塊,提高對抗梯度彌散和網絡退化的能力;在馬爾科夫判別器上應用了譜歸一化,改善迭代過程中權重變化緩慢的問題;采用鉸鏈損失函數(shù)(HingeLoss)[21]作為生成對抗網絡訓練的約束。
生成器的功能為根據(jù)真實樣本生成一些類似于真實樣本的假樣本,并不斷提高生成樣本的真實性,直至判別網絡無法判斷輸入的是真實樣本還是生成的假樣本。邊緣修復網絡的生成器G1和紋理修復網絡的生成器G2結構相同,門控卷積是G1和G2的核心組成部分。生成器的具體結構設置為:第1層是歸一化層,以防止反向傳播過程中梯度爆炸或消失,其卷積層包含64個7×7的卷積核;第2層和第3層為下采樣層,分別使用128個和256個大小均為4×4的卷積核,不斷降低圖像分辨率以增加輸出接收場;第4層至第11層為連續(xù)的8個殘差塊,均使用卷積核為3×3的門控卷積并且不改變圖像尺寸,在減少梯度消失的同時利用門控卷積進行相似于背景特征的掩碼特征填充;第12層和第13層均為4×4的上采樣層,以逐步將圖像恢復至原始分辨率;第14層為卷積核大小為7×7的激活函數(shù)層,以避免非線性因素的影響。各卷積層之間采用實例歸一化以使各生成樣本之間相互獨立[22]。
生成器G1的輸入通道數(shù)為3,包括破損灰度圖像的1個通道、掩碼圖像的1個通道和破損邊緣圖像的1個通道。經過生成器G1得到完整邊緣Cout。生成過程用公式可表示為
Cout=G1(Iin,Cin,M) ,
(1)
其中,Iin為破損圖像,Cin為HED算法檢測出的邊緣圖像,M表示掩碼圖像。
生成器G2的輸入通道數(shù)為4,包括破損RGB圖像的3個通道和完整邊緣圖像的1個通道,經過生成器G2最終輸出通道數(shù)為3的完整圖像Iout。該過程用公式可表示為
Iout=G2(Iin,Cout) ,
(2)
其中,Iin為破損圖像,Cout為完整邊緣。
判別器用于確定輸入判別器的是真實樣本還是生成器生成的假樣本。判別器D1和D2均選擇譜歸一化馬爾科夫判別器來分別判斷G1和G2修復結果的真假。訓練過程分兩步。第1步,固定生成器訓練判別器,若輸入為真實樣本數(shù)據(jù),則可信度置1;若輸入為生成的數(shù)據(jù),則可信度置0。在生成器參數(shù)不變的前提下,讓生成器損失函數(shù)值取最大,使判別器具有辨別真實樣本和生成樣本的能力。第2步,固定判別器訓練生成器,在判別器的參數(shù)不變的前提下讓生成器損失函數(shù)值取最小,使生成器學會生成出判別器無法區(qū)分真假的圖像。通過不斷地重復上述極大極小值的博弈過程,模型最終達到平衡狀態(tài),從而穩(wěn)定了訓練過程。同時,使用譜歸一化以改善迭代過程中權重變化緩慢的問題。
譜歸一化馬爾科夫判別器的結構為:6個卷積核大小為5、步長為2的卷積層,卷積核數(shù)目分別為64、128、256、256、256、256。通過每一層的堆疊來獲得馬爾科夫塊特征的統(tǒng)計信息,以捕捉輸入圖像在不同位置和不同語義通道中的不同特征,并直接對特征圖中的每一個特征元素應用生成對抗網絡損失,應用次數(shù)等于圖像的高×寬×通道數(shù)。
生成器網絡的中間層用于生成破損區(qū)域特征,所以需要用連續(xù)的殘差塊來保持傳播過程中的梯度,以防止梯度消失或者突變。而一般的殘差塊中通常采用空洞卷積,雖然獲得了較大感受野,但犧牲了較多已知區(qū)域與未知區(qū)域相關聯(lián)的細節(jié)信息,相較于特征感受野的變化,這些細節(jié)信息的多少對修復結果的影響更加明顯。為了保證在傳播過程中能夠獲得這些信息,在生成器網絡的殘差塊中引入了門控卷積。門控卷積oy,x由門控選擇單元Gy,x和特征提取單元Fy,x兩部分組成,其定義如下:
Gy,x=∑∑Wg·I,
(3)
Fy,x=∑∑Wf·I,
(4)
Oy,x=φ(Fy,x)⊙σ(Gy,x) ,
(5)
其中,I表示輸入,在網絡中即為下采樣后的特征;Wg和Wf分別表示用于計算門控值和特征值的卷積濾波器;φ(·)是任意的激活函數(shù),一般采用ReLU或者LeakyReLU;σ(·)表示對輸出在[0,1]范圍的門控計算值使用sigmoid激活函數(shù);⊙表示像素級別的乘積;(y,x)代表像素的坐標。
對于圖像修復任務來說,殘差塊的輸入特征由已知區(qū)域的有效像素特征和掩碼區(qū)域中的無效像素特征組成。由門控卷積中的門控選擇單元根據(jù)輸入特征的關聯(lián)性選擇不同的門控值,再將門控值與特征提取單元所提取的特征值相乘得到門控卷積輸出,作為填充特征的依據(jù)。由于門控卷積會改變輸入的特征,在每次卷積后,門控選擇單元和特征提取單元都會根據(jù)輸入特征更新一次濾波器參數(shù),為下一層已知區(qū)域特征以及相對應的掩碼區(qū)域特征的更新做準備?;谝陨喜僮鳎趯ι善骶W絡進行迭代訓練的過程中,網絡學習到了已知區(qū)域與掩碼區(qū)域的聯(lián)系,增強了填充結果的合理性,提高了修復性能。
2.4.1 邊緣修復網絡損失函數(shù)
為了保證訓練的穩(wěn)定,邊緣修復網絡中生成對抗網絡的損失函數(shù)使用鉸鏈損失來判斷輸入的真假,包含了生成器損失LG和譜歸一化馬爾科夫判別器(SN-PatchGAN)損失LDsn:
LG=-Ez~Pz(z)[Dsn(G(z))] ,
(6)
LDsn=Ex~Pdata(x)[ReLU(1-Dsn(x))]+Ez~Pz(z)[ReLU(1+Dsn(G(z)))] ,
(7)
其中,G(z)是生成器G1修復不完整圖像z的輸出結果,Dsn代表譜歸一化馬爾科夫判別器。
因為圖像中相似的邊緣補丁信息已經在Dsn中進行了編碼,所以無須使用感知損失,僅用懲罰損失程度大的L1損失函數(shù)即可。故邊緣修復網絡的最終損失函數(shù)僅由像素級L1重建損失Lrec和SN-PatchGAN損失LDsn兩部分組成,默認損失平衡的超參數(shù)比為1∶1,具體表達式為
L=Lrec+LDsn,
(8)
Lrec(x)=‖M⊙(x-F((1-M)⊙x))‖1,
(9)
其中,F(xiàn)(·)表示編碼器的采樣過程。
2.4.2 紋理修復網絡損失函數(shù)
紋理修復階段填充了大量紋理信息,致使各卷積層的激活圖出現(xiàn)較大差異。為了捕捉這些激活圖協(xié)方差之間的差異,引入風格損失。給定大小為Ci×Hi×Wi的特征圖,風格損失函數(shù)的表達式為
(10)
L=Lstyle+LDsn,
(11)
其中,LDsn的表達式與式(7)相同。
為了驗證算法網絡的魯棒性和泛化能力,實驗數(shù)據(jù)集采用包含400種不同場景的Places數(shù)據(jù)集;掩碼數(shù)據(jù)集采用文獻[13]中貢獻的數(shù)據(jù)集,它包含了12 000張掩碼區(qū)域比例從1%到90%的掩碼圖像。為了驗證和優(yōu)化門控卷積針對不同掩碼的特征提取和門控選擇能力,每張原始圖像都是經過任意地、可重復地疊加隨機掩碼區(qū)域后輸入網絡訓練。
實驗計算平臺為主頻Intel(R) Core CPU i7-7700 @3.60 GHz×4處理器和NVIDIA 1080Ti顯卡,平臺環(huán)境為Centos7系統(tǒng)和Pytorch 1.2.0深度學習框架。根據(jù)網絡模型參數(shù)以及環(huán)境配置,實驗在二十萬張帶掩碼的、分辨率為256×256的Places2數(shù)據(jù)集上迭代30個周期,每批次訓練樣本數(shù)設為8,生成器網絡的學習率設為10-4,對G1和G2進行端到端訓練。針對譜歸一化馬爾科夫判別器采用Adam優(yōu)化,一階、二階矩估計的指數(shù)衰減率分別設置為0和0.9,并設置判別器的學習率為10-5對網絡微調,直至收斂為止。
3.2.1 評價指標
為了評估實驗的修復結果,選取峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結構相似性(Structural SIMilarity,SSIM)作為評價指標。
峰值信噪比用Φ表示,其定義為
(12)
結構相似性用Ω(x,y)表示,基于圖像樣本x和y之間的亮度、對比度和結構三個衡量標準來定義:
Ω(x,y)=[l(x,y)c(x,y)s(x,y)] ,
(13)
其中,l(·)、c(·)、s(·)分別表示對圖像亮度、對比度和結構的估計度量,其定義分別為
3.2.2 算法結果對比分析
為了驗證算法的有效性,實驗使用Places數(shù)據(jù)集的測試集,在不同的掩碼區(qū)域比例條件下,將算法與CE[12]、PConv[13]、PEPSI[14]和EdgeConnect[15]算法進行主觀結果和客觀評價指標的比較。
掩碼區(qū)域比例為10%~20%的測試結果對比圖如圖3所示??梢钥闯?,文中算法能修復出紋理清晰的結果,而其他算法填充的紋理較模糊。
圖3 掩碼區(qū)域比例為10%~20%的測試結果對比圖
掩碼區(qū)域比例為20%~30%的測試結果對比圖如圖4所示??梢钥闯觯闹兴惴苊翡J地捕捉到缺損的旗桿并進行修復,而其他算法并不能捕捉到這一信息。
圖4 掩碼區(qū)域比例為20%~30%的測試結果對比圖
掩碼區(qū)域比例為30%~40%的測試結果對比圖如圖5所示??梢钥闯觯珻E和PConv方法在修復過程中破壞了窗戶的結構并產生了多余的孔洞,PEPSI和EdgeConnect方法在缺損的窗戶區(qū)域沒有填充正確的紋理,只有算法結果中的窗戶區(qū)域有合理的亮光。
由以上主觀對比結果可以看出,算法紋理和結構上的修復結果更貼近真實圖像,并且在掩碼區(qū)域生成了更豐富的紋理細節(jié),門控卷積的使用對修復效果的提升比較明顯。
圖5 掩碼區(qū)域比例為30%~40%的測試結果對比圖
除主觀對比之外,還對客觀評價指標進行了比較分析。表1為Places數(shù)據(jù)集上不同圖像修復方法、不同掩碼區(qū)域比例條件下的峰值信噪比和結構相似性結果,圖6為這兩項指標的變化曲線。
表1 在Places數(shù)據(jù)集上不同圖像修復方法、不同掩碼區(qū)域比例的PSNR/SSIM
(a) 峰值信噪比變化曲線
(b) 結構相似性變化曲線
由圖6(a)可見,當掩碼區(qū)域比例為1%~50%時,算法的峰值信噪比與其他算法相比提升較大,比EdgeConnect網絡的結果平均提升了約4.5%,這是由于網絡使用門控卷積獲得了背景與掩碼之間的關系,增強了已知區(qū)域與填充區(qū)域的一致性和合理性;同時證明了兩階段網絡模型具有良好的修復性能。當掩碼區(qū)域比例為50%~90%時,由于已知信息不足,所有算法的峰值信噪比均出現(xiàn)明顯下降,而所提出的算法仍高于其他算法,這說明譜歸一化馬爾科夫判別器能有效提升網絡的魯棒性。
由圖6(b)可見,當掩碼區(qū)域比例為1%~10%時,所有方法的結構相似性均較高,都能完成修復任務。但隨著掩碼區(qū)域逐漸增大,CE方法修復效果的結構合理性較差,結構相似性曲線下降速度更快,這是因為該方法的編解碼器網絡只適用于掩碼區(qū)域為正方形且位于圖像中央的修復任務。當掩碼區(qū)域比例為1%~60%時,算法的結構相似性相較于其他4種算法均有明顯提升;在比例為60%~90%時,算法的結構相似性相較于EdgeConnect方法略有提高。這是由于帶有重建損失的鉸鏈損失函數(shù)約束邊緣修復網絡,使其重建出完整度較高的結構信息,該先驗信息輸入至紋理修復網絡后獲得結構相似度更高的結果。
3.2.3 算法速度對比分析
在基于生成對抗網絡的圖像修復工作中,算法的修復速度主要取決于網絡收斂速度,而影響網絡收斂速度的主要因素是判別器。為了驗證譜歸一化馬爾科夫判別器的引入對算法速度的提升效果,設計了算法速度和參數(shù)量對比實驗。實驗使用500張來自Places測試集的256×256圖像,疊加500張掩碼圖像后分別送入CE、Pconv、PEPSI、EdgeConnect以及文中網絡進行測試對比,對比結果如表2所示。
表2 在1080Ti上不同算法修復速度及參數(shù)量對比
由表2可知,相較于EdgeConnect方法,文中方法在沒有明顯增加參數(shù)量的前提下提升了修復速度。這說明譜歸一化馬爾科夫判別器的引入能優(yōu)化訓練過程中的網絡參數(shù),過濾掉冗余信息,從而改善迭代過程中權重變化緩慢的問題,加快網絡收斂速度。
綜上,CE、Pconv和PEPSI這3種非兩階段網絡方法的指標均低于使用兩階段修復網絡的EdgeConnect方法和文中方法,說明兩階段網絡在修復任意掩碼比例的圖像時性能更強。而在使用了兩階段網絡的方法中,文中方法的峰值信噪比和結構相似性分別比EdgeConnect方法提升了3.8%和3.0%,尤其在修復掩碼區(qū)域為1%~50%的圖像時優(yōu)勢更明顯,這說明使用門控卷積可以顯著提升掩碼區(qū)域占圖像面積一半以內時的修復效果。而經過算法速度對比,說明譜歸一化馬爾科夫判別器的引入穩(wěn)定了網絡訓練過程,并有效提升了算法修復速度和精度。
筆者提出了一種門控卷積生成對抗網絡的圖像修復算法,通過動態(tài)學習已知區(qū)域與掩碼區(qū)域的關系,獲得了掩碼與圖像的深層聯(lián)系,從而有效改善了之前方法易產生不自然孔洞、填充區(qū)域與已知區(qū)域不一致導致填充錯誤的問題,提升了圖像的修復質量,特別是在修復掩碼區(qū)域比例小于50%時提升明顯。此外,采用的譜歸一化馬爾科夫判別器以及鉸鏈損失函數(shù),能增強重建的細節(jié),并且穩(wěn)定了網絡訓練過程,提升了算法的修復速度和精度。下一步的研究將偏重紋理修復方面,嘗試進行生成對抗網絡內容生成方面的實驗,以進一步提升網絡在修復含有50%以上缺損的圖像時的修復效果。