武文杰 王紅蕾
(貴州大學(xué)電氣工程學(xué)院 貴州 貴陽 550025)
在當(dāng)今信息時(shí)代,圖像是一個(gè)非常重要的信息載體,許許多多的信息都是從圖像中獲得的,因此圖像修復(fù)工作十分重要。圖像修復(fù)是指將一幅不完整的圖片使用一定的手段進(jìn)行填充或補(bǔ)全。圖像修復(fù)的意義重大,其不僅能夠在文物復(fù)原上發(fā)揮巨大的作用;在資料修復(fù)、輔助人臉識(shí)別等方面同樣有很高的應(yīng)用價(jià)值。
傳統(tǒng)的圖像修復(fù)方法主要分為兩大類:(1) 適用于缺損面積較大的圖像填充修復(fù),常用的方法有塊匹配(PatchMatch)方法[1]、統(tǒng)計(jì)塊概率修復(fù)方法[2]等,這些方法主要是依據(jù)原圖上已有的信息進(jìn)行修復(fù),如果圖像上的信息與缺損區(qū)域相似度不高,則修復(fù)效果很差。(2) 適用于小尺寸的圖像修復(fù)方法,常用的方法有全變分方法、Criminis 算法、快速行進(jìn)算法等[3],這些算法內(nèi)容修復(fù)較好,但是圖像會(huì)缺乏高層次連貫性,且缺損區(qū)域變大就會(huì)變得模糊。總體來說,傳統(tǒng)的圖像修復(fù)的方法都是利用原圖的已有信息進(jìn)行修復(fù),在內(nèi)容和圖像層次上缺乏連貫性,使得修復(fù)結(jié)果不夠好,且當(dāng)圖像的缺損較大時(shí),很可能會(huì)造成關(guān)鍵信息的丟失,使結(jié)果更加不如人意。
深度學(xué)習(xí)方法讓圖像問題有了新發(fā)展,其在圖像修復(fù)、圖像超分辨率[4]等圖像處理問題上效果顯著。與傳統(tǒng)的圖像修復(fù)方法相比,深度學(xué)習(xí)方法的優(yōu)點(diǎn)在于可以通過不斷學(xué)習(xí)圖像的特征加深對(duì)圖像的了解,從局部和整體對(duì)圖像進(jìn)行修復(fù),彌補(bǔ)了傳統(tǒng)方法內(nèi)容紋理缺乏連貫性和大塊缺失區(qū)域修復(fù)困難的缺陷[3]。2015年,Radford 等[5]提出深度卷積生成對(duì)抗網(wǎng)絡(luò)(DCGAN),其基本原理是把卷積神經(jīng)網(wǎng)絡(luò)和生成對(duì)抗網(wǎng)絡(luò)相結(jié)合,將CNN的思想加到生成器模型和判別器模型中,提高生成對(duì)抗網(wǎng)絡(luò)的性能,從而提高對(duì)圖像的修復(fù)能力。
相比前面提到的幾種方法,本文使用的方法有以下如下特點(diǎn):(1) 結(jié)合自動(dòng)編碼器和DCGAN方法,使用編碼器-解碼器(encoder-decoder)結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)[6]作為生成器模型,生成與待修復(fù)圖像近似的生成圖像;(2) 使用改進(jìn)的WGAN(WGAN-GP)來訓(xùn)練判別器模型;(3) 在生成器的層間增加跳躍鏈接(skip-connection)。
生成對(duì)抗網(wǎng)絡(luò)(GenerativeAdversarialNetworks,GAN)是Goodfellow等[7]從博弈論中的 “二人零和博弈”中受到啟發(fā)而提出的。如圖1所示,生成器G和判別器D這兩部分構(gòu)成了生成對(duì)抗網(wǎng)絡(luò)。其中:生成器的作用是獲取訓(xùn)練數(shù)據(jù)分布并且不斷地生成與真實(shí)圖像相似的圖像;判別器的作用是判斷輸入的數(shù)據(jù)是真實(shí)數(shù)據(jù)還是來自生成器的生成數(shù)據(jù),將結(jié)果反饋回生成器。輸出結(jié)果概率越接近50%,生成數(shù)據(jù)越逼真。
圖1 生成對(duì)抗網(wǎng)絡(luò)
Wasserstein距離也叫Earth-Mover(EM)距離,為了將其引入到函數(shù)中使用,Arjovsky等[8]將Wasserstein距離轉(zhuǎn)化為如下公式:
(1)
Wasserstein距離是一個(gè)連續(xù)的平滑函數(shù),能在兩個(gè)分布沒有重疊的情況下依舊反映它們的遠(yuǎn)近,這是KL散度、JS散度所辦不到的,這也是Wasserstein距離的優(yōu)勢(shì)所在[9]。其原因在于KL和JS散度不是平滑的,是突變的,只存在最大與最小。當(dāng)用梯度下降法對(duì)模型進(jìn)行優(yōu)化時(shí),Wasserstein距離能夠提供梯度,KL和JS散度就沒有作用了。同理可得,在高維空間中,兩個(gè)分布不重疊,那么KL和JS散度便就完全失效而Wasserstein距離有效。
WGAN的生成器損失函數(shù):
Ex~Pg[fW(x)]
(2)
WGAN的判別器損失函數(shù):
Ex~Pg[fW(x)]-EX~Pr[fW(x)]
(3)
WGAN-GP就是在連續(xù)性限制的條件方面改進(jìn)的WGAN。在WGAN中,當(dāng)權(quán)重剪切到某個(gè)范圍時(shí),網(wǎng)絡(luò)的大部分權(quán)重可能就集中在兩個(gè)數(shù)上,這對(duì)深度神經(jīng)網(wǎng)絡(luò)來說并不能很好發(fā)揮深度神經(jīng)網(wǎng)絡(luò)的強(qiáng)大的擬合能力。而且,盲目剪切權(quán)重可能導(dǎo)致梯度消失或者梯度爆炸,很容易造成訓(xùn)練的不穩(wěn)定性。如果剪切范圍過小就會(huì)導(dǎo)致梯度消失,如果剪切范圍稍大一點(diǎn),就會(huì)導(dǎo)致梯度爆炸。
文獻(xiàn)[10]提出了使用梯度懲罰(gradient penalty)的方法來滿足lipschitz連續(xù)性條件,解決了訓(xùn)練梯度消失和梯度爆炸的問題[10],其實(shí)質(zhì)就是給連續(xù)函數(shù)增加了一個(gè)外罰。
實(shí)驗(yàn)表明,WGAN-GP的收斂速度更快,生成樣本的質(zhì)量更高,且訓(xùn)練穩(wěn)定方便。
WGAN-GP的判別器損失函數(shù)為:
L(D)=-EX~Pr[D(x)]+Ex~Pg[D(x)]+
(4)
生成對(duì)抗網(wǎng)絡(luò)模型由生成器模型G和判別器模型D組成,整體網(wǎng)絡(luò)模型如圖2所示。本文方法的大體思路:先通過隨機(jī)噪音訓(xùn)練生成對(duì)抗網(wǎng)絡(luò)模型,再將待修復(fù)的人臉圖像通過訓(xùn)練后的模型生成與原圖相似的圖像。
圖2 整體網(wǎng)絡(luò)模型
在進(jìn)行圖像修復(fù)工作時(shí),極少有完全破損或全部遮擋的情況,一般都是局部破損或部分遮擋,圖像上總會(huì)有完好的部分。因此在進(jìn)行修復(fù)時(shí)可以將這些完好的信息保留下來,即將輸入層完好的信息直接傳到對(duì)應(yīng)輸出層,將這些信息共享,可能會(huì)提高輸出圖像的質(zhì)量。所以,本文使用跳躍連接[11]的方式來連接編碼器和解碼器,從而將這些低級(jí)特征由低層直接傳到更高層,這樣就可以更大地保留圖像的底層結(jié)構(gòu)。普通的編碼器-解碼器連接如圖3所示,跳躍連接如圖4所示。
圖3 編碼器-解碼器連接
圖4 跳躍連接
圖5為生成器的模型。conv指卷積層,deconv代表解卷積層,卷積核的大小為5×5。生成器分為編碼器和解碼器兩部分,是由下采樣的卷積層與上采樣的解卷積層組成,同時(shí)通過跳躍連接將低級(jí)別的特征傳到高層特征上。激活函數(shù)的使用借鑒WGAN,下采樣層使用激活函數(shù)Leaky-ReLU[8],防止梯度稀疏;上采樣層使用ReLU[12],最后一層使用Tanh激活函數(shù)[13]。生成器模型參數(shù)如表1所示。
圖5 生成器模型
表1 生成器模型參數(shù)
續(xù)表1
判別器D是通過與生成器進(jìn)行對(duì)抗學(xué)習(xí),不斷提高識(shí)別能力,從而提高識(shí)別出真實(shí)樣本的準(zhǔn)確率。如圖6所示,判別器由卷積網(wǎng)絡(luò)構(gòu)成。判別器的輸入包括生成圖像和真實(shí)圖像兩個(gè)部分。因?yàn)槭褂玫氖荳asserstein距離衡量去兩個(gè)分布間的距離,所以判別器要單獨(dú)對(duì)每一樣本進(jìn)行梯度懲罰,為了防止同一batch不同的樣本相互依賴,判別器各層不用Batch Normalization[14]。判別器模型參數(shù)如表2所示。
圖6 判別器模型
卷積層輸入卷積核卷積核數(shù)輸出Conv164×645×56432×32Conv232×325×512816×16Conv316×165×52568×8Conv48×85×55124×4
傳統(tǒng)的生成對(duì)抗網(wǎng)絡(luò)的生成器損失函數(shù)只有生成對(duì)抗損失,為了生成器能夠生成與真實(shí)圖像更加相似的圖像,本文在傳統(tǒng)生成器的損失函數(shù)上增加了內(nèi)容損失。對(duì)抗損失可以理解為破損圖像生成與真實(shí)的差別,內(nèi)容損失可以理解為有內(nèi)容的區(qū)域(未破損區(qū)域)生成與真實(shí)的差別。
(1) 對(duì)抗損失。本文將破損圖像當(dāng)作條件加入到生成器輸入中,此時(shí)對(duì)抗損失為:
-EZ~pz(z),(x,y)~prD(G(z,y),y)
(5)
(2) 內(nèi)容損失。我們使用L1距離來判斷生成器生成樣本的未破損區(qū)域與真實(shí)樣本的未破損區(qū)域的差別。假設(shè)M為圖像掩膜,其與輸入圖像具有同樣大小的尺寸,其中破損像素點(diǎn)用0表示,完好的像素點(diǎn)用1來表示,則內(nèi)容損失為:
EZ~pz(z),(x,y)~pr(x,y)[‖M⊙(x-G(z,y))‖1]
(6)
式中:符號(hào)⊙代表兩個(gè)矩陣的對(duì)應(yīng)元素相乘。
最終,結(jié)合以上兩部分損失函數(shù),生成器損失函數(shù)的形式為:
-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為權(quán)重系數(shù)。
L(D)=-EX~Pr[D(x)]+Ex~Pg[D(x)]+
(8)
注意,Lipschitz限制區(qū)域只需在生成樣本、真實(shí)樣本集中區(qū)域以及夾在他們中間的區(qū)域。
最后在判別器增加了破損圖像為條件,因此最終的判別器損失函數(shù)為:
EZ~pz(z),(x,y)~pr(x,y)D(G(z,y),y)-
E(x,y)~pr(x,y)D(x,y)+
(9)
式中:α2為權(quán)重系數(shù)。
本文使用CelebA數(shù)據(jù)集作為訓(xùn)練集,該數(shù)據(jù)集包含202 599幅人臉圖像,對(duì)這些圖像進(jìn)行面部識(shí)別并截取,并且歸一化到64×64尺寸大小。實(shí)驗(yàn)中選取處理完的150 000幅圖像作為訓(xùn)練集來進(jìn)行訓(xùn)練。并將剩余CelebA數(shù)據(jù)集圖像和LFW數(shù)據(jù)集作為測(cè)試集,做相同的處理。
實(shí)驗(yàn)過程中,在進(jìn)行訓(xùn)練時(shí),使epoch=20,batch設(shè)置為5,那么每一個(gè)epoch迭代訓(xùn)練30 000次,本文在訓(xùn)練時(shí)采用文獻(xiàn)[15]中的生成對(duì)抗網(wǎng)絡(luò)算法,由生成器與判別器交替訓(xùn)練。實(shí)驗(yàn)設(shè)置參數(shù)α1=100,參數(shù)α2=10。訓(xùn)練還采用了Adam[16]優(yōu)化算法,將網(wǎng)絡(luò)的學(xué)習(xí)速率設(shè)置為0.000 2,參數(shù)β1=0.5,β2=0.9。結(jié)束之后,交換訓(xùn)練集和測(cè)試集,檢驗(yàn)?zāi)P偷聂敯粜浴?/p>
由于數(shù)據(jù)集LFW只有10 000幅左右的圖像,所以在LFW數(shù)據(jù)集epoch=50,且每一個(gè)epoch迭代訓(xùn)練2 000次,其余參數(shù)保持一致。
圖7所示為本文方法與DCGAN和Context Enconder[17]的修復(fù)對(duì)比圖像,通過對(duì)面部大面積遮擋進(jìn)行修復(fù),可以看出使用本文的修復(fù)方法要優(yōu)于其他兩種修復(fù)方法。由圖8可以看出,使用本文方法對(duì)不同部位的遮擋進(jìn)行修復(fù),均有良好的效果。
圖7 各方法比較圖
圖8 不同部位修復(fù)效果
同時(shí),本文對(duì)各種修復(fù)方法的修復(fù)時(shí)間也進(jìn)行了對(duì)比,經(jīng)過實(shí)驗(yàn)比較,這幾種方法的修復(fù)時(shí)間相差很小,基本相同。
此外,通常圖像修復(fù)有兩個(gè)評(píng)估尺度:峰值信噪比(PSNR)和結(jié)構(gòu)性相似(SSIM),這兩個(gè)指標(biāo)是現(xiàn)在使用較多的圖像的客觀評(píng)價(jià)依據(jù)。
峰值信噪比是基于誤差敏感的圖像質(zhì)量評(píng)價(jià)[18]。PSNR值越大,修復(fù)的效果越好。
結(jié)構(gòu)性相似是用來評(píng)判兩幅圖像整體的相似性,包括亮度、對(duì)比度、結(jié)構(gòu)三個(gè)方面。SSIM值范圍為(0,1),結(jié)果越靠近1,說明相似度越高。以圖7中第一行的圖像為例,本文方法與其他方法對(duì)比如表3所示。可見,不管是PSNR還是SSIM值,均是本文方法更好。
表3 不同算法峰值信噪比與結(jié)構(gòu)相似度
本文提出一種新的基于生成對(duì)抗網(wǎng)絡(luò)修復(fù)人臉的改進(jìn)方法,對(duì)不同部位的遮擋修復(fù)和不同大小的遮擋修復(fù)均有較好的修復(fù)效果。這對(duì)于輔助人臉識(shí)別、社會(huì)治安管理、文物修復(fù)等方面都有應(yīng)用價(jià)值。該方法的模型基于生成對(duì)抗網(wǎng)絡(luò),使用編碼器-解碼器(encoder-decoder)結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)作為生成器模型,并且在隱含層的層間加入跳躍連接,加強(qiáng)網(wǎng)絡(luò)自主學(xué)習(xí)能力,使生成圖像更加真實(shí)。判別器損失函數(shù)用Wasserstein距離表示,并加入梯度懲罰,與DCGAN和Context Enconder相比最終使得修復(fù)效果較好。此外,本文方法還可以用于除人臉以外其他圖像的修復(fù)以及文本修復(fù)。