楊 柳,王 敏,林 竹
(河海大學 計算機與信息學院,南京 211100)
圖像修復是一種對破損或者存在缺失的圖像區域進行補全的技術,它在缺失區域插入所預測的內容,為目標移除提供了技術支持.雖然研究者已經提出了許多圖像修復的方法,例如基于patch的圖像合成[1],但是圖像修復仍然是一個具有挑戰性的研究方向,它不僅要修復圖像紋理,還需要理解整個場景和被修復對象的語義.在本文中,我們考慮使用基于DenseNet[2]結構的圖像缺失生成網絡結構來緩解紋理修復中存在的問題,同時針對雙判別器提出使用JPU[3]加速來解決圖像紋理和場景連續性的問題.
Pathak等人提出Context-Encoder[4]基于生成對抗網絡訓練圖像修復的概念,Iizuka等人提出的文獻[5]的方法是基于全局和局部一致的圖像修復方法,該方法使用GAN對抗性損失訓練卷積神經網絡[6].該方法通過雙判別器結構對缺失生成器對Context-Encoder方法改進,進行對抗訓練,使得生成的結果更加真實.該方法盡管可以處理任意大小的任意缺失圖像,但是明顯較大的缺失無法修復.盡管視覺上修復紋理較連續,但是存在某些高度結構化的圖片修復后存在模糊和不真實的情況,有較明顯的修復痕跡.與此同時,該方法由于膨脹卷積層[7]的使用,使得訓練、修復時間很長.我們提出的方法解決了這兩點,并將進一步提高結果的視覺質量和生成速度.
我們使用DenseNet網絡架構和卷積神經網絡作為網絡的基礎,提出了一種新的網絡結構,聯合DenseNet實現對圖像信息的深度利用,可以實現修復效果的連續性和清晰性,同時通過JPU (聯合金字塔上采樣)實現訓練的加速.本文的網絡結構由3個部分組成:缺失區域生成網絡、缺失區域判別器和缺失周邊區域鑒別器.缺失區域生成網絡是基于DenseNet的,并使用了提高訓練速度的JPU替代了傳統的擴充卷積層用于生成缺失區域的預測圖像.缺失區域判別器和缺失周邊判別器都是用于訓練的輔助子網,這些判別器用于判別圖像修復結果是否真實以及與周邊上下文是否連續.我們使用缺失周邊部分區域作為判別依據,聯合JPU來減少運算的時間.聯合訓練雙判別器和生成器,最終使得生成器所生成的效果能“欺騙”判別器.與現有的方法比較,尤其是人臉修復,我們的方法在修復的真實性和與原圖的差異性上表現優秀,在訓練時間上也比現有的部分方法速度更快.
綜上所述,本文提出:
(1)不同于基于全局和局部一致的圖像修復,我們使用充分挖掘圖片特征的DenseNet結構替代傳統的基于AlexNet架構的缺失區域生成網絡;
(2)使用JPU (聯合金字塔上采樣)替代傳統膨脹卷積層加速計算.
圖像修復的傳統方法有:應用變分法對缺失區域進行修復[8],但是這種方法迭代速度很慢,對于缺失較大的區域,修復完成后有明顯的模糊.基于邊界的優先級對缺失區域進行順序填充[9],是一種基于填充區域輪廓優先級的貪心算法,它明顯的缺點是無法保證整體填充效果連續.基于patch的算法[1]通過尋找最相似、最近鄰的patch來進行修復,它的優點是修復速度很快,但是對于初始化比較敏感,容易陷入局部極值,導致修復效果整體不連續.基于offset的算法[10]使用圖割算法,利用自然圖像中存在的自相似冗余和patch塊之間的偏移量也存在稀疏的特性計算offset來進行圖像修復,該方法減少了邊界過度不自然的問題.但是與我們的方法不同,它們都不能生成源圖像中沒有的新對象.為了能生成缺失圖像沒有的對象,有人提出使用數據庫驅動的方法[11],通過在數據庫中尋找匹配來完成缺失修復,但是這種方法耗時且修復的對象受數據庫的限制.
卷積神經網絡(CNNs)和對抗神經網絡(GAN)[6]也被用于圖像補全.Pathak等人提出上下文編碼器(Context-Encoder,CE)[4],該算法提出使用encoderdecoder作為缺失區域生成器,將GAN作為修復結果判別器.缺失圖像被送入生成器網絡進行缺失生成,修復的結果和真實圖像被送入判別器進行對抗判別,直至判別器無法區分真實圖像和修復圖像的時候,訓練結束.CE通過使用均方誤差(MSE)損失與GAN損失相結合的方法,在128×128像素圖像的中心修復64×64像素的區域來訓練修復網絡,避免了僅使用MSE損失時常見的模糊.
基于全局和局部一致的圖像修復[5]在CE[4]的基礎上,通過引入雙判別器結構將基于CNN的修復擴展到任意的區域缺失.缺失圖像被送入帶有膨脹卷積層的生成網絡生成修復結果圖像[12,13],缺失區域的修復結果被送入缺失區域判別器;整體的修復結果被送入缺失周邊判別器,雙判別器結構基本保證圖像在缺失局部和缺失周邊全局上修復效果一致,當雙判別器無法判別真實圖像和修復圖像時,訓練結束.
在encoder結構中,得到了低分辨率的特征圖,最終的特征圖編碼了豐富的語義信息,卻丟失了的圖像結構信息,導致修復效果不清晰.我們的方法在減少雙判別器訓練時間的同時,增強了修復的效果.通過基于DenseNet構建缺失生成網絡,提高修復結果的清晰度;使用聯合上采樣的JPU,而非傳統的膨脹卷積層,有效減少了訓練時間.同時聯合上采樣的JPU的輸入聯合多尺度的特征圖和DenseNet的使用,實現了有效的特征重用,保留了更多的空間結構和位置信息,使得最終的修復效果相比較而言有高分辨率.
我們的方法是基于DenseNet訓練的圖像修復網絡.圖像缺失區域生成使用單個聯合JPU上采樣的生成網絡.為了訓練這個網絡真實地完成圖像,使用了另外兩個子網絡,局部缺失判別網絡和非全局的局部缺失周邊判別網絡.在訓練過程中,對判別器網絡進行訓練,判斷圖像是否已經完成,對生成網絡進行欺騙.只有將這3種網絡訓練在一起,網絡才能真實地修復多種圖像.網絡結構如圖1所示.

