楊 云 曹 真 齊 勇
(陜西科技大學電子信息與人工智能學院 陜西 西安 710021)
如今,以圖像為代表的視覺信息影響著人們的日常生活。由于年代久遠、保存不當等許多原因,許多珍貴的圖像出現不同程度的破損,導致圖像中的重要信息無法得到表達,為后續工作帶來一定困難。為此,亟需圖像修復技術補全圖像。
圖像修復技術指通過一定的方法恢復或重建帶有缺失區域的缺損圖像,具有非常廣泛的應用領域,包括:醫學影像修復、人臉圖像修復、老照片修復、天文觀測圖像修復等。除此之外,其技術思想還可以擴展到圖像去模糊、圖像去雨等領域用于提高圖像質量。人臉圖像作為個人信息的重要表達方式,景色圖像作為領略美景的重要方式,保證其完整非常重要。
隨著深度學習在圖像修復領域的飛速發展,其在面對大面積缺失的圖像修復任務中展現出強大的修復能力。生成對抗網絡模型由于可以擬合出更加真實的樣本備受青睞。Pathak等[1]提出一種基于上下文內容編碼器的圖像修復算法,首先利用編碼器解碼器網絡學習圖像待修復區域的紋理信息并進行填充,然后在預修復網絡的基礎上添加判別器提高修復細節,實現了優于非深度學習方法的修復效果,但其存在訓練不穩定問題導致修復結果不切實際。此方法打開了使用生成對抗網絡進行圖像修復任務的大門,隨后衍生出一系列基于生成式對抗網絡的圖像修復模型,主要分為噪聲型修復方法與端到端修復方法兩大類。
其中,噪聲型修復模型代表性研究為Raymond等[2]提出的使用深度卷積生成對抗網絡模型進行圖像語義修復任務,首先預訓練一個生成能力突出的DCGAN模型,然后通過感知損失、內容損失約束模型生成器生成與缺失圖像相近圖像,截取修復塊與缺失圖像融合從而補全缺失圖像,實現了優于上下文編碼器網絡的修復效果。李雪瑾等[3]在Raymond提出方法基礎上改進Sigmoid函數,成功預測圖像缺失區域信息。但噪聲型修復模型存在訓練不穩定以及結果不可控的問題,且二步修復過程帶來時間過長問題。
噪聲型模型修復過程時間過長,效果較差,因此,目前基于生成對抗網絡的圖像修復模型趨于端到端一步修復模型[6]。Iizuka等[4]提出一種全局與局部雙判別器圖像修復模型,針對原始單判別器模型修復效果不足的問題,增設局部判別器追蹤圖像局部待修復區域。Li[5]等提出雙判別器生成對抗網絡結構與相似塊搜索算法結合的方法。Mao等[7]提出編碼器解碼器跳躍連接結構。雖取得不錯修復效果,但部分細節信息無法被精確還原。從本質上看對于生成器約束不足,修復結果存在不確定性,輸出結果往往無法精確還原出原始圖像的類別特征、內容特征、風格特征。同時,針對于GANs訓練不穩定問題并未引入改進策略解決,使得模型訓練較為困難。
為此,本文提出多角度約束生成對抗網絡(Multi-Angle GAN,MAGAN),在雙判別器模型基礎上增設分類器和Vgg19特征提取網絡,利用分類器向生成器引入類別損失約束,利用Vgg19特征提取網絡向生成器引入內容、風格損失約束,利用反向傳播方法向生成器提供標志性信息梯度輔助生成器更新參數。同時,將譜歸一化和Wasserstein距離方法引入判別器設計中,以穩定模型訓練,輔助生成器完成更優的修復結果。
初始GANs判別器設計存在一個普遍性缺陷,即訓練不穩定問題。因此,從模型結構以及目標函數角度進行改進。WGAN從損失函數角度解決GANs訓練不穩定問題,其提出使用Wasserstein距離改進模型的目標函數替換JS散度衡量標準,使得模型在訓練過程趨于穩定。WGAN判別器損失函數如下:
D_loss=Ex~pdata(x)[D(x)]-Ex~pnoise(x)[D(x)]
(1)
式中:pnoise(x)為生成樣本集合;pdata(x)為真實樣本集合;E表示期望。
同時,其提出判別器的參數矩陣需要滿足Lipschitz條件模型即可穩定訓練,Lipschitz條件定義為限制函數變化的劇烈程度。Lipschitz條件的含義定義如下:

(2)
式中:D(x)為判別器的映射函數,若D(x)定義域內任意兩點x1、x2的斜率都不大于一個固定常數L,此時D(x)滿足Lipschitz條件。
Miyato等[8]提出譜歸一化理論從模型架構角度解決GANs訓練不穩定問題。主要思想是通過限制判別器參數矩陣使得判別器設計滿足Lipschitz連續性。判別器網絡可以看作是多層遞歸神經網絡疊加,當輸入x時,假設不使用激活函數和偏置b,則輸出為:
Dn=Wn×Wn-1×…×W1×x
(3)
對于判別器中的任一層網絡,其參數矩陣譜范數定義如下:

(4)
式中:σ(W)表示矩陣W的最大奇異值,也即譜范數;WT為矩陣W的轉置矩陣;μ表示矩陣W的最大奇異值對應的特征矢量。結合式(2)-式(4)可得:
(5)
譜歸一化即讓參數矩陣除以參數矩陣譜范數,以達到歸一化目的。此時,參數矩陣數值比例不會被破壞,也滿足Lipschitz條件,具體如下所示:
(6)
式中:fSN(W)表示判別器參數矩陣W經譜歸一化理論處理后結果值,L為常數。對判別器進行譜歸一化處理,相當于對判別器添加限制,使其擁有合理的判別能力,為生成器提供更多梯度信息,從而穩定模型訓練。
生成對抗網絡(GANs)是一種引入二人零和博弈理論的生成模型,其主要思想是通過對抗學習來訓練網絡學習真實樣本的數據分布,近年來在圖像處理領域發揮著重要作用。GANs由生成模型與判別模型兩部分構成。生成對抗網絡目標函數如下:
Ez~pnoise(z)[ln(1-D(G(z)))]
(7)
式中:E表示期望;pnoise(z)表示隨機噪聲分布集合;pdata(x)表示真實樣本集合。利用生成式對抗網絡做圖像修復任務主要分為兩大類:噪聲型圖像修復方法和端到端型圖像修復方法。
1.3.1噪聲型圖像修復方法

(8)


圖1 噪聲型模型結構圖
1.3.2端到端型圖像修復方法
端到端型圖像修復方法的模型基礎為以缺損圖像作為輸入的生成對抗網絡。傳統單判別器生成對抗網絡模型無法滿足圖像修復的修復效果,局部待修復區域還原效果較差。從模型設計來看,模型不存在追蹤圖像局部區域信息的結構。為此,雙判別器模型通過增設局部判別器追蹤圖像局部待修復區域,有效提升了修復準確度。較于單判別器的端到端圖像修復模型,雙判別器模型有效還原了圖像的紋理和內容信息,輸出結果更加具備語義性。但由于對生成器的訓練過程約束不足,使得修復結果會出現特征表示不足問題,修復結果無法將缺損區域信息全部表征出來。圖像缺失區域恢復過程需要圖像各方面的指示信息,對于生成器的約束過少會導致重建結果出現錯誤類別、錯誤內容以及風格特征,修復效果不佳。端到端型圖像修復模型結構如圖2所示。

圖2 端到端型模型結構圖
圖3給出了本文算法的功能流程。向模型輸入待修復圖像,首先利用前向計算,得到修復完成圖,然后利用損失函數計算修復完成圖與原圖之間的差異,最后通過反向傳播向模型各層傳遞誤差,從而優化模型參數。

圖3 MAGAN算法流程
本文提出一種多角度圖像修復模型MAGAN,從圖像類別特征、內容特征以及風格特征入手,解決原有圖像修復方法存在的圖像修復結果特征信息表示不足問題。針對于修復結果缺少類別特征指示,通過添加預訓練好的分類器進行指示;針對于修復結果缺少風格特征以及內容特征指示,通過預訓練好的Vgg19特征提取網絡進行指示。形成類別、內容以及風格損失項添加至生成器損失中。Multi-angle GAN模型整體結構如圖4所示。

