馮 浪,張 玲,張曉龍*
(1. 武漢科技大學計算機科學與技術學院,武漢430065; 2. 武漢科技大學大數(shù)據科學與工程研究院,武漢430065;3. 智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室(武漢科技大學),武漢430065)
(*通信作者電子郵箱xiaolong.zhang@wust.edu.cn)
圖像修復一直是圖像處理領域中的熱點,是利用某種規(guī)則或方法,通過圖片已知區(qū)域信息來推斷缺失區(qū)域內容并將其修復補全的技術[1]。這一技術被廣泛應用于消除場景元素[2]、文物藝術品保護、超分辨率重建和圖像拼接等方面,具有重要的學術價值和應用價值。要做好圖像修復工作,需要解決幾個問題。首先,在圖像修復過程中,要保持圖像紋理結構的連續(xù)性,盡可能接近或達到原始圖像的效果;其次,補全結果要真實自然,符合人們的視覺連貫性,讓觀察者認為這是一張真實的圖像[3]。
傳統(tǒng)圖像修復方法適合補全背景較為單一的破損圖片,通常做法是在已知背景區(qū)域中選取與缺失區(qū)域較為相似的塊[4]來填充未知區(qū)域的內容,但是這種方法無法生成新的特征結構,而且當圖片場景較為復雜、缺失區(qū)域較多的情形下會得到極差的修復效果。近期的深度學習方法雖然能夠處理場景較為復雜的破損圖片,但是當破損區(qū)域較大時,很難估計缺失區(qū)域的細節(jié)信息,從而導致修復結果出現(xiàn)結構扭曲[3]、紋理模糊和內容不連貫[5]等問題。
針對這些問題,本文提出了一種基于擴張卷積的圖像修復方法。在本文的方法中,圖像的紋理結構信息作為約束信息輸入到網絡中訓練。該方法利用生成對抗網絡的思想,構建了一個由全局到局部的網絡模型來完成圖像修復工作,網絡模型主要由生成網絡和對抗網絡兩大部分組成。生成網絡包括全局內容修復網絡和局部細節(jié)修復網絡,首先利用全局內容修復網絡獲得一個初始的內容補全結果,之后再通過局部細節(jié)修復網絡對獲得的初始結果在局部上進行紋理細節(jié)修復。對抗網絡由SN-PatchGAN 鑒別器構成,用于評判圖像修復效果的好壞。
本文研究的問題是圖像修復,主要工作如下:1)提出了一個從全局到局部的圖像修復模型,先從全局角度上補全破損圖片的缺失區(qū)域,再對補全的圖片從局部上進行細節(jié)修正,解決了圖像修復過程中可能會出現(xiàn)的紋理模糊及結構扭曲等問題;2)通過在生成網絡中使用gated 卷積及擴張卷積,增大了卷積神經網絡感受野的大小,解決了傳統(tǒng)卷積神經網絡無法較好地補全大面積不規(guī)則缺失區(qū)域的問題,并提升了圖像修復的質量;3)在圖像修復過程中,利用紋理信息作為圖像修復的輔助信息,有效地解決了傳統(tǒng)修復方法出現(xiàn)的紋理模糊問題。
現(xiàn)有的圖像修復方法分為以下三類:一類是基于偏微分方程的圖像修復技術;一類是基于樣本的紋理合成圖像補全技術;最后一類是基于生成對抗網絡的圖像修復技術。
Bertalmio 等[1]首 次 提 出 基 于 偏 微 分 方 程 的BSCB(Bertalmio-Sapiro-Caselles-Bellester)模型。該模型通過延伸圖像缺失邊界的等照度線方向,以像素點為基本單位,向缺失區(qū)域擴散已知圖像的拉普拉斯特征,通過不斷的迭代修復,從而達到圖像補全的目的。但是在圖像修復的過程中,需要求解一個三階非線性偏微分方程,這種計算就算放在電腦計算能力已經顯著提升的今天也是非常耗時的,而且修復的圖像邊界有非常明顯的模糊區(qū)域。Chan等[6]在BSCB算法上改進,提出了一種基于全變分模型的圖像修復方法,但該模型并不能很好地從主觀上滿足圖像視覺連通性[7]要求。Lu 等[8]在全變分模型的基礎上,分析圖片局部特征,提出了快速修復圖片的ATV 模型。為加快算法修復速度,Telea[9]提出了快速進行算法(Fast Matching Method,F(xiàn)MM)。徐黎明等[10]提出了一種基于八鄰域的自適應高階變分圖像修復算法,解決了傳統(tǒng)偏微分方程圖像修復算法信息利用不夠充分的問題。
Criminisi 等[4]于2003 年提出的Criminisi 算法是最為經典的紋理合成方法,隨后Criminisi 等[11]于2004 年對該算法進一步改善。這種算法的核心思想是先計算缺失邊緣樣本塊的修復優(yōu)先級,然后在圖像已知區(qū)域中尋找與當前修復優(yōu)先級最高的樣本塊最為匹配的塊作為填充,之后再更新其余缺失邊緣樣本塊的優(yōu)先級,通過不斷的迭代填充,從而實現(xiàn)圖像的修復補全;但由于它是以一種貪婪的方式對已知樣本塊進行搜索,與目標樣本塊進行匹配,修復結果可能會出現(xiàn)結構斷裂、修復效果模糊等情況。由于該方法以樣本塊為基本修復單位,大大地提升了圖像的修復速度,因此引起專家的廣泛關注,許多國內外研究專家開始基于該算法進行改進。Cheng等[12]改進了計算破損邊緣樣本塊修復優(yōu)先級的方法;Xu等[13]引入圖像結構稀疏算法,達到了較好的修復效果;Le Meur等[14]用結構張量確定樣本塊的修復優(yōu)先級;Sun 等[15]采用人工交互的方式,使得補全結果邊緣更加清晰和平滑,視覺效果更為連貫;在相似性度量上,Xue 等[16]根據顏色比率梯度直方圖構建了一種新的相似度量規(guī)則,提高了搜尋匹配塊的精確度。
最近,隨著深度學習的迅猛發(fā)展,基于卷積神經網絡的圖像處理方法[17]得到越來越廣泛的應用。
Pathak 等[18]于2016 年提出一種上下文編碼器(context encoders)結構的神經網絡用來修復圖片。該方法雖然能夠很快地生成修復結果,但是結果缺乏紋理細節(jié),在孔洞邊緣會產生明顯可見的痕跡,而且當修復高分辨率圖像時,很難去計算訓練時的生成對抗損失,因此具有局限性。為解決這個問題,Yang等[19]引入圖像風格遷移[20]的思想,提出了一種聯(lián)合圖像內容和紋理約束的圖像修復算法。該方法雖然能取得較好的修復效果,但是當圖片場景復雜時,修復結果會不連續(xù)甚至違背真實。
Liu 等[21]在類似U-Net 結構的網絡模型上引入部分卷積的思想來修復破損圖片。雖然該方法能夠修復任意破損區(qū)域的圖片,但是當缺失區(qū)域較大時,修復的結果會帶有明顯的邊界信息,同時缺失區(qū)域中央可能帶有模糊的灰度特征,并不能很好地捕獲原圖的全局和局部特征。Iizuka 等[3]將缺失圖片和對應的掩碼作為網絡的輸入,引入擴張卷積的思想增大感受野,分別定義全局和局部鑒別器來計算補全結果和原圖的整體一致性和局部一致性。該方法可以補全圖片的任意缺失區(qū)域,但是網絡訓練周期過長,有些結果的補全區(qū)域可能會與原圖不協(xié)調,無法滿足觀察者的視覺連貫性,需要對修復結果進行后處理,而且當未知區(qū)域細節(jié)信息缺失過多時,會得到一個極差的補全結果。
受全局和局部鑒別器啟發(fā),Yu 等[5]提出了由粗到精的網絡模型,該模型首先通過粗網絡補全圖片的缺失區(qū)域,再通過細網絡細化修復結果的紋理。該方法可以較好地補全圖片多個矩形缺失區(qū)域的內容,但是當擴展到修復圖像不規(guī)則缺失區(qū)域的工作上時,會得到較差的補全結果。
本文設計的圖像修復網絡模型如圖1 所示,主要包括生成網絡和對抗網絡兩部分。生成網絡包括全局內容修復網絡和局部細節(jié)修復網絡,用來修復圖片缺失區(qū)域的內容。其中,全局內容修復網絡主要用于獲得一個初始的內容修復結果x1,局部細節(jié)修復網絡的目的是對獲得的初始結果在局部紋理細節(jié)上進行修正,以期得到更加自然的修復結果x2。對抗網絡由SN-PatchGAN 鑒別器組成,以最終修復結果、掩碼和紋理信息作為網絡輸入,用于評判圖像修復效果的好壞。
圖1 本文設計的圖像修復網絡模型Fig. 1 Image inpainting network model designed in this paper
網絡模型的輸入包含兩個內容:破損圖片以及圖片對應的紋理信息。其中,圖像紋理信息作為輪廓約束用于缺失區(qū)域的內容估計。在網絡模型訓練時,本文使用OpenCV 中的canny邊緣檢測器生成對應的紋理特征圖作為紋理約束信息;在測試時,本文使用Nazeri 等[22]已訓練好的紋理估計模型生成缺失區(qū)域的紋理特征圖作為紋理約束信息。
為了與生成網絡輸入保持一致,并方便后續(xù)計算損失函數(shù)以及重構修復結果,本文將全局內容修復網絡和局部細節(jié)修復網絡補全結果的像素矩陣都歸一化到[-1,1],同時生成網絡中所有卷積都采用gated卷積[23]的方式。
網絡的輸入和各階段修復結果如圖2 所示。其中,(a)為破損圖片,(b)為破損圖片對應的紋理信息,(c)為利用破損圖片和紋理信息重構的網絡輸入,(d)為全局內容修復網絡的補全結果,(e)為局部細節(jié)修復網絡的補全結果。
圖2 網絡的輸入和各階段修復結果Fig. 2 Input of the network and inpainting results at different stages
全局內容修復網絡主要用于獲取圖片的全局特征,修復缺失區(qū)域的內容信息,生成一個初始的修復結果。由于使用普通卷積的思想無法修復圖片不規(guī)則缺失區(qū)域[3]的內容,這也是圖像修復領域的難點。為解決這個難題,Liu等[21]提出了部分卷積的思想,只響應網絡中的有效輸入,使得網絡在每一次卷積之后自動更新掩碼。但這種方法只是單純地把所有像素分為有效像素和無效像素兩種,當前過濾器中有一個有效像素和多個有效像素對于更新下一層的掩碼并沒有什么差別,而且由于它無法與額外的用戶輸入兼容導致其沒有可擴展性。
為解決這個問題,在構建生成網絡時,本文使用gated 卷積[23]代替?zhèn)鹘y(tǒng)卷積方式。該方法能夠從數(shù)據中自動學習掩碼,可以針對每個通道和每個空間位置,使得網絡可以學習一種動態(tài)特征選擇機制。gated卷積[23]定義如式(1)所示:
其中,W、V為兩個不同卷積核的權重,b、c分別為對應卷積核的偏置,φ可以是任意激活函數(shù),σ是sigmoid激活函數(shù)。
全局內容修復網絡包括13個卷積層、4個擴張卷積層和2個反卷積層,其具體參數(shù)如表1所示。網絡中使用到4層擴張卷積,通過逐層增大感受野大小的方法來獲得更好的修復結果。
表1 全局內容修復網絡參數(shù)Tab.1 Global content inpainting network parameters
通常,卷積核個數(shù)越多,提取的圖片特征信息越多,圖像修復的效果越好,但網絡的復雜度也在增加,容易出現(xiàn)過擬合的問題。本文通過實驗比較,最終將生成網絡的卷積核基數(shù)設置為48。
與全局內容修復網絡對應,局部細節(jié)修復網絡中同樣使用4 層擴張卷積用于增大感受野的范圍,從而顯著地提升圖像修復質量。不同的是,在局部細節(jié)修復網絡模型中,還引入了內容感知層[5]用于保證圖片的局部一致性。其核心思想是,從圖片已知背景區(qū)域中提取多個3×3 大小的塊作為前景區(qū)域(補全區(qū)域)的卷積核,通過并行地計算余弦相似度選取比較像前景區(qū)域的若干個塊,再使用softmax 的方法對這些塊打分,選取評分最高的塊,并以此反卷積出前景區(qū)域的內容,從而精細模糊的修復結果。
全局修復網絡用來把握圖片的全局特征,主要包括6 個卷積層和4個擴張卷積層,其具體網絡參數(shù)如表2所示。局部修復網絡用來把握圖片的局部特征,主要包括8個卷積層和1個內容感知層,其具體網絡參數(shù)如表3所示。通過一個concat函數(shù)將這兩者提取的特征信息融合在一起,以此細化全局內容修復網絡的結果,最后通過反卷積的方法得到局部細節(jié)修復網絡補全結果。concat 連接部分主要包括7 個卷積層和2個反卷積層,其具體網絡參數(shù)如表4所示。
表2 全局修復網絡參數(shù)Tab.2 Global inpainting network parameters
表3 局部修復網絡參數(shù)Tab.3 Local inpainting network parameters
表4 concat層網絡參數(shù)Tab.4 Network parameters of concat layers
SN-PatchGAN 鑒別器以修復結果、掩碼和邊緣信息作為網絡輸入,由6 個卷積核大小為5×5,步長為2 的卷積層構成,輸出維度為(輸入圖像長度/32)×(輸入圖像寬度/32)×256 的特征圖,其網絡具體參數(shù)如表5 所示。通過這6 層卷積,輸出特征圖上感受野的大小已經可以覆蓋整個輸入圖片,因此不再需要一個全局鑒別器來評判圖像修復效果的好壞。
表5 鑒別器網絡參數(shù)Tab.5 Network parameters of discriminator
本文使用Adam 優(yōu)化器來訓練生成對抗網絡。其中設置alpha 的值為0.000 2,設置beta1 的值為0.0,設置beta2 的值為0.9。
給定一張破損圖片,由于缺失區(qū)域的不確定性,只要修復效果足夠平滑,可能會生成多個可行的結果。但是用戶想要的不僅僅是符合人們整體視覺連貫性的補全結果,更重要的是獲得和原圖內容盡可能一致的修復結果。因此需要定義損失函數(shù)來約束補全結果,讓其盡可能朝著原圖的方向靠攏。
整個網絡的損失函數(shù)包括l1重構損失和生成對抗損失。通過超參數(shù)搜索的方法,最終確定這兩大損失在整個損失函數(shù)中的權重占比為1∶1。
l1重構損失包含原圖與全局內容修復網絡及局部細節(jié)修復網絡補全結果的l1損失,其定義如式(2)所示:
其中:Igt代表原圖,Ix1表示全局內容修復網絡生成的結果,Ix2表示局部細節(jié)修復網絡補全的結果;α是權重因子,通過超參數(shù)搜索的方法確定其值為1.2。
本文受SN-GAN 啟發(fā),發(fā)現(xiàn)使用光譜歸一化[24]的方法,不僅可以迅速穩(wěn)定地訓練生成對抗網絡,還能夠獲得更為精細的修復結果。為鑒別補全結果的真實性,實驗使用生成對抗損失用于評判圖片修復效果的好壞,其定義如式(3)所示:
其中:D表示對抗網絡,G代表生成網絡,LD代表網絡的對抗損失,LG表示網絡的生成損失,z表示破損圖片,x是原圖。
本文在Places2[25](256×256)訓練集上訓練圖像修復模型,在Places2驗證集上進行測試。網絡具體的訓練流程如算法1 所示。每次訓練時,從訓練集中隨機抽取batchsize張圖片,為這batchsize張圖片生成黑白掩碼,將這batchsize張原圖和batchsize張黑白掩碼重構組合生成破損圖片。掩碼中的黑色區(qū)域作為破損圖片的已知區(qū)域,保留原圖對應區(qū)域的像素信息,掩碼中的白色區(qū)域成為破損圖片的缺失區(qū)域,重構的掩碼圖片即為破損圖片。掩碼的生成過程如算法2 所示。其中maxVertex、maxLength、maxBrushWidth、maxAngle是控制掩碼生成的4個超參數(shù)。
本文在Places2[25](256×256)數(shù)據集上訓練圖像修復模型并基于該數(shù)據集和現(xiàn)行的其他圖像修復方法做了對比實驗。該數(shù)據集包括3 個獨立的場景圖像數(shù)據集:訓練集(1 800 000幅)、測試集(328 500 幅)和驗證集(36 500 幅)。Places2 數(shù)據集最初用于場景分析,但由于其細節(jié)信息豐富,最終被廣泛應用于圖像修復領域。
實驗基于Chainer V6.0.0rc1 框架,CUDNN V7.0,CUDA V9.0,單塊Tesla V100-SXM2 GPU 的環(huán)境訓練網絡模型。網絡迭代訓練250 000步,設置batchsize的大小為8。
訓練階段在Places2訓練集上進行。本文使用canny邊緣檢測器提取圖像的紋理特征作為紋理信息,設定canny 函數(shù)閾值1的大小為100,閾值2的大小為300。如圖3所示,(a)為隨機抽取的訓練集圖片,(b)為canny 邊緣檢測的結果,(c)為破損圖片,(d)為使用Nazeri等[22]邊緣預測模型估計的缺失區(qū)域紋理。
圖3 提取圖像的紋理特征Fig. 3 Extracting texture features of images
測試階段在Places2 驗證集上進行。給定一張破損圖片,首先利用Nazeri等[22]預訓練好的邊緣預測模型為圖片缺失區(qū)域生成邊緣信息,再將帶有邊緣信息的圖片輸入到本文設計的網絡模型中進行修復。
本文基于Places2 驗證集和其他現(xiàn)有的圖像修復方法做了一些對比實驗,如圖4 所示。部分卷積方法在Places2 數(shù)據集上進行訓練,訓練過程中使用的掩碼基于Liu 等[21]提出的不規(guī)則掩碼數(shù)據集。內容感知[5]方法是基于矩形掩碼在Places2 數(shù)據集上訓練。從圖4 可以發(fā)現(xiàn),本文方法要優(yōu)于部分卷積[21]和內容感知[5]的修復結果,一方面因為使用gated 卷積[23]學習一種動態(tài)的特征選擇機制;另一方面因為引入邊緣信息作為缺失區(qū)域的輪廓約束。使用部分卷積[21]方法修復的結果往往會帶有明顯的邊界信息,出現(xiàn)修復效果模糊的問題,產生這一問題的根本原因在于部分卷積對掩碼的更新類似于腐蝕的操作,當前過濾器中有一個有效像素和多個有效像素對于更新下一層的掩碼沒有什么差別。使用內容感知[5]方法修復的結果同樣也帶有明顯的邊界信息,不能夠很好地捕捉已知區(qū)域的全局和局部信息,原因在于該模型的主要用途是補全多個矩形缺失區(qū)域的內容,當它擴展到修復圖片不規(guī)則缺失區(qū)域內容的工作上時,就會出現(xiàn)上述問題。
圖4 Places2驗證集上的比較Fig. 4 Comparisons on validation dataset Places2
由于實驗使用的圖片分辨率較低,用戶可能無法從視覺上觀察到補全區(qū)域與原始圖片對應區(qū)域之間的細節(jié)差異,且用戶評判圖像修復效果的主觀性過強,因此需要一些指標作為評判圖像修復效果好壞的客觀標準。為此,使用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)、結構相似性(Structural SIMilarity,SSIM)和Inception 分數(shù)(Inception Score,IS)指標作為評價標準,在Places2 驗證集上測試本文提出的模型,同時和其他現(xiàn)有的圖像修復方法做對比,其比較結果如表6所示。
表6 不同方法修復效果對比Tab.6 Comparison of inpainting effects of different methods
PSNR是使用最為廣泛的一種圖像客觀評價指標,是基于對應像素點間的誤差。給定一個大小為m×n的干凈圖像I和噪聲圖像K,均方誤差(Mean Squared Error,MSE)的定義如式(4)所示,PSNR的定義如式(5)所示。其中為圖片可能的最大像素值,如果每個像素都由8 位二進制來表示,那么該值就為255。
結構相似性(SSIM)指標基于樣本x和y,分別從亮度l(x,y)、對比度c(x,y)和結構s(x,y)三方面度量圖片的結構相似性。l(x,y)的定義如式(6)所示,c(x,y)的定義如式(7)所示,s(x,y)的定義如式(8)所示,SSIM的定義如式(9)所示。將α,β,γ設為1,SSIM 的公式如(10)所示。其中,μx為x的均值,μy為y的均值,為x的方差,為y的方差,σxy為x和y的協(xié)方差,c1,c2,c3是3個不為0的常數(shù)。
IS(Inception Score)是利用google 的inception 模型來評估GAN 生成圖像的多樣性評估指標。的定義如式(11)所示,DKL(P‖Q)的定義如式(12)所示,IS的定義如式(13)所示。將生成器生成的N張圖片x輸入到Inception V3 中,將輸出1 000維的向量y。其中,P(y|x)表示x屬于各個類別的概率分布。
PSNR 的值越大,圖像失真越?。籗SIM 的值越高,圖像結構信息保持得越完整;IS 的值越低,圖像質量越高。從表6 可以發(fā)現(xiàn),用本文方法修復的結果要明顯優(yōu)于部分卷積[21]方法和內容感知[5]方法修復的結果。
在Places2 驗證集上測試對比后,本文還做了用戶調查,一共邀請10 名用戶來評判補全結果的真實性。只有這10 名用戶都認為補全結果是真實圖片,圖片才被判定為真實的,否則會被判定為虛假圖片。由本文方法修復的圖片,33.6%的圖片被用戶認為是真實的;由部分卷積[21]方法補全的圖片,10.4%的圖片被用戶判定為真實的;由內容感知[5]方法修復的圖片,4.8%的圖片被用戶評判為真實的。由此可見,使用本文方法得到的修復結果能更好地滿足人們的視覺連貫性。
本文提出了一種基于擴張卷積的圖像修復方法,網絡模型由生成網絡和對抗網絡兩大部分組成。在開展圖像修復工作時,首先利用其他方法獲取缺失區(qū)域的紋理信息,之后將獲得的紋理信息作為紋理約束放入到生成網絡中訓練圖像修復模型。生成網絡引入擴張卷積的思想,通過增大感受野的方法來顯著提升圖像修復的質量;通過引入gated卷積[23]和內容感知[5]的思想,確保圖片的全局和局部一致性;對抗網絡由SN-PatchGAN 鑒別器組成,用于評判圖像修復效果的好壞。最后,通過在Places2驗證集上和其他現(xiàn)有圖像修復方法做對比實驗,證明了本文方法的可行性和有效性。
后續(xù)會借鑒Nazeri 等[22]的思想,將獲取缺失區(qū)域紋理信息和修復缺失區(qū)域內容這兩個過程聯(lián)系在一起,使之成為一個連續(xù)的過程,并將該技術應用于消除圖片多余場景上。此外,由于本實驗缺少UI 界面,后期會通過搭建PyQt5 平臺,動態(tài)地模擬和展示破損圖片的修復過程。