圖1 基于新生成器結構的圖像修復網絡結構圖
隨著卷積神經網絡的深入,后面的輸出與前面卷積層的特征聯系會更少,如果將前面卷積層的特征圖輸入到后面的卷積層,那么訓練的網絡會更加深入和有效.原始encoder-decoder使用的是基于AlexNet結構的,而我們的方法是基于DenseNet結構,它以前饋的方式將每一層連接到后面的每一層,加強網絡的圖像結構、位置等信息重用和特征學習.傳統的卷積網絡有L層,而DenseNet有L(L+1)/2個直接連接.對于每一層,前面所有層的特征圖都用作輸入,而它自己的特征圖用作后面所有層的輸入.DenseNet有幾個優點:緩解了消失梯度問題,增強了特征傳播,增強了特征重用,并大大減少了參數的數量.DenseNet在大多數情況下都比之前的技術有顯著的改進,同時僅需要更少的計算來實現視覺上更好的修復效果.DenseNet由denseblock組成,對每個denseblock:X1=H1([x1,x2,x3,…,xl–1]),第l層接收前面所有l–1層的特征圖x1,x2,x3,…,xl–1拼接作為輸入,H1由3個操作組成:BN、ReLU、3×3的卷積.每個denseblock之間的連接被稱為過渡層,過渡層主要由卷積層和池化層構成.在本文里,將過渡層和denseblock整合為新的denseblock結構.
缺失生成圖像的基本結構信息應該與原圖像信息一致,在輸入特征圖和輸出特征圖之間某些特征可能相似,利用好這些信息,可能會生成對比原圖更加真實的修復.根據這個思想,與其他使用類似于AlexNet[14]結構的編碼-解碼結構不同,我們使用基于DenseNet的編碼-解碼結構.缺失區域生成網絡的輸入為有缺失圖像,在缺失之外的區域不做任何更改,仍為原圖像,輸出為修復完成的圖像.缺失區域生成網絡為編碼-解碼結構,其中編碼器部分使用基于DenseNet結構對圖像進行深度特征壓縮提取,然后使用同樣基于DenseNet結構的解碼器的反卷積結構對圖像大小進行恢復,生成最終的修復圖像.
在基于全局和局部一致的圖像修復方法[5]中使用雙判別器的結構中,使用了4個傳統膨脹卷積層作為編碼-解碼部分的連接處理,來保持圖像的感知野.擴張卷積在獲取高分辨率最終特征圖中發揮重要作用,但它也有一些缺陷,比如增加了計算復雜度和內存占用.基于這種思想,除了使用標準的卷積層,為了減少擴張卷積帶來消耗的時間和內存,我們使用了新的聯合上采樣模塊JPU[3]替代傳統的膨脹卷積層.并且,膨脹卷積層得到的最終的特征圖編碼了豐富的語義信息,卻丟失了精細的圖像結構信息,導致目標邊界預測不準確,修復效果不清晰,而我們使用JPU替代擴張卷積層部分能得到高分辨率的特征圖.同時,在不損失性能的前提下,將計算復雜度降低了2倍左右,提高了運行速度.通過實驗觀察loss下降情況,使用JPU連接編碼、解碼結構,訓練的過程收斂的更快且更加穩定.
作為考古界的著名人士,師古揚古都是本分,但賴非給予世界的驚奇永遠在于新。他活出了這一個時代的學者、藝術家的獨特價值。再過500年,也許就有后人對著他的拓畫《地老天荒》拍案叫絕,如同他讀《王道習墓志》一樣。他視皇甫亮為酒友,也會有人將他視為畫友的。藝術本來就是隨意而為,那個在酒罐子上寫下或者畫下第一個圖案的古人,和拿著墨汁隨意拓下一段凹凸線條的賴非,他們對美的感知和期待,自然是相通的,自然可互稱為友。
JPU以編碼器最后3層的特征圖作為輸入,與傳統的膨脹卷積層的不同之處基于最后的兩個卷積層,傳統的使用擴張卷積層是在encoder第4層后使用一個常規的卷積層,再放入擴張卷積層;JPU是用步長為2的卷積處理,然后在放入常規卷積層輸出.整個框架的時間和內存占用大幅減少.同時由于它能利用跨多級特征圖的多尺度特征圖,性能不會出現損失.
生成器部分的損失函數分為兩個部分:對抗性損失和修復距離損失.對抗性損失:

對抗性損失是為了生成器盡最大可能“欺騙”判別器;修復距離損失采用L2距離:

修復距離損失是為了生成盡量真實的圖像,盡最大可能使得修復完成的圖像與原圖像“距離”更小.最后生成器部分的損失函數為:Ladv+λ1Lres,本文中λ1=0.0004.
缺失區域判別器和缺失周邊判別器網絡的目標是識別圖像是真實的還是修復得到的.該網絡基于卷積神經網絡,將圖像壓縮成小的特征向量.網絡的輸出由一個全連接層處理得到,預測修復結果與真實結果的概率值.
我們采用與基于全局和局部一致的圖像修復[5]類似的雙判別器策略,缺失區域判別器有兩個輸入:生成器所生成的缺失區域的圖像和真實缺失區域圖像;缺失周邊判別器以修復完成的圖像和原圖像作為輸入,聯合兩個判別器對抗判別訓練.兩個判別器的主要區別在于輸入圖像的大小不同,局部的輸入僅為全局的1/2,所以缺失區域判別器不需要使用缺失周邊判別器的第一層.
最后,局部判別器得到一個1024維的輸出,表示局部上下文信息;全局判別器也得到一個1024維的輸出,表示全局上下文信息.兩者信息結合,在使用一個全連接層得到最終的判別概率,判別圖像是修復出來的,還是真實的.當判別器無法判別圖像是修復/真實的時候,結束訓練.整體算法流程圖如圖2所示.

圖2 基于新生成器結構的圖像修復算法流程圖
本部分主要分析DenseNet架構和JPU的作用.
3.1.1 基于DenseNet架構
2.1節從理論上分析了使用基于DenseNet架構構建缺失生成網絡的優勢,為了進一步從實驗上證明該優勢.我們使用了ImageNet數據集中的小狗類對使用AlexNet作為基本基本架構和使用DenseNet作為基本架構基于雙判別器方法進行了評估.使用AlexNet作為基本架構的修復效果與使用DenseNet作為基本架構的修復效果如圖3,第一列為原始圖片,第二列為缺失圖片,第三列encoder-decoder部分使用AlexNet結構的Iizuka等的方法修復效果,第四列為使用DenseNet作為基本架構的修復效果.可以看出,使用DenseNet作為基本架構的修復效果更加清晰且真實,對比Iizuka等的方法修復效果改進明顯.

