武文杰 王紅蕾
(貴州大學電氣工程學院 貴州 貴陽 550025)
在當今信息時代,圖像是一個非常重要的信息載體,許許多多的信息都是從圖像中獲得的,因此圖像修復工作十分重要。圖像修復是指將一幅不完整的圖片使用一定的手段進行填充或補全。圖像修復的意義重大,其不僅能夠在文物復原上發揮巨大的作用;在資料修復、輔助人臉識別等方面同樣有很高的應用價值。
傳統的圖像修復方法主要分為兩大類:(1) 適用于缺損面積較大的圖像填充修復,常用的方法有塊匹配(PatchMatch)方法[1]、統計塊概率修復方法[2]等,這些方法主要是依據原圖上已有的信息進行修復,如果圖像上的信息與缺損區域相似度不高,則修復效果很差。(2) 適用于小尺寸的圖像修復方法,常用的方法有全變分方法、Criminis 算法、快速行進算法等[3],這些算法內容修復較好,但是圖像會缺乏高層次連貫性,且缺損區域變大就會變得模糊。總體來說,傳統的圖像修復的方法都是利用原圖的已有信息進行修復,在內容和圖像層次上缺乏連貫性,使得修復結果不夠好,且當圖像的缺損較大時,很可能會造成關鍵信息的丟失,使結果更加不如人意。
深度學習方法讓圖像問題有了新發展,其在圖像修復、圖像超分辨率[4]等圖像處理問題上效果顯著。與傳統的圖像修復方法相比,深度學習方法的優點在于可以通過不斷學習圖像的特征加深對圖像的了解,從局部和整體對圖像進行修復,彌補了傳統方法內容紋理缺乏連貫性和大塊缺失區域修復困難的缺陷[3]。2015年,Radford 等[5]提出深度卷積生成對抗網絡(DCGAN),其基本原理是把卷積神經網絡和生成對抗網絡相結合,將CNN的思想加到生成器模型和判別器模型中,提高生成對抗網絡的性能,從而提高對圖像的修復能力。
相比前面提到的幾種方法,本文使用的方法有以下如下特點:(1) 結合自動編碼器和DCGAN方法,使用編碼器-解碼器(encoder-decoder)結構的卷積神經網絡[6]作為生成器模型,生成與待修復圖像近似的生成圖像;(2) 使用改進的WGAN(WGAN-GP)來訓練判別器模型;(3) 在生成器的層間增加跳躍鏈接(skip-connection)。
生成對抗網絡(GenerativeAdversarialNetworks,GAN)是Goodfellow等[7]從博弈論中的 “二人零和博弈”中受到啟發而提出的。如圖1所示,生成器G和判別器D這兩部分構成了生成對抗網絡。其中:生成器的作用是獲取訓練數據分布并且不斷地生成與真實圖像相似的圖像;判別器的作用是判斷輸入的數據是真實數據還是來自生成器的生成數據,將結果反饋回生成器。輸出結果概率越接近50%,生成數據越逼真。