圖4 Multi-angle GAN模型整體結構圖
2.2.1生成器
生成器為帶有空洞卷積的U-net型全卷積網絡,由卷積塊、空洞卷積塊、上采樣塊構成。其中每一個卷積塊由卷積層(Conv)、批歸一化層(Batch normalization)和ReLU激活層構成;每一個空洞卷積塊由空洞卷積層、批歸一化層和ReLU激活層構成;每一個上采樣塊由反卷積層、批歸一化層和Leaky_ReLU激活層構成。最初始一層卷積層卷積核尺寸為5×5,剩余卷積層卷積核尺寸為4×4 和3×3交替設計,共15層設計。空洞卷積層卷積核尺寸為3×3,卷積采樣間隔由2、4、8倍增,共5層設計。空洞卷積的存在使得不增加卷積核尺寸的情況下,增大卷積的感受視野,使得輸出的特征圖包含信息更豐富。生成器輸入帶有二進制掩模的缺損圖像,輸出修復完成圖。通過L1損失、類別損失、內容損失、風格損失、對抗損失約束生成器產生合理結果。其中L1損失公式如下:
(9)
式中:R代表原始圖像;P代表修復完成圖;Rij表示原圖第i行第j列像素值。此處,L1損失用于衡量兩幅圖像同位置像素的差異。
2.2.2分類器
分類器有助于生成器的生成結果具有合理的類別特征信息。通過一組預先確定的類別在原始數據集上訓練分類器并保存模型參數。將網絡結構與生成器網絡進行拼接,實現模型分類能力。在輔助生成器修復圖像過程中,參數不再更新。分類器為編碼器結構,由卷積塊、最大值池化層和全連接層構成。其中卷積塊由卷積核尺寸為3×3,滑動步長為1的卷積層,ReLU激活層構成,共4塊設計,最大值池化層滑動窗口大小為2,滑動步長為2。每一個卷積塊后跟一層最大值池化層,最終通過全連接層并使用Softmax分類層輸出預測分數。使用交叉熵損失L訓練分類器,其公式如下所示:
(10)
式中:L代表真實標簽;P代表預測值。首先將原圖輸入至分類器中,得到原圖預測分數值,然后以原圖預測分數為標簽,將修復完成圖輸入至分類器中,利用交叉熵公式求取類別損失Lclass添加至生成器損失中。
2.2.3Vgg19特征提取網絡
Vgg19特征提取網絡有助于生成器的生成結果具有合理的風格、內容特征信息。使用預先訓練好的Vgg19特征提取網絡,將其與生成器網絡進行拼接,實現網絡的特征提取能力。同樣,Vgg19特征提取網絡在生成器修復圖像過程中,參數不變。Vgg19由卷積核尺寸為3×3的卷積層,池化窗口尺寸為2×2的最大值池化層,ReLU激活層以及全連接層構成其網絡結構。對于內容損失,將修復完成圖在conv1_2與conv2_2中提取的特征圖與對應真實圖像特征圖進行比較,對于風格損失,將conv4_3卷積層與conv5_3卷積層中提取的特征圖與對應真實圖像特征圖進行比較。其中內容損失函數定義如下:
(11)
式中:R代表原始圖像;P代表修復完成圖;l表示網絡層。內容損失用于衡量原圖與修復完成圖在同一卷積層中所有特征圖的內容差異。
Gatys等[10]在圖像風格遷移領域使用捕獲紋理特征的特征空間來表示圖片的風格。特征空間包含了圖片經過卷積神經網絡后每一卷積層提取的多個特征圖之間相似性。這種相似性用Gram矩陣進行衡量,Gram矩陣中的元素使用特征圖兩兩做內積求取。因此Gram矩陣可以用于表征圖像的紋理、顏色信息等風格特征。Gram矩陣定義如下:
(12)