圖3 使用DenseNet作為基本結構和使用AlexNet基本結構的修復效果對比
3.1.2 JPU加速
第2.2節從理論上分析了使用JPU (聯合金字塔上采樣)替代傳統膨脹卷積層的優勢,為了進一步從實驗上證明該優勢,我們對不帶膨脹卷積使用JPU、帶傳統膨脹卷積的雙判別器方法進行對比,修復結果如圖4所示,我們使用相同的實驗設置,均為中心缺失修復.第一列為原始圖像,第二列為缺失圖像,第三列為使用膨脹卷積層的雙判別器網絡,第四列為使用JPU替代傳統膨脹卷積的方法.由圖4可以看出,使用JPU替代傳統膨脹卷積,不損失修復效果,JPU實現了類似傳統膨脹卷積的作用;在輕微或者不犧牲修復效果的情況下,在同樣迭代50 000次,batch_size設置為32的情況下,使用膨脹卷積層的訓練時間為14.10 h,使用JPU的訓練時間為6.97 h.在時間上,JPU大約減少了一倍的訓練時間,減少了內存開銷.同時,loss曲線的趨勢更加穩定.

圖4 不使用和使用JPU加速的修復效果對比
由圖4可以看出,僅僅使用JPU只能起到加速訓練的作用.為了能解決帶傳統膨脹卷積的雙判別器方法下修復圖像模糊的缺點,我們會在接下來聯合使用JPU和基于DenseNet的架構.
PSNR (Peak Signal to Noise Ratio)[17]峰值信噪比是一種全參考的圖像質量評價指標.然而PSNR是基于對應像素點間的誤差,即基于誤差敏感的圖像質量評價.并未考慮到人眼的視覺特性(人眼對空間頻率較低的對比差異敏感度較高,人眼對亮度對比差異的敏感度較色度高,人眼對一個區域的感知結果會受到其周圍鄰近區域的影響等),因而經常出現評價結果與人的主觀感覺不一致的情況.所以我們不僅僅使用PSNR作為衡量指標,我們還使用到了SSIM.
SSIM (Structural SIMilarity)[18]結構相似性,是一種全參考的圖像質量評價指標,它分別從亮度、對比度、結構3方面度量圖像相似性.SSIM取值范圍[0,1],值越大,表示圖像失真越小.
圖5為中心缺失為32×32像素大小(原圖大小為128×128)的情況下我們的方法與Iizuka等的方法修復效果對比.圖6為中心缺失54×54的情況下我們的方法與Iizuka等的方法修復效果對比.圖7為中心缺失64×64的情況下我們的方法與Iizuka等的方法修復效果對比.圖8為隨機缺失情況下我們的方法與Iizuka等的方法修復效果對比.第一列均為原始圖像、第二列均為缺失圖像、第三列均為Iizuka等的修復效果、第四列均為使用我們的方法(網絡框架如圖1)后的修復效果.表1為中心缺失64×64情況下修復效果所對應的平均PSNR和SSIM值對比.

圖5 中心缺失為32×32的修復效果對比圖

圖6 中心缺失為54×54的修復效果對比圖

圖7 中心缺失為64×64的修復效果對比圖
由圖5、圖6、圖7和表1可以看到,我們的方法可以真實地修復人臉上的缺失區域,修復結果與原圖間的差異性也更小.在圖5缺失較小的情況下,我們的方法和Iizuka方法修復效果差別不大,隨著缺失的增大,修復難度的提高,我們的方法明顯優于Iizuka的方法.但在缺失較大的情況下,如0.9比例的缺失,由于信息缺損嚴重,修復效果較差.傳統的基于補丁的方法無法完成人臉,因為它要求算法生成不屬于該圖像一部分的新對象,如眼睛、鼻子和嘴巴.對比Iizuka等的方法,我們的方法生成的圖像更加清晰且能真實的應用于多種人臉角度.由圖8可以看到,在缺失大小、位置、形狀隨機的情況下,本方法的修復效果更真實且清晰.說明本方法優于Iizuka等的方法.

圖8 隨機缺失下的修復效果對比圖

表1 我們的方法與Iizuka等的方法PSNR、SSIM指數對比
我們提出了一種新的基于雙判別器的圖像修復方法,實驗證明,通過使用JPU (聯合金字塔上采樣)替代膨脹卷積進行計算,在不降低修復效果的前提下,所需要的訓練和修復時間大大減少.通過使用DenseNet來構造encoder-decoder部分,提高修復的真實性,并使得修復效果更加清晰.此外,本文展示了將本方法應用于人臉上的修復效果,與真實人臉差異性較小.