雷新意 吳 陳
(江蘇科技大學計算機學院 鎮(zhèn)江 212100)
殘缺人臉圖像修復,是對給定的一張存在局部區(qū)域殘缺的人臉圖片進行修復填充,目前已有一些如Photoshop 的圖像處理軟件能夠?qū)埲比四槇D像進行修復,然而,修復效果較大程度的依賴于個人對軟件使用的熟練程度,此外,由于人臉圖像的拓撲結(jié)構(gòu)相對特殊,通常的圖像修復技術(shù)應用于殘缺人臉圖像修復難以取得令人滿意的效果,因此,殘缺人臉圖像修復是一項極高挑戰(zhàn)性的項目,相關(guān)研究人員已對此提出多種修復方法,可分為傳統(tǒng)方法和深度學習方法。
傳統(tǒng)方法又可分為變分法、實例法。變分法利用了擴散思想,將局部殘缺區(qū)域周圍的已知區(qū)域擴散至殘缺區(qū)域[1~2],之所以稱之為變分法是因為可以通過變分原理等價推導得出。Bertalmio 等學者首先建立了BSCB 模型[3],該模型在選擇要修復的區(qū)域后會自動進行填充,對拓撲結(jié)構(gòu)沒有任何限制,但該模型存在運算速度慢的問題,學者Chan 等人受到BSCB 模型的啟發(fā),提出了全變分模型和曲率驅(qū)動擴散模型[4~5],收斂速度和偽噪聲去除效果有所提升,此后又有一些高階圖像修復模型提出并取得了更好的修復效果,但對于面積較大殘缺圖像修復效果不佳[6-7]。實例法通過獲取紋理信息實現(xiàn)對殘缺人臉圖像的修復,有Bornard 提出的基于紋理合成的修復算法[8],Criminisi 提出的基于樣本塊的修復算法[9],Martmez-Noriega 和Roumy 提出的構(gòu)建先驗修復算法[10],實例法相對于變分法更加關(guān)注圖像的紋理結(jié)構(gòu),且修復效果受到相似度匹配、圖像塊選取、先驗知識等因素影響。如今,深度學習技術(shù)越來越多的被應用在圖像修復領(lǐng)域,Google DeepMind 團隊提出的PixelRNNs 網(wǎng)絡結(jié)構(gòu)可看作是深度學習在圖像修復領(lǐng)域應用的先例[11],Context Encoder 是首個利用深度生成網(wǎng)絡處理殘缺圖像的模型,該模型利用自動編碼器的預測能力,根據(jù)殘缺圖像中已知圖像信息來預測殘缺圖像的內(nèi)容[12]。然而,目前基于深度學習的修復算法還處于初始階段的監(jiān)督學習或半監(jiān)督學習,受到較多因素的限制,因此,Goodfellow等學者提出了利用生成對抗網(wǎng)絡GAN 進行圖像的修復[13],這為無監(jiān)督學習提供了新的思路,此后多種基于GAN 的圖像修復方法提出,效果相對于傳統(tǒng)算法得到了很大的優(yōu)化,但仍然存在難以平衡判別器和生成器收斂速度、梯度易消失問題,且修復圖像雖真實但和原圖像身份特征差異較大的問題,針對此狀況,本文在生成對抗網(wǎng)絡基礎(chǔ)上提出了一種基于BEGAN邊界均衡生成對抗網(wǎng)絡改進的殘缺人臉圖像修復算法,主要內(nèi)容包括:
1)生成器:采用類似U-net 編解碼器網(wǎng)絡結(jié)構(gòu),在U-net 結(jié)構(gòu)中簡單跳躍連接基礎(chǔ)上引入嵌套、密集的跳躍連接以增強不同尺度特征圖的語義結(jié)合;
2)判別器:采用全局和局部雙重判別模型,優(yōu)化區(qū)域不協(xié)調(diào)以及語義不一致問題;
3)損失函數(shù):結(jié)合BEGAN 對抗損失、重構(gòu)損失、身份特征一致性損失作為聯(lián)合損失函數(shù)以獲得和原始圖像身份特征更加一致的修復圖像。
GAN 由生成器G 和判別器D 組成,生成器G 將隨機噪聲z 生成近似服從真實數(shù)據(jù)分布Pdata uik的樣本G(z),而判別器D用于判斷輸入樣本是真實樣本x 還是隨機噪聲的生成樣本G(z)。GAN 的模型結(jié)構(gòu)如圖1 所示。
圖1 生成對抗網(wǎng)絡模型結(jié)構(gòu)圖
在模型訓練過程中,生成器G 的作用是盡可能生成近似真實的圖片去“欺騙”判別器D。而判別器D 的作用是盡可能將生成器G 生成的圖片和真實的圖片判別開,如此,生成器G 和判別器D 形成了一個動態(tài)的博弈過程。模型訓練目標是生成器G 可以生成和真實數(shù)據(jù)分布相同的樣本,使得判別器D 難以判定G(z)究竟是不是真實的,即D(G(z))=0.5。該過程用數(shù)學語言描述如下所示:
式中,D(x)表示判斷真實圖片是否真實的概率,而D(G(z))是判斷G 生成的圖片是否真實的概率。G讓生成的樣本越接近真實樣本越好,即D(G(z))越接近1越好,這時V(D,G)會變小,而D 盡量使D(x)接近1,D(G(z))接近0,此時V(D,G)會增大。
雖然原始GAN 已經(jīng)能夠獲得較好的生成、修復圖像效果,但該模型往往難以訓練,難以平衡判別器和生成器的收斂速度,極易造成模型崩潰問題,為了能夠改善這些問題,學者Berthelot 等提出了BEGAN邊界均衡生成對抗網(wǎng)絡[14]。
BEGAN 是一種對GAN 的改進模型,該模型使用了新的評價生成器質(zhì)量的方法,不需考慮上述模型崩潰和訓練不平衡等問題。
GAN 以及其變種均是以生成器生成的數(shù)據(jù)分布盡可能接近真實數(shù)據(jù)分布為目標,而BEGAN 并不直接對生成數(shù)據(jù)分布與真實分布的差距進行估計,而是對各自分布損失的分布差距進行估計,只要分布之間的損失分布相近即可認為分布是相近的。
BEGANs 將一個自編碼器作為分類器,通過基于Wasserstein 距離的損失來匹配自編碼器的損失分布,自編碼器在樣本上的損失如下所示:
其中,D 為自編碼器函數(shù),η為目標準則,Nx為樣本維度,L(v)表示真實圖像v 和經(jīng)過自編碼網(wǎng)絡D輸出的D(v)的相似程度,值越小,表示v 和D(v)越相似,同樣也可以得到生成圖像的損失L(G(v) ),BEGAN 采用Wasserstein 距離計算D 在真實數(shù)據(jù)與生成數(shù)據(jù)損失分布之間的距離,而真實數(shù)據(jù)與生成數(shù)據(jù)損失分布近似服從正態(tài)分布[14]。
對于兩個正態(tài)分布之間的Wasserstein 距離為
其中,m1,m2為兩個正態(tài)分布均值,c1,c2為方差。
根據(jù)GAN 的對抗原則,D 的目標是最大化W,而G 則要最小化W,如果滿足為常數(shù),則W 與|m1-m2|的單調(diào)性相同,因此,令D 不斷的最大化m2,最小化m1,而G 不斷最小化m2,當m2接近m1時即認為模型訓練完成,D 和G 的目標函數(shù)可表示為
理想情況下肯定是m1=m2的時候是最好的,即,但此時,趨近于無窮,因此,模型加入了一個取值范圍[0,1]的超參數(shù),就相當于一個將均衡條件限制住了,這就是BEGAN名字的由來,最終的損失函數(shù)如下所示:
其中,t為訓練步數(shù),λk為k的學習率此外,BEGAN中還定義了一個可表示模型訓練程度的變量如下:
Mglobal越小表示模型收斂程度越高,相反,收斂程度越低。
原始BEGAN 的生成網(wǎng)絡是解碼器結(jié)構(gòu),僅適用于一維信號,由于本文算法的輸入是二維的殘缺圖像,因此本文生成器采用了基于U-net 網(wǎng)絡的改進結(jié)構(gòu),包括一個將圖像背景提取成潛在特征表示的編碼器和一個利用該特征表示生成殘缺區(qū)域內(nèi)容的解碼器。
原始的U-net 網(wǎng)絡通過下采樣的方式對特征進行降維,沒有從多尺度中獲取足夠的信息,提取出主要特征的同時存在著部分重要特征丟失的問題,致使深層的網(wǎng)絡層相關(guān)性低,影響模型的表達能力,可能導致梯度彌散,增加了訓練難度。因此,本文在U-net 的基礎(chǔ)上提出采用全尺度跳躍連接(skip connection),全尺寸跳躍連接改變了編碼器和解碼器之間的互連,每個解碼器層融合了編碼器中的小尺度、同尺度以及解碼器的大尺度特征圖,這些特征圖提取了全尺度下的細粒度和粗粒度語義,網(wǎng)絡模型結(jié)構(gòu)如圖2所示。
圖2 生成器模型
網(wǎng)絡的前半部分由多個編碼器模塊組成,每個編碼器模塊由一個卷積層、一個批歸一化層、一個ReLU 層串聯(lián)組成,采用步長為2 的卷積層進行特征下采樣,這使得網(wǎng)絡中特征的下采樣方式可以通過訓練學習得到最優(yōu),特別的是,第一個編碼器模塊不使用批歸一化層。網(wǎng)絡的后半部分由多個解碼器模塊組成,對于每個解碼器模塊由較小或相同尺度編碼器模塊進行池化下采樣及較大尺度解碼器模塊進行雙線性插值上采樣并卷積后統(tǒng)一到當前解碼器模塊特征圖分辨率和通道數(shù)后,采用FCN式逐點相加實現(xiàn)多尺度特征融合,并經(jīng)批歸一化層和激活函數(shù)LeakyReLU 層形成,特別的是,解碼器最后一個模塊不使用批歸一化層。此外,本文模型在編碼器和解碼器的中間層使用逐通道全連接替代原始U-net的全連接方式。
本模型相對于U-net 結(jié)構(gòu),能夠提高精度,防止網(wǎng)絡層數(shù)增加而導致的梯度彌散問題與退化問題。
原始的BEGAN僅采用一個全局判別網(wǎng)絡實現(xiàn)對抗優(yōu)化,存在修復區(qū)域和其他區(qū)域不協(xié)調(diào)以及語義不一致等問題。針對此情況,本文添加了一個局部判別網(wǎng)絡,根據(jù)BEGAN 的思想,全局、局部判別器均采用自編碼器結(jié)構(gòu)。全局判別器用于優(yōu)化人臉殘缺部分的結(jié)構(gòu)信息和特征信息的生成,使修復的人臉圖像結(jié)構(gòu)的符合視覺認知;局部判別器用于優(yōu)化人臉殘缺部分的紋理信息生成,使修復的人臉圖像和原始圖像的皮膚紋理信息更加相像、逼真。判別器模型結(jié)構(gòu)如圖3所示。
圖3 判別器模型
全局判別器和局部判別器模型結(jié)構(gòu)相似,均采用原始BEGAN 的判別器結(jié)構(gòu),不同的是輸入圖像的分辨率,全局判別器輸入圖像分辨率為128×128編碼器,局部判別器輸入圖像分辨率為32×32,此外,解碼器層數(shù)也相應不同。編碼器除了第一個模塊采用1個3×3 卷積層,其余均使用了2個3×3 卷積層和一個步長為2 的池化層,解碼器除了最后一個模塊采用1 個3×3 卷積層,其余均采用2 個3×3卷積層和一個雙線性插值上采樣層,編解碼器中間層使用全連接方式映射。上圖中,n 為通道基數(shù),本文全局判別器中n=128,局部判別器中n=32。
本文的損失函數(shù)由生成器部分的重構(gòu)損失、全局及局部判別器損失、身份特征一致性損失組成。
重構(gòu)損失Lrec采用L1范數(shù),如下所示:
通過重構(gòu)損失能夠讓生成圖像更加逼近真實圖像。
本文在研究不同修復方法的修復結(jié)果中發(fā)現(xiàn)盡管已有的多種方法都修復生成了比較真實的填充內(nèi)容,但在身份特征的相似性上卻有較大的差距。為了能夠讓修復結(jié)果盡可能修復丟失的身份識別特征,本文在損失函數(shù)中加入了人臉特征一致性損失,用來衡量修復的人臉圖像和原始圖像之間的面部特征之間的差異。該損失通過將修復的殘缺人臉圖像和原始圖像分別輸入人臉識別網(wǎng)絡ResNet以提取各自的特征,并求兩者間的余弦距離得到身份一致性損失Lcons。
重構(gòu)損失、身份一致性損失結(jié)合全局、局部判別器損失函數(shù)得到最終的損失函數(shù)為
其中,Lg(x)為全局原始圖像自編碼器損失,Ll(x)為局部原始圖像自編碼器損失,為全局判別器自編碼器損失,為局部判別器自編碼器損失,Lg(G(z) )為全局生成數(shù)據(jù)自編碼器損失,Ll(G(z))為局部生成數(shù)據(jù)自編碼器損失,本文根據(jù)上述損失函數(shù)通過Adam 梯度優(yōu)化算法更新模型參數(shù),優(yōu)化模型。
本文實驗平臺是Windows 10 64 位操作系統(tǒng),Python3.6 基于Tensorflow 框架的編程環(huán)境,Intel 3.8 GHz CPU,內(nèi)存16GB。采用香港中文大學的開放數(shù)據(jù)CelebA數(shù)據(jù)集,總計202599張圖片,每個圖像均有多項屬性注釋。由于CelebA 數(shù)據(jù)集中圖像分辨率為178×218,本文先將CelebA 數(shù)據(jù)集預處理為128×128 的圖像,預處理后的數(shù)據(jù)集只包含人臉,使用其中100000 張圖像訓練,10000 張圖像驗證,10000 張圖像測試,剩余的作為訓練樣本,總迭代次數(shù)為60,批大小為128,本文將殘缺區(qū)域大小固定為32×32 而位置隨機進行訓練,通過比較不同的深度學習方法的修復效果以驗證殘缺圖像的恢復效果。
為了驗證本文的殘缺人臉圖像修復方法較其他的深度學習方法具有更好的細節(jié)修復效果和身份特征相似性,將本文實驗結(jié)果和DCGAN[15],PM[16],CA[17]算法修復效果進行對比,殘缺區(qū)域選擇左眼和左側(cè)嘴部,比較結(jié)果如圖4和圖5所示。
圖4 左眼殘缺圖不同修復方法效果對比
圖5 嘴部殘缺圖不同修復方法效果對比
在圖4 和圖5 中,第1 列為原始人臉圖像,第2列為待修復的殘缺圖,第3 列為DCGAN 算法的修復效果圖,第4 列為PM 算法的修復效果圖,第5 列為CA 算法的修復效果圖,第6 列本文修復算法的效果圖??梢钥吹?,DCGAN 算法由于難以平衡生成器和判別器的訓練過程,穩(wěn)定性差,且是簡單的利用低分辨率特征反卷積得到高分辨圖像,修復結(jié)果中的掩膜邊界非常明顯,不僅色彩上有較大差異,殘缺區(qū)域的銜接也明顯不協(xié)調(diào),PM算法屬于非訓練方法,通過尋找最為相似的圖像塊實現(xiàn)修復,該算法匹配原始像素能力較強,但得到的修復效果圖較為模糊,還原細節(jié)能力較差,CA 算法結(jié)合生成對抗網(wǎng)絡和自注意力模塊,恢復圖像明顯更加清晰,但仔細觀察發(fā)現(xiàn)除了細節(jié)修復效果欠佳,不夠真實,而本文修復算法引入了全尺度跳躍連接,生成器提取了全尺度下的細粒度和粗粒度語義,修復效果清晰,細節(jié)修復較CA算法有明顯提升,幾乎找不出缺陷的痕跡,并且損失函數(shù)引入身份特征一致性損失,使得修復圖與原圖身份特征信息幾乎一致,修復結(jié)果和原圖更像是同一個人。
為修復方法的客觀比較采用峰值信噪比PSNR和結(jié)構(gòu)相似性標準SSIM 兩個指標。PSNR 用來衡量圖像之間的像素值差異,圖像之間PSNR 值越大,表示越相似。SSIM 用于估計兩張圖像之間的整體相似性,SSIM 值越接近1,圖像結(jié)構(gòu)越相似。詳細結(jié)果如表1和表2所示。
表1 左眼殘缺圖不同修復方法的PSNR和SSIM
表2 嘴部殘缺圖不同修復方法的PSNR和SSIM
從表1、表2 可以看出對比GCGAN,PM,CA 算法,本文算法在CelebA 數(shù)據(jù)集上實驗的殘缺人臉圖像修復結(jié)果無論是峰值信噪比還是結(jié)構(gòu)相似度都更優(yōu)。
本文針對殘缺人臉圖像的修復,提出一種基于BEGAN 改進的人臉圖像修復方法。其中,生成器采用類似U-net 編解碼器網(wǎng)絡結(jié)構(gòu),在U-net 結(jié)構(gòu)中簡單跳躍連接基礎(chǔ)上引入嵌套、密集的跳躍連接以增強不同尺度特征圖的語義結(jié)合,判別網(wǎng)絡采用全局判別器和局部判別器的雙重判別方式,優(yōu)化區(qū)域不協(xié)調(diào)以及語義不一致問題,基于BEGAN 對抗損失、重構(gòu)損失、身份特征一致性損失作為聯(lián)合損失函數(shù)以獲得和原始圖像更相似的修復圖像。對比PM、CA 算法在相同的人臉數(shù)據(jù)測試集上的修復結(jié)果,本文的修復結(jié)果的主客觀評價效果都更好。
本文輸入圖像的殘缺區(qū)域都是規(guī)則的方形,然而實際應用中,圖像殘缺區(qū)域形狀都是隨機的,因此,下一步將針對隨機生成的不規(guī)則殘缺區(qū)域來提高模型在實際應用中修復效果。