(13)
式中:原始圖像Gram矩陣與修復完成圖計算公式相同。將原始圖像與修復完成圖輸入Vgg19特征提取網絡,得到各自的分數。使用式(9)-式(10)計算兩者的內容損失和風格損失添加至生成器損失中。
2.2.4判別器
判別器用于判別修復完成圖的真實程度,多尺度判別可以保證圖像生成質量更高。若只使用全局判別器,則圖像部分細節判斷不準確,因此通過添加局部判別器追蹤圖像細節部分。
局部判別器由卷積塊,全連接層構成,其輸入樣本維度為32×32。其中卷積塊由卷積核為5×5,滑動步長為2的卷積層,批歸一化層(Batch normalization)和Leaky ReLU激活層構成,共3塊設計。最后一層使用全連接層替換Sigmoid激活層。全局判別器輸入樣本維度為64×64,相較于局部判別器多添加一塊卷積塊,由于其針對圖像整體,因此需要更深的網絡層次進行特征提取。將局部判別器輸出與全局判別器輸出在通道(channel)維度進行拼接得到最終的預測輸出向量。
此時,判別器的卷積層設計中添加譜歸一化理論,調整判別器每一層的矩陣參數,提高修復完成樣本質量。同時引入Wasserstein距離改進GANs目標函數,以穩定模型的訓練。判別損失用于懲罰與原始樣本不相干樣本,生成更清晰、內容更豐富的樣本。判別損失如下所示:
Ladv=Ex~pdata(P)[D(x)]-Ex~pdata(R)[D(x) ]
(14)
式中:pdata(P)為修復完成圖集合;pdata(R)為原始樣本。
2.2.5總損失函數
通過上述介紹的損失約束,對模型總損失函數進行匯總,總損失函數如下:
Lall=λ1L1+λ2Lclass+λ3Lcontent+λ4Lstyle+λ5Ladv
(15)
式中:λ1-λ5為平衡不同損失的權重系數。
對于模型訓練過程可以分為以下五步:
1) 初始化模型權重。除預先訓練好的分類器和Vgg19網絡,對模型生成器和判別器的網絡層權重進行初始化。
2) 前向計算。向模型輸入待修復圖像,利用卷積層、池化層等網絡層學習圖像的特征,形成特征編碼矩陣,然后利用反卷積層等網絡層解碼特征編碼矩陣,輸出修復完成圖。
3) 計算誤差。利用總損失函數計算修復完成圖和其對應原圖之間的誤差損失。
4) 反向傳播,更新參數。將第3)步計算得到的誤差損失反向傳遞到模型各層,通過誤差回傳,更新模型參數。
5) 保存參數。循環執行第2)步-第4)步,直至模型收斂且模型輸出的誤差小于最小誤差。此時停止訓練并保存模型參數。
利用訓練好的MAGAN模型補全圖像,向模型輸入待修復圖像,輸出修復完成圖。
本文算法的軟件編程方式在PyCharm編譯器上實現,使用Python語言和TensorFlow框架實現MAGAN模型的搭建。模型整個訓練過程如算法1所示。
算法1MAGAN模型圖像修復訓練過程
輸入:原始樣本x,G,D,classifier,vgg19,λ1,λ2,λ3,λ4,λ5,epoch,batch_size,mask,α。
輸出:修復完成圖Completed。
1. i=0,j=0
2. for i in range(epoch)
//迭代周期
3. Step_num=x/batch_size
//一個周期迭代次數,x分為
//Step_num份,批樣本batch_x且其對應類別為batch_label.
4. I_batch=batch_x×(1-mask)+mask×255
//批量缺損樣本
5. for j in range(step_num)
//一個周期的迭代次數
6. g_completed=G(I_batch)
//全局修復結果
7. I_completed=g_completed×(1-mask) [y1:y2, x1:x2,:]
//局部修復結果
8. Lall=function1(batch_x,g_completed,batch_label)
//function1為式(15)
9. batch_local_x=(batch_x×(1-mask)+mask×255)[y1:y2,x1:x2,:]
//局部真實樣本
10. real=D(batch_x,batch_local_x)
//真實樣本分數
fake=D(g_completed,l_completed)
//虛假樣本分數
11. Dloss=function2(real-fake)
//function2為式(14)
12. 反向傳播更新生成器參數
13. 反向傳播更新判別器參數
14. end for
本次實驗的設備條件為Intel(R) Core(TM) i5- 8300HCPU,主頻為2.30 GHz,內存為16 GB的筆記本電腦,其操作系統為Windows 10和NVIDIA Titan XP GPU,顯存為12 GB。同時以PyCharm作為編譯器,使用Python語言和TensorFlow深度學習框架實現MAGAN模型的搭建。
本次實驗使用數據集為CelebA人臉數據集以及Places365-Standard數據集[9]中的outdoor場景數據集。其中CelebA是香港中文大學的開放數據集,其包含202 599幅178×218大小的RGB彩色人臉圖像,并且對每幅圖像做好了特征標記。將172 770幅圖像用作訓練集,15 917幅用作驗證集和13 912幅用作測試集,并且由于本文的主要任務是恢復人臉特征,因此去除圖片中不必要的背景信息避免影像修復結果,截取圖像的人臉部分并調整圖像尺寸為64×64作為模型輸入。其中Places365-Standard是MIT的開放數據集,使用其中名為outdoor的場景集,outdoor場景集包含6 000幅256×256大小的RGB彩色風景照,將5 000幅用作訓練集,900幅用作驗證集,100幅用作測試集,并調整圖像尺寸為64×64作為模型輸入。
對于CelebA人臉數據集,通過設置不同的總損失權重系數訓練模型,評估模型的性能,最終確定λ1為100,λ2為30,λ3為0.07,λ4為250,λ5為0.3,因為從測試結果看此時模型性能最佳。對于outdoor數據集,由于其不存在類別標簽,因此設置為0,只驗證其余損失項對模型性能的影響,并設置λ1為100,λ3為0.07,λ4為250,λ5為0.3,此時從測試結果看模型性能最優。同時,使用Adam動量梯度下降法求取模型的最優解,設置模型學習率為1e-3,一階動量項取值0.5,批量樣本尺寸為150,共訓練1 000個epoch并保存結果,此時,模型達到最初設置的最大迭代周期且總損失小于設定的最小值Emin。對2個數據集使用3種修復模型設置對比實驗,為了保證公平,所有模型設置相同的epoch。
3.2.1不同模型對比實驗
由圖5可以看到雙判別器模型(GLCIC)修復結果存在過于平滑、模糊等問題,總體上還原出原圖特征,但細節部分還原不足。對于基于DCGAN的語義修復模型,首先在訓練DCGAN模型時,出現模型崩潰問題,無法穩定訓練,通過引入譜歸一化與WGAN穩定了模型訓練,但修復結果過差,圖像細節無法被還原。Multi-angle GAN(MAGAN)從整體和部分細節還原出原圖特征,修復效果優于前兩者,雖然修復結果存在輕微噪聲,但從總體上是一種不錯的修復模型。

