雷 蕾,郭東恩,2,靳 峰
(1.南陽理工學院 軟件學院,河南 南陽 473000;2.重慶郵電大學計算機科學與技術學院計算智能重慶市重點實驗室,重慶 400065)
圖像修復屬于圖像復原領域,是數字圖像處理和計算機視覺中的一個重要研究方向。圖像修復主要是對圖像上損壞或者缺失的部分根據像素變化的規律進行填充,從而恢復圖像原始面貌[1]。早期的圖像修復技術源于文藝復興時期對藝術作品的修復,隨著各類學科的不斷發展,人們對修復圖像在視覺感知、紋理結構和語義理解上有了更高的要求。計算機硬件設備以及深度學習等相關技術的不斷發展,派生出一系列通過深度學習方法來進行圖像修復的算法,這類算法的核心在于訓練一個深度神經網絡來獲取受損圖像和原始圖像之間的非線性映射。在眾多基于深度學習的圖像修復算法中,基于生成對抗網絡(Generative Adversarial Network,GAN)的修復算法在修復效果上取得了較大進展,修復圖像具有良好的主、客觀評價,因此該算法受到國內外學者的廣泛關注。
本文提出基于譜歸一化條件生成對抗網絡的圖像修復算法,利用條件生成對抗網絡修復彩色圖像,并引入譜歸一化約束判別網絡參數梯度的Lipschitz上界,可間接提高修復網絡的修復能力。此外,從理論上分析譜歸一化,將判別網絡參數梯度的Lipschitz 上界約束為1,通過實驗來驗證該算法能夠獲得較好的修復結果和梯度收斂。
圖像修復算法大致可分為基于擴散的方法、基于紋理合成和基于深度學習的方法。基于擴散的方法是一種古老、經典的方法,包括變分和偏微分算法。這類算法能夠較好地修復圖像損失的細節,適用于小尺寸缺失的圖像修復[2-3],但更多時候僅限于老、舊照片的修復及去除文字水印等。基于紋理合成的方法適用于修復大尺寸缺失的圖像[4-5],這類方法也稱為基于補丁的修復方法[6-7],原理在于通過使用一個較大的圖像數據庫來進行查詢填充,然后從匹配的圖像中復制相應的區域并將它們粘貼到對應缺失部分來完成圖像修復。此外,研究人員還提出了結合變分偏微分與紋理合成的算法,稱為基于圖像分解的修復方法[8-9],通過將已損壞的圖像分解為大尺度缺失和小尺度缺失的部分,然后對這兩部分缺失區域分別采用基于變分偏微分方程的修復算法和基于紋理合成修復算法進行修復。
基于深度學習的修復方法通過訓練深度神經網絡來學習受損圖像與原始圖像之間的非線性映射關系。卷積神經網絡(Convolutional Neural Network,CNN)在圖像識別和特征學習方面具有較大的優勢,和其他的深度神經網絡相比,它能更好地學習到圖像的2D 結構和隱含特征,因此有學者利用卷積神經網絡實現圖像修復[10-13]。生成對抗網絡[14]的出現,對圖像修復是一個很大的促進。GAN 模型被定義成一個two-player 的博弈游戲,目的在于生成一個與真實數據接近的分布。訓練過程是將隨機低維噪聲z輸入到生成器G中,然后生成器G輸出高維樣本G(z),判別器D判斷給定樣本是來自于真實的數據分布還是生成器產生的生成分布,G和D都被參數化為深度神經網絡。據此,基于GAN 的圖像修復算法優化過程也可以被參數化為一個最小化最大化問題,即:

其中,pr(x)和pg(x)分別表示真實圖像分布和修復圖像分布,E(·)表示離散型分布期望值,m表示掩碼圖像,用于仿真受損圖像。
基于GAN 的圖像修復算法[15]于2016年由PATHAK 等人提出,主要是利用加權重建損失和對抗損失來修復圖像。該方法可以生成新的內容和修復缺失較大的區域,克服了基于紋理合成和基于變分偏微分方程的局限性,但是并沒有考慮到局部連續性。STAOSHI 等人提出GL 模型[16]解決了這個問題,但該模型訓練時間長,網絡參數多,并且該模型的判別網絡包含兩個判別器,均沒有對其判別性能進行約束。在高維空間中,判別網絡的密度比估計在訓練期間通常是不準確和不穩定的[17],因此生成網絡通常無法有效學習目標分布的多模結構。此外,當生成分布的支撐集和真實數據分布的支撐集不相交時,存在一個能夠完全區分生成分布與真實數據分布的判別網絡[18]。在這種情況下判別網絡判別性能“太強”,將會導致生成網絡相對于輸入的偏導為0,使得生成網絡訓練完全停止。因此,需要約束判別網絡的性能,使之在短時間內不能被訓練得“太好”。考慮到基于生成對抗網絡的圖像修復算法中判別性能不可控,當缺失部分較多、失真較大時修復結果缺乏局部一致性等問題,本文通過引入譜歸一化和類別輔助信息到生成對抗網絡中,提出基于譜歸一化條件生成對抗網絡的圖像修復算法,稱為SN-CGAN。
本文提出的SN-CGAN 算法與CE 算法相比能夠獲得更好的修復圖像,修復圖像具有較強的局部一致性,與GL 模型相比,SN-CGAN 模型訓練時間更短,穩定性更強,從根本上避免了梯度消失的問題,與CA 模型相比,SN-CGAN 模型中判別網絡性能可控,能夠加速修復網絡訓練,間接地提高了修復網絡的修復性能,進一步提高修復圖像質量。
本文提出的SN-CGAN 算法模型首先引入類別輔助信息來約束特征生成,保證修復圖像的內容接近原始圖像的內容,然后將判別網絡中的標準歸一化[18]替換為譜歸一化[19],進一步約束判別網絡的判別性能,使之在訓練過程中不被訓練得太快,從而提高修復網絡的修復性能,最后引入擴展卷積算子[20]來對待修復圖像的每個像素進行操作,進一步解決修復圖像缺乏局部一致性的問題。如圖1 所示,修復網絡采用常見的編碼-解碼結構,編碼器利用7 個卷積層來減少圖像分辨率并學習圖像特征,并運用4 個擴展卷積層(Dilated1~Dilated4)[20]在不改變卷積核數量情況下通過特征映射傳播卷積核,擴展每一層的輸入區域。

圖1 SN-CGAN 算法模型示意圖Fig.1 Schematic diagram of SN-CGAN algorithm model
假設2 維卷積層處理一個C通道h×w的特征映射得到的結果為C'通道h'×w'的特征映射,那么針對每個像素的擴展卷積算子可以表示為:

本文提出的修復模型由修復網絡、局部判別網絡和全局判別網絡三部分組成。修復網絡用于修復受損圖像缺失的部分以達到修復圖像的目的,局部判別網絡用于判別局部修復部分與局部真實部分的真偽,而全局判別網絡則對整個原始圖像和修復圖像的真偽進行判別,通過聯合訓練修復網絡以及局部、全局判別網絡,以此來保證修復圖像的全局-局部一致性。
內容損失用來提高修復圖像的質量,減少真實圖像與修復圖像之間的失真。內容損失包括像素方均方誤差損失(pixel-wise Mean Square Error,pMSE)、視覺感知損失(perception loss)[21]和全變分損失(Total Variation loss,TV)3 個部分。
pMSE 損失是圖像處理中廣泛使用的一種代價損失函數,常用于快速圖像修復、圖像超分辨及圖像盲復原等,基于pMSE 的損失函數可表示為:

盡管利用pMSE 代價函數通常能夠產生較高的PSNR 值,但修復圖像往往缺乏高清細節,容易導致紋理結構過度平滑,造成較差的視覺感知。因此,利用視覺感知損失代價[21]來獲取視覺上滿意的修復結果,視覺感知損失定義如下:

其中,φi,j表示預訓練VGG19 網絡[22]中第i個最大池化層之前及第j個卷積層后(激活之后)獲得的特征圖,IO和II分別表示原始圖像和待修復圖像,Wi,j和Hi,j表示VGG 網絡中各特征映射的維度。
已有文獻證明了在圖像修復過程中,全變分損失能夠較好地抑制噪聲。因此,本文引入全變分損失來抑制圖像的噪聲,全變分損失定義為:

利用內容損失代價函數能夠減少修復圖像與原始圖像的失真,盡管引入了視覺感知損失來保證視覺感知效果,但修復結果的高頻細節依然比較缺乏。本文提出條件對抗損失來獲取修復圖像的高頻細節。
文獻[23]證明了原始的生成對抗網絡[14]是不穩定的,容易出現梯度消失的問題,并提出利用Wasserstein 距離度量[24]替換原始生成對抗網絡中的Kullback-Leibler 散度。因此,式(1)也可以表示為:

對抗損失驅動修復網絡通過“愚弄”判別網絡來生成符合原始圖像流形結構的特征。為使得修復圖像更好地接近原始圖像,引入類別輔助信息來限制圖像特征生成[25]。根據所有訓練樣本N在判別網絡上的概率定義條件對抗損失:

其中,l表示類別輔助信息,G表示修復網絡,D表示判別網絡,包含局部判別網絡D1和全局判別網絡D2。因此,式(7)可以進一步表示為:

其中,θd1和θd2分別表示局部判別網絡和全局判別網絡的參數,II1和II2分別表示圖像待修復區域部分和整體待修復圖像。式(8)中沒有包含譜歸一化的相關范式,因為譜歸一化式子僅在判別網絡中利用譜范數來對權重矩陣進行歸一化。
通過引入超參數α、β和λ與上述損失函數相結合,得出本文算法的整體代價函數為:

式(9)中的超參數均用來權衡各個損失之間的比例。不難證明式(9)是一個多參數的非凸函數,直接對這類函數進行求解是一個NP 難問題。因此,采用隨機梯度方法和交替迭代的策略進行參數學習,令批次大小m=64。具體的學習算法步驟如算法1 所示,算法1采用Adam 優化器[26]進行優化。當所有網絡交替訓練好后保存修復網絡,即能修復受損圖像。
算法1SN-CGAN 算法
輸入真實圖像集X,隨機掩碼圖像M,標簽類別L
輸出修復網絡G,局部判別網絡D1,全局判別網絡D2
步驟1對真實圖像集和標簽進行采樣,獲得分批圖像和標簽。
步驟2對每一批圖像中的每一張圖像添加隨機掩碼,獲得仿真的受損圖像。

步驟8利用梯度下降方法來更新修復網絡。
重復步驟1~步驟8,直到梯度收斂或達到預設的訓練次數結束訓練,保存模型。
本文通過引入譜范數來歸一化判別網絡中的權重矩陣,進一步約束其判別性能。假設判別網絡為:

其中,θ:={W1,W2,…,WL-1,WL}為判別網絡的參數集(以全卷積為基礎),且al(1≤l GAN 常用的歸一化如WGAN-GP 中的權重限制,它通過使用L:hin→hout來漸進地約束每一層,以此控制可微函數的Lipschitz 上界。 根據定義,Lipschitz 范數可以表示為: 其中,σ(A)是矩陣A的范數。對于線性層L=Wh,歸一化過程可以表示為: 根據Lipschitz 不等式,即: 可以獲得判別網絡的上界||f||Lip為: 當數據分布的重疊空間位于實際樣本空間和生成的樣本空間之間時,WGAN-GP[27]中的權重剪切效果很好,但該約束條件將判別網絡的Lipschitz 上界確定為常數c,限制了其應用范圍。其他的歸一化方法如基于F范數或L范數的歸一化,減少了奇異值(平方)的總和,即對輸入擾動不敏感的模型是有效的,但由于訓練好的權重矩陣W都能對該方向上的梯度進行操作,因此訓練好的模型可能會丟失關于輸入的重要信息。相反,譜歸一化僅關注最大的奇異值,并且每個訓練好的權重矩陣W在與第一奇異向量正交的方向上并不顯著地收縮。因此,譜歸一化能夠較好地控制判別網絡的判別性能。 為驗證所提算法的有效性和可行性,利用兩個自然圖像數據集來進行仿真實驗。使用Python 3.6基礎編譯語言和Chainer 編譯框架,模型使用“四核Intel?CoreTMi-76850K CPU @3.6 GHz”處理器和4 塊“NVIDIA Titan V”的硬件環境。 實驗選擇StreetView 和Places2 兩個數據集:1)StreetView 數據集是一個由Google 建立的超過20 個國家5 000 個街道的景觀數據集,該數據集圖像像素變化明顯,紋理結構清晰,圖像分辨率為128 像素×128 像素;2)Places2 數據集包含超過400 個場景種類,總計超過100 000 張自然圖像,該數據集含有128 像素×128 像素的低分辨(Places2)和256 像素×256 像素的高分辨圖像(Places2-H),這些圖像均符合人類視覺認知的準則。 參考CE 和GL 算法的訓練方式,在本文實驗過程中,將數據集以7∶2∶1 的比例劃分為訓練集、測試集和驗證集。訓練過程隨機選取數據集中每個類別的70%圖像進行訓練,訓練完成后隨機選擇10%的圖像進行交叉驗證來確定參數。式(9)中的超參數α、β和λ用來平衡各個損失之間的比例,在實驗中并不設置固定的值,而是將這3 個超參數的取值范圍設置為[10-6,102],在驗證集上采用步長為10 的交叉驗證方法來自適應地確定具體的值。得到最優參數后,再利用剩余20%測試集中的圖像進行測試。與CE 算法訓練固定中心缺失塊不同,本文訓練任意位置大小為[64,128]的隨機塊。訓練次數為12 萬次,批次大小n=64。采用Adam 優化器進行優化,并設置衰減系數β1=0.9 和β2=0.99。 本文算法屬于基于生成對抗網絡的圖像修復算法,根據對修復圖像的評估發現,基于深度學習的算法在效果上優于基于擴散和基于紋理合成的方法,而在基于深度學習的方法中,基于生成對抗網絡的修復算法性能較好,可擴展性較強和使用范圍較廣。因此,最終實驗結果也與這類算法進行比較。近年來,研究人員提出了4種基于深度神經網絡的修復模型:即CE模型[15]、GL 模型[16]、CA 模型[17]和Pconv 模型[28]。前3 種模型基于生成對抗網絡,適用于修復規則缺失塊,Pconv 基于U-Net網絡結構,訓練難度大,對硬件設備要求高,因此本文主要對比前3 種模型。 評價指標主要包含主觀和客觀評估,前者用于評價修復圖像的自然度,實驗過程中邀請3 位觀察者獨立地對修復圖像的自然度進行判斷,給每位觀察者出示100 張圖像,觀察者判斷100 張圖像中原始圖像和修復圖像的數量。在客觀評價方面,首先選擇常用的圖像評價方法PSNR 和SSIM,然后利用分片Wasserstein距離[27](Sliced Wasserstein Distance,SWD)、Inception分數[29](Inception Score,IS)、流形距離[30](Frechet Inception Distance,FID)、GAN-train和GAN-test[31]對修復圖像的流形結構進行評價。 CE 模型[15]主要修復中心缺失圖像,缺失部分的大小是固定的。首先對比本文算法和CE 算法在中心缺失受損圖像的修復結果,如圖2 所示。其中,第1 行圖像選自StreetView 數據集,第2 行選自Places2數據集,第3 行選自Places2-H 數據集。 圖2 中心缺失圖像的修復結果Fig.2 Inpainting result of center missing images 由圖2 可以看出,從視覺感受角度出發,本文算法修復中心缺失圖像效果明顯優于CE 算法。隨著圖像大小增加,CE 算法的修復結果有所下降,而所提算法修復中心缺失受損圖像獲得較好的修復效果。為擴展實驗范圍,將GL 算法和CA算法在隨機缺失圖像上進行實驗對比,結果如圖3所示。 圖3 隨機缺失圖像的修復結果Fig.3 Inpainted results of randomly missing images 從圖3 可以看出,本文算法與CA 算法修復受損圖像效果都較好,單從視覺感受角度出發,已無法區分其差別。本文引入譜歸一化來約束判別網絡性能,為進一步評價本文算法和對比算法的性能,對梯度收斂情況進行分析,結果如圖4 所示。由于GL 算法是基于CE算法的,并且它在訓練穩定性和梯度收斂性均優于CE算法,因此這部分實驗只對比GL 算法和CA 算法。 圖4 梯度收斂性分析Fig.4 Gradient convergence analysis 從圖4 可以看出,本文算法的梯度收斂性明顯好于GL 算法和CA 算法。對比圖4(a),本文算法在訓練過程中判別網絡的梯度行為較好,梯度收斂后無明顯抖動。對比圖4(b),本文算法修復網絡的梯度行為較好,一直處于下降狀態,并且梯度沒有消失。 在全局判別網絡中,當梯度趨近于某個穩定的值后,本文算法沒有出現梯度抖動現象,原因在于引入了譜歸一化來約束判別網絡參數的Lipschitz 上界。在局部判別網絡中也能得到類似的結果,實驗結果證明了譜歸一化在訓練判別網絡過程中起著積極的作用。 圖像客觀評價指標較多,首先計算大量修復圖像的平均PSNR 和SSIM 值來對修復算法進行客觀分析。為客觀地比較增減幅度,本文定義增減量化準則,以PSNR 值增幅為例可表示為: 其中,PSNR1表示對比算法修復圖像的PSNR 值,PSNR2表示所提算法修復圖像的PSNR 值。在3 個數據集上進行測試的平均PSNR 值和SSIM 評價值如表1、表2 所示。 表1 不同算法在3 個數據集上的PSNR 值Table1 PSNR values of different algorithms on three datasets 表2 不同算法在3 個數據集上的SSIM 值Table2 SSIM values of different algorithms on three datasets 從表1 可以看出,在所有的數據集中,破損圖像經過4 種算法修復后,本文算法與CA 算法修復的圖像PSNR 值最高。對比CE 算法,PSNR 值漲幅為9.0%~16.2%,對比GL 算法,PSNR 值漲幅為6.0%~9.1%。對比CA 算法,PSNR 漲幅為0.1%~2.3%。為評估修復圖像紋理結構,利用SSIM 來對修復圖像進行評價,結果如表2 所示。從表2 可以看出,本文算法與CA 算法修復的圖像SSIM 值較高。對比CE 算法,SSIM 值漲幅為9.40%~10.5%,對比GL算法,SSIM 值漲幅為6.04%~9.3%,對比CA 算法,SSIM 值漲幅為0.0%~1.0%。除了利用PSNR 與SSIM 評價指標,從大數據量和流形結構評估的角度出發,引入SWD、IS、FID、GAN-train 和GAN-test 對修復網絡的修復性能進行評價。其中,GAN-train 和GAN-test 是在VGG19 分類網絡上進行訓練獲得,結果如表3~表5 所示。 表3 不同算法與StreetView 數據集的流形結構評價值Table 3 Manifold structure evaluation value of different algorithms and StreetView dataset 表4 不同算法與Places2 數據集的流形結構評價值Table 4 Manifold structure evaluation value of different algorithms and Places2 dataset 表5 不同算法與Places2-H 數據集的流形結構評價值Table 5 Manifold structure evaluation value of different algorithms and Places2-H dataset SWD 和FID 等評價指標主要用來評價數據集之間的流形結構相似性,SWD、FID 評價值越小,表示數據集之間的流形結構越相似,而IS、GAN-train 和GAN-test 評價值越大,表示數據集之間的流形結構越相似。從表3~表5 可以看出,對比3 種算法,本文算法獲得的流形結構相似度評價最高,說明該算法較好地保持了修復圖像數據集與原始圖像數據集的流形結構相似性。 綜合上述客觀評價指標,可以得出本文算法在修復效果、梯度收斂、判別網絡性能控制以及保持原始數據集與修復數據集之間的流形結構方面,均取得較好的結果。 為綜合評價修復圖像的質量,邀請觀察者對修復圖像的自然度進行主觀評價,結果如圖5 所示。 圖5 修復圖像自然度評估結果Fig.5 Naturalness evaluation result of inpainted image 從圖5 可以看出,本文算法修復受損圖像能獲得較高的圖像自然度,相比CE 算法、GL 算法和CA算法分別提高了19.2%、6.4%和1.6%。 與CE、GL 和CA 算法在主、客觀評價方面的綜合對比結果顯示,本文算法在流形結構保持、判別網絡性能控制方面具有優越性。此外,對本文算法的變體模型進行研究,明確該算法中損失組成部分的作用。變體算法包括:未使用pMSE 損失的變體算法SN-CGAN-P,未使用TV 損失的變體算法SNCGAN-T,未使用視覺感知損失的變體算法SNCGAN-V,未使用標簽信息的變體算法SN-CGAN-L及未使用譜歸一化的變體算法SN-CGAN-S。在StreetView 數據集上流形結構相似度、PSNR 和SSIM值的評價結果如表6、表7 所示。 表6 變體算法流形結構保持評價結果Table 6 Manifold structure preservation evaluation results of variant algorithm 表7 變體算法的PSNR 和SSIM 評價結果Table 7 PSNR and SSIM evaluation results of variant algorithms 視覺感知損失用來獲取良好的視覺感知、提高主觀評價和解決過度平滑問題。因此,表6 中該項損失對流形結構保持有積極的作用。pMSE 損失用來減少修復圖像與原始圖像之間的失真,TV 損失能抑制圖像修復過程中產生的噪聲。從表7 可以看出,未引入pMSE 損失和TV 損失時,PSNR 和SSIM值均有所下降。 條件生成對抗網絡[25]是通過引入數據標簽來提高合成圖像的質量,而本文則引入標簽來約束圖像特征生成,從而保證修復內容與原始圖像之間的內容保持。此外,引入譜歸一化約束判別網絡的判別性能,進一步提高了修復網絡的修復能力。根據對判別網絡中參數的Lipschitz 上界理論分析,并結合圖5 和表6、表7 可以看出,譜歸一化對控制判別網絡的判別性能、間接提高修復網絡的修復能力以及保持修復圖像數據集的流形結構有重要作用。 基于變分偏微分和紋理合成等傳統圖像修復算法無法產生大批量修復圖像。為此,本文提出一種基于譜歸一化條件生成對抗網絡的圖像修復算法,基于生成對抗網絡修復算法解決判別網絡性能不可控以及缺失部分較多、失真較大時修復結果缺乏局部一致性等問題。實驗結果表明,該算法在主觀感受和客觀評價上優于SN-CGAN-P、SN-CGAN-T 等對比算法,較好地實現了破損圖像與原始圖像之間的非線性映射。下一步將該學習框架引入到盲復原領域中,學習模糊圖像與真實圖像之間的映射關系,以實現運動模糊或散焦模糊圖像的復原。



4 實驗結果與分析
4.1 數據集與參數設定
4.2 對比算法與評價指標
4.3 修復結果主觀評價



4.4 量化分析







4.5 算法分析


5 結束語