圖1 生成對抗網絡
Wasserstein距離也叫Earth-Mover(EM)距離,為了將其引入到函數中使用,Arjovsky等[8]將Wasserstein距離轉化為如下公式:
(1)
Wasserstein距離是一個連續的平滑函數,能在兩個分布沒有重疊的情況下依舊反映它們的遠近,這是KL散度、JS散度所辦不到的,這也是Wasserstein距離的優勢所在[9]。其原因在于KL和JS散度不是平滑的,是突變的,只存在最大與最小。當用梯度下降法對模型進行優化時,Wasserstein距離能夠提供梯度,KL和JS散度就沒有作用了。同理可得,在高維空間中,兩個分布不重疊,那么KL和JS散度便就完全失效而Wasserstein距離有效。
WGAN的生成器損失函數:
Ex~Pg[fW(x)]
(2)
WGAN的判別器損失函數:
Ex~Pg[fW(x)]-EX~Pr[fW(x)]
(3)
WGAN-GP就是在連續性限制的條件方面改進的WGAN。在WGAN中,當權重剪切到某個范圍時,網絡的大部分權重可能就集中在兩個數上,這對深度神經網絡來說并不能很好發揮深度神經網絡的強大的擬合能力。而且,盲目剪切權重可能導致梯度消失或者梯度爆炸,很容易造成訓練的不穩定性。如果剪切范圍過小就會導致梯度消失,如果剪切范圍稍大一點,就會導致梯度爆炸。
文獻[10]提出了使用梯度懲罰(gradient penalty)的方法來滿足lipschitz連續性條件,解決了訓練梯度消失和梯度爆炸的問題[10],其實質就是給連續函數增加了一個外罰。
實驗表明,WGAN-GP的收斂速度更快,生成樣本的質量更高,且訓練穩定方便。
WGAN-GP的判別器損失函數為:
L(D)=-EX~Pr[D(x)]+Ex~Pg[D(x)]+
(4)
生成對抗網絡模型由生成器模型G和判別器模型D組成,整體網絡模型如圖2所示。本文方法的大體思路:先通過隨機噪音訓練生成對抗網絡模型,再將待修復的人臉圖像通過訓練后的模型生成與原圖相似的圖像。

圖2 整體網絡模型
在進行圖像修復工作時,極少有完全破損或全部遮擋的情況,一般都是局部破損或部分遮擋,圖像上總會有完好的部分。因此在進行修復時可以將這些完好的信息保留下來,即將輸入層完好的信息直接傳到對應輸出層,將這些信息共享,可能會提高輸出圖像的質量。所以,本文使用跳躍連接[11]的方式來連接編碼器和解碼器,從而將這些低級特征由低層直接傳到更高層,這樣就可以更大地保留圖像的底層結構。普通的編碼器-解碼器連接如圖3所示,跳躍連接如圖4所示。

圖3 編碼器-解碼器連接

圖4 跳躍連接
圖5為生成器的模型。conv指卷積層,deconv代表解卷積層,卷積核的大小為5×5。生成器分為編碼器和解碼器兩部分,是由下采樣的卷積層與上采樣的解卷積層組成,同時通過跳躍連接將低級別的特征傳到高層特征上。激活函數的使用借鑒WGAN,下采樣層使用激活函數Leaky-ReLU[8],防止梯度稀疏;上采樣層使用ReLU[12],最后一層使用Tanh激活函數[13]。生成器模型參數如表1所示。

圖5 生成器模型

表1 生成器模型參數

續表1
判別器D是通過與生成器進行對抗學習,不斷提高識別能力,從而提高識別出真實樣本的準確率。如圖6所示,判別器由卷積網絡構成。判別器的輸入包括生成圖像和真實圖像兩個部分。因為使用的是Wasserstein距離衡量去兩個分布間的距離,所以判別器要單獨對每一樣本進行梯度懲罰,為了防止同一batch不同的樣本相互依賴,判別器各層不用Batch Normalization[14]。判別器模型參數如表2所示。

圖6 判別器模型

卷積層輸入卷積核卷積核數輸出Conv164×645×56432×32Conv232×325×512816×16Conv316×165×52568×8Conv48×85×55124×4
傳統的生成對抗網絡的生成器損失函數只有生成對抗損失,為了生成器能夠生成與真實圖像更加相似的圖像,本文在傳統生成器的損失函數上增加了內容損失。對抗損失可以理解為破損圖像生成與真實的差別,內容損失可以理解為有內容的區域(未破損區域)生成與真實的差別。
(1) 對抗損失。本文將破損圖像當作條件加入到生成器輸入中,此時對抗損失為:
-EZ~pz(z),(x,y)~prD(G(z,y),y)
(5)
(2) 內容損失。我們使用L1距離來判斷生成器生成樣本的未破損區域與真實樣本的未破損區域的差別。假設M為圖像掩膜,其與輸入圖像具有同樣大小的尺寸,其中破損像素點用0表示,完好的像素點用1來表示,則內容損失為:
EZ~pz(z),(x,y)~pr(x,y)[‖M⊙(x-G(z,y))‖1]
(6)
式中:符號⊙代表兩個矩陣的對應元素相乘。
最終,結合以上兩部分損失函數,生成器損失函數的形式為:
-EZ~pz(z),(x,y)~pr(x,y)D(G(z,y),y)+
α1EZ~pz(z),(x,y)~pr(x,y)[‖M⊙(x-
G(z,y))‖1]
(7)
式中:α1為權重系數。