圖5 不同模型在CelebA數據集上修復效果對比
采用PSNR、SSIM來評價模型的修復效果,結果如表1所示。

表1 不同模型修復效果對比
圖6給出了不同模型在outdoor數據集上實驗結果,可以看到GLCIC模型輸出結果存在模糊問題。DCGAN模型輸出結果過差,部分還原結果不具備語義性。MAGAN模型輸出結果從整體還原出圖片信息,與原始圖像相似度較高,但也存在部分細節還原不足,從總體上看是一種不錯的修復。

圖6 不同模型在outdoor數據集上修復效果對比
從評價指標PSNR、SSIM上量化三種模型的性能,具體指標值如表2所示。

表2 不同模型修復效果對比
3.2.2Multi-angleGAN(MAGAN)性能實驗
1) 輔助網絡實驗。為了驗證Multi-angle GAN的性能,本文在相同條件下訓練了分別應用分類器,特征提取網絡的多個模型。使用CelebA作為輔助網絡實驗數據并保持3.1節給出的模型訓練參數,此處只針對不同模型設計不同的損失函數。
其中在訓練分類器時,使用性別作為類別標簽,由于在CelebA數據集中,性別比例分布較為均勻。在訓練過程中使用訓練集訓練,驗證集檢驗準確率,及時調參,避免出現過擬合。其中訓練過程使用Adam優化函數,學習率為1e=3,批樣本尺寸為128。最終迭代10 000步停止訓練,此時訓練集的準確率為0.984。每200步計算一次測試集準確率,最終測試集準確率為0.952。
其中特征提取網絡使用預訓練好的Vgg19網絡模型。將網絡結構導入到本文模型中,并利用訓練好的權重進行訓練。性能驗證表如表3所示。

表3 Multi-angle GAN性能驗證設計
在相同條件下,每個模型設置訓練500個epoch,訓練完成并保存參數。針對同一幅圖片使用上述四種模型進行測試。從圖7各個模型修復結果可以看出,Net-Content模型修復結果存在修復結果較為模糊問題,Net-Style模型修復結果存在輕微噪聲問題,Net-Class模型修復結果存在細節特征還原不足問題,Net-All模型修復結果質量最優,精準還原出原始圖像的紋理與語義信息。

圖7 不同模型修復效果對比
同時,從評價指標PSNR、SSIM上量化四種模型的性能,具體指標值如表4所示。

表4 不同模型修復效果對比
2) 譜歸一化實驗。為了驗證譜歸一化對模型性能的影響程度,本文設計引入譜歸一化和不引入譜歸一化兩種模型進行比較。在相同條件下,每個模型設置訓練500個epoch,訓練完成并保存參數。針對同一張照片使用兩種模型進行測試。從圖8可以看到引入譜歸一化的With-SN模型整體還原效果更加逼真清晰。

圖8 不同模型修復效果對比
同時,從評價指標PSNR、SSIM上量化兩種模型的性能,具體指標值如表5所示。

表5 不同模型修復效果對比
圖像作為一種重要的視覺信息,保證其完整非常重要。圖像大面積破損使得圖像信息無法有效傳達,導致后續工作無法有序進行。本文提出一種針對大面積缺失區域的圖像修復模型(Multi-angle GAN),設計輔助網絡從不同角度約束模型生成器并引入譜歸一化與Wassertein GAN穩定模型訓練,實現了更優的修復效果。同時,盡管該模型部分修復結果存在輕微噪聲,但從整體與細節上還原出圖片紋理以及內容信息,是一種較為理想的修復模型。