L(D)=-EX~Pr[D(x)]+Ex~Pg[D(x)]+
(8)
注意,Lipschitz限制區域只需在生成樣本、真實樣本集中區域以及夾在他們中間的區域。
最后在判別器增加了破損圖像為條件,因此最終的判別器損失函數為:
EZ~pz(z),(x,y)~pr(x,y)D(G(z,y),y)-
E(x,y)~pr(x,y)D(x,y)+
(9)
式中:α2為權重系數。
本文使用CelebA數據集作為訓練集,該數據集包含202 599幅人臉圖像,對這些圖像進行面部識別并截取,并且歸一化到64×64尺寸大小。實驗中選取處理完的150 000幅圖像作為訓練集來進行訓練。并將剩余CelebA數據集圖像和LFW數據集作為測試集,做相同的處理。
實驗過程中,在進行訓練時,使epoch=20,batch設置為5,那么每一個epoch迭代訓練30 000次,本文在訓練時采用文獻[15]中的生成對抗網絡算法,由生成器與判別器交替訓練。實驗設置參數α1=100,參數α2=10。訓練還采用了Adam[16]優化算法,將網絡的學習速率設置為0.000 2,參數β1=0.5,β2=0.9。結束之后,交換訓練集和測試集,檢驗模型的魯棒性。
由于數據集LFW只有10 000幅左右的圖像,所以在LFW數據集epoch=50,且每一個epoch迭代訓練2 000次,其余參數保持一致。
圖7所示為本文方法與DCGAN和Context Enconder[17]的修復對比圖像,通過對面部大面積遮擋進行修復,可以看出使用本文的修復方法要優于其他兩種修復方法。由圖8可以看出,使用本文方法對不同部位的遮擋進行修復,均有良好的效果。

圖7 各方法比較圖

圖8 不同部位修復效果
同時,本文對各種修復方法的修復時間也進行了對比,經過實驗比較,這幾種方法的修復時間相差很小,基本相同。
此外,通常圖像修復有兩個評估尺度:峰值信噪比(PSNR)和結構性相似(SSIM),這兩個指標是現在使用較多的圖像的客觀評價依據。
峰值信噪比是基于誤差敏感的圖像質量評價[18]。PSNR值越大,修復的效果越好。
結構性相似是用來評判兩幅圖像整體的相似性,包括亮度、對比度、結構三個方面。SSIM值范圍為(0,1),結果越靠近1,說明相似度越高。以圖7中第一行的圖像為例,本文方法與其他方法對比如表3所示。可見,不管是PSNR還是SSIM值,均是本文方法更好。

表3 不同算法峰值信噪比與結構相似度
本文提出一種新的基于生成對抗網絡修復人臉的改進方法,對不同部位的遮擋修復和不同大小的遮擋修復均有較好的修復效果。這對于輔助人臉識別、社會治安管理、文物修復等方面都有應用價值。該方法的模型基于生成對抗網絡,使用編碼器-解碼器(encoder-decoder)結構的卷積神經網絡作為生成器模型,并且在隱含層的層間加入跳躍連接,加強網絡自主學習能力,使生成圖像更加真實。判別器損失函數用Wasserstein距離表示,并加入梯度懲罰,與DCGAN和Context Enconder相比最終使得修復效果較好。此外,本文方法還可以用于除人臉以外其他圖像的修復以及文本修復。