王海涌 李海洋 高雪嬌
1(蘭州交通大學電子與信息工程學院 甘肅 蘭州 730070) 2(甘肅省人工智能與圖形圖像處理工程研究中心 甘肅 蘭州 730070)
圖像修復是一種利用擴散、紋理、機器學習等方法,將圖像中殘缺部分進行修復的技術(shù)。早期人們受到手工文物修復啟發(fā),Bertalmio等[1]提出BSCB(Bertalmio,Sapiro,Caselles,Ballester)模型,該算法利用圖像缺失處周圍信息及使用不同擴散策略例如轉(zhuǎn)化為微分求解等對圖像缺失處的信息進行補充。后來提出CDD (Curvature Driven Diffusions)模型,CDD[2]使用微分方程的同時建立圖像能量函數(shù),使函數(shù)最小化達到修復圖像的目的。擴散的方法[3]進行圖像修復,主要利用數(shù)學方法從完好區(qū)域向缺失區(qū)域擴散,對缺失區(qū)域進行修復。擴散方法存在修復后圖像模糊不清,不能夠?qū)^大缺失圖像進行修復。Barnes等[4]的PM(Patch Match)算法將圖像修復問題轉(zhuǎn)換為圖像梯度與補丁之間的距離問題。修復中隨機找到最佳匹配的Patch對缺失進行填充修復。由于PM修復過程中需要計算像素間的距離,因此修復方法對現(xiàn)有圖像特征依賴度較高。擴散的方法對缺失較大、紋理結(jié)構(gòu)復雜的圖像修復效果較差。同時修復后圖像存在紋理不佳、圖像不清晰的問題。
為了提高修復圖片質(zhì)量,使修復后的圖像紋理結(jié)構(gòu)更加清晰,產(chǎn)生了基于紋理結(jié)構(gòu)的缺失圖像修復方法。Efros等[5]提出使用紋理特征修復圖像細節(jié)區(qū)域的紋理合成方法。從圖像完整區(qū)域中提取紋理信息,處理得到高分辨率紋理信息,從缺失邊界向缺失區(qū)域使用高分辨率紋理信息進行修復。Criminisi等[6]從圖像中提取不同區(qū)域塊紋理信息,計算得到不同的優(yōu)先順序,使用最優(yōu)的紋理塊修復圖像。但是紋理復雜的圖像會出現(xiàn)不佳匹配,導致修復效果差。Simakov等[7]為了更好地定位和修復非靜態(tài)的視覺數(shù)據(jù),提出雙向補丁相似性的方法?;诩y理的修復方法,雖然提高了細節(jié)區(qū)域修復的效果,圖像紋理更符合視覺要求,但是也存在結(jié)構(gòu)扭曲、圖像模糊、修復后與原圖不一致的問題。
近來國內(nèi)外許多學者使用卷積神經(jīng)網(wǎng)絡(luò)和生成對抗網(wǎng)絡(luò)將圖像修復問題轉(zhuǎn)化為高級和低級像素合成問題的研究。Xie等[8]提出將深度網(wǎng)絡(luò)和稀疏編碼結(jié)合起來的疊加稀疏去噪自動編碼器對圖像進行修復。該方法能修復小區(qū)域缺失,但是在大區(qū)域缺失修復上表現(xiàn)較差。Pathak等[9]將對抗網(wǎng)絡(luò)應用在圖像修復領(lǐng)域,使用卷積編碼器解碼器網(wǎng)絡(luò)與生成對抗網(wǎng)絡(luò)共同訓練,實現(xiàn)圖像像素一致,生成修復圖像。但是該方法訓練過程不穩(wěn)定,存在修復區(qū)域缺失、生成不合理圖像的問題。Iizuka等[10]提出使用擴張卷積的思想修復圖像,利用破損圖像與對應掩碼,能夠?qū)Σ煌笮〉娜笔^(qū)域進行修復,但是該方法訓練時間較長,缺失較大時產(chǎn)生修復結(jié)果較差,修復網(wǎng)絡(luò)結(jié)構(gòu)比較深。Lin等[11]在全卷積網(wǎng)絡(luò)模型中使用部分卷積對圖像進行修復。但修復缺失部分易產(chǎn)生結(jié)構(gòu)缺失、修復邊緣痕跡明顯、缺乏連貫性等問題。Yu等[12]引入兩階段的圖像修復網(wǎng)絡(luò),結(jié)果粗修復細修復提高修復效果。Nazeri等[13]利用邊緣結(jié)構(gòu)和對抗網(wǎng)絡(luò)進行圖像修復。Xiong等[14]提出相似模型使用輪廓生成器結(jié)合生成對抗網(wǎng)絡(luò)進行圖像修復。輪廓生成器訓練產(chǎn)生缺失區(qū)域的可能輪廓信息,然后圖像生成器將生成的輪廓信息輔助缺失區(qū)域進行修復,生成最終結(jié)果。雖然多階段模型在圖像修復上表現(xiàn)出不錯的效果,但是也存在一些問題。串聯(lián)的結(jié)構(gòu)易受到一階段生成不合理結(jié)構(gòu)信息影響;多階段隨著模型加深,圖像結(jié)構(gòu)信息容易被弱化遺忘,修復過程中無法生成恰當結(jié)構(gòu)。
針對這些問題,本文在編碼解碼的生成對抗網(wǎng)絡(luò)修復基礎(chǔ)上提出一種嵌入結(jié)構(gòu)信息的級聯(lián)網(wǎng)絡(luò)修復算法。生成網(wǎng)絡(luò)采用由粗到細的兩級級聯(lián)方式,同時在生成階段嵌入結(jié)構(gòu)信息,幫助模型生成恰當?shù)慕Y(jié)構(gòu)信息,提高粗修復階段結(jié)構(gòu)修復效果。細修復階段使用多尺度的注意力機制提高圖片修復效果。并使用WGAN-GP(improved Wasserstein Generative Adversarial Networks)鑒別器,提高模型訓練過程的穩(wěn)定性。
Goodfellow等[15]提出了一個極小極大的雙人游戲生成對抗網(wǎng)絡(luò)GAN(Generative Adversarial Networks)。
GAN包含生成器、鑒別器兩個模型。生成器(Generator)從樣本中獲取分布生成數(shù)據(jù)。鑒別器(Discriminator)將生成圖像與真實圖像輸入用于判斷真?zhèn)?。GAN網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 生成對抗網(wǎng)絡(luò)模型
生成對抗的理想結(jié)果是生成模型生成出鑒別器無法判斷來源的圖片,生成器能以假亂真。訓練過程中通過最大化D,最小化G,交替迭代更新當Pdata=Pz時達到最優(yōu),GAN的目標函數(shù):
(1)
式中:x表示從真實數(shù)據(jù)Pdata獲取采樣值;從Pz先驗分布中獲取隨機噪聲的向量z;E表示期望。
從GAN提出以來出現(xiàn)了不同GAN變種,不同類型的GAN在某些方面具有突出的效果。為了改變原始GAN只能輸入噪聲的要求,實現(xiàn)特定條件圖像生成,產(chǎn)生了CGAN[16](Conditional Generative Adversarial Networks)網(wǎng)絡(luò)模型。為了使生成模型能夠更好地衡量兩個分布的散度,產(chǎn)生更優(yōu)秀修復效果,WGAN[17](Wasserstein Generative Adversarial Networks)使用Wasserstein距離代替了JS距離,但是同樣也面臨著訓練困難不易收斂、梯度消失等問題。為了解決模型難以訓練的問題,同時使網(wǎng)絡(luò)在訓練的過程中更加穩(wěn)定,并且能夠加快收斂速度,提高生成質(zhì)量,生成更好的樣本。WGAN-GP[18]在WGAN的基礎(chǔ)上通過施加梯度懲罰對1-Lipschitz進行限制,有效地解決了生成對抗網(wǎng)絡(luò)模型崩潰的問題。WGAN-GP鑒別器損失函數(shù)為:
L(D)=Ex~Pdata[D(x)]-Ez~Pz[D(G(z))]-
λEx~Ppenalty[(‖▽xD(x)‖2-1)2]
(2)
式中:▽x表示求D(x)梯度懲罰。在Pdata和Pz連線上采樣一點即為Ppenalty采樣點。重復該采樣操作得到x~Ppenalty集合。
在深度學習中已經(jīng)有許多關(guān)于學習空間注意力的研究。Jaderberg等[19]在解決對象分類問題中首先提出空間變換網(wǎng)絡(luò)的參數(shù)空間注意模塊,用于分類。該模型使用定位模塊,實現(xiàn)仿射變換到扭曲特征的預測。但是這個模型假定了一個全局變換,因此不適合補丁建模方面的注意力。Zhou等[20]使用外觀匹配相同物體的不同視圖,在新視圖合成中選擇哪些像素用以目標重建,用于生成判定。實驗證明在相同物體的匹配生成中是有效的,但是在背景區(qū)域生成效果比較差。Dai等[21]使用空間注意力,在訓練網(wǎng)絡(luò)的過程中使用卷積的變種能夠更好利用周邊信息,當需要從背景中獲取某些信息時,能夠獲取所需要特征信息,但是對于某些細節(jié)以及整體結(jié)構(gòu)這些方法仍然具有局限性。
由于圖像不同對細節(jié)樣式要求各不相同,在修復的過程中選擇合適大小的補丁較為困難。一般較大的補丁有助于保持樣式的一致,較小的補丁有助于背景特征映射。使用不同大小的注意力解決單一場景的匹配限制,因此本文使用多尺度的注意力模塊。為了實現(xiàn)缺失位置像素特征結(jié)構(gòu)與缺失周圍能夠匹配。在卷積的過程中使用缺失部位和其周邊信息進行匹配,并比較得到的每個像素的注意力得分,利用相應的得分重建具體周邊信息的缺失處圖像。
在周圍圖像中提取像素bx,y與缺失像素fx,y使用余弦相似性進行計算,修復過程中缺失位置和周圍環(huán)境不斷地進行移動在核為k的區(qū)域上下移動,并使用Softmax比較每個像素得分。對較高注意力得分區(qū)域進行反卷積重建,生成帶有周邊信息的缺失補丁。使用注意力能夠獲取周邊更多有用信息,豐富修復過程中的結(jié)構(gòu)漸變提高修復效果。通過不斷計算得到注意力得分,選擇最優(yōu)補丁并反卷積出修復區(qū)域注意力特征圖。公式為 :
(3)
式中:λ為常數(shù)。
將生成的特征圖和原始特征圖串聯(lián)起來,用φin、φatt1×1、φatt3×3表示。將特征輸入SENet (Squeeze Excitation Networks)模塊,通過全連接網(wǎng)絡(luò)fconv判斷當前圖像哪些細節(jié)是重要的,fSE輸出表示為:
φout=fconv(fSE(〈φin,φatt1×1,φatt3×3〉))
(4)
為了進一步獲取更多的特征信息,生成較為合適的圖像,設(shè)計使用的網(wǎng)絡(luò)模型包括修復網(wǎng)絡(luò)和生成對抗網(wǎng)絡(luò)。修復網(wǎng)絡(luò)由使用嵌入結(jié)構(gòu)信息和擴張卷積的粗修復網(wǎng)絡(luò)組成,細修復網(wǎng)絡(luò)使用多尺度注意力機制提高修復細節(jié)效果。修復時加入結(jié)構(gòu)信息,擴大修復視野,關(guān)注局部細節(jié)信息提高修復效果,使生成的圖像更加細膩真實。
將破損圖像輸入到網(wǎng)絡(luò)中,在粗修復過程中經(jīng)過卷積反卷積得到修復圖像。粗修復在不提高模型復雜度的前提下為了獲取更多信息使用擴張卷積擴大感受范圍,同時使用共享的生成器生成相應結(jié)構(gòu)信息,為圖像修復反卷積過程提供可能結(jié)構(gòu)提示。網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。模型輸入為H×W大小的彩色圖像,通過多次卷積操作將輸入圖像大小變?yōu)镠/4×W/4,反卷積得到粗修復結(jié)果。反卷積過程中嵌入多尺度結(jié)構(gòu)信息,為修復圖像提供先驗條件,學習圖像結(jié)構(gòu)特征并預測可能出現(xiàn)的結(jié)構(gòu),通過特征合并避免不恰當特征對修復結(jié)果產(chǎn)生的影響。
圖2 粗修復模型結(jié)構(gòu)
將粗修復輸出作為輸入,輸入到細修復網(wǎng)絡(luò)。為了提高細節(jié)修復效果,在細修復中使用多尺度文注意力機制獲取周邊有用信息提高修復效果。為了引入注意力模塊,在細節(jié)修復的過程中使用兩個并行編碼結(jié)構(gòu):上層的編碼器使用多尺度注意力機制學習輸入圖像待修復區(qū)域周邊細節(jié)信息,如紋理、色彩信息。下層編碼器利用擴張卷積學習破損區(qū)域的特征信息。最后將兩個編碼器匯集到單個解碼器進行反卷積操作輸出細修復結(jié)果。細修復網(wǎng)絡(luò)結(jié)構(gòu)模型如圖3所示。
圖3 細修復模型結(jié)構(gòu)
生成對抗網(wǎng)絡(luò)在最小化損失函數(shù)的過程中生成結(jié)果,利用鑒別器判斷生成結(jié)果的真假。在對抗訓練的過程中不斷反饋調(diào)節(jié),提升生成器生成效果。單鑒別器生成對抗模型雖然能夠修復圖像,但是也存在生成圖像效果差、與原始圖像不一致、模型不穩(wěn)定、訓練難以收斂的問題。針對這些問題本文算法在鑒別過程中使用局部與全局鑒別器,雙鑒別器判別模型。局部與全局鑒別器用于判斷圖像的局部與整體是生成的還是真實的,并通過不斷的對抗訓練提高局部全局鑒別器的判別能力,生成最優(yōu)的判別模型,提高圖像修復效果。鑒別模型結(jié)構(gòu)如圖4所示。
圖4 鑒別器模型結(jié)構(gòu)
為了使修復模型更加穩(wěn)定易于收斂,提高修復圖片質(zhì)量。模型損失函數(shù)由修復過程中的結(jié)構(gòu)損失、重構(gòu)損失和鑒別過程中對抗損失構(gòu)成。在粗修復細修復過程中,生成圖像與真實圖像之間使用pixel-wiseL1損失。
L1=Ex∈Pdata,z∈pinput‖x-G(z)‖1
(5)
式中:x為真實數(shù)據(jù);z為噪聲數(shù)據(jù);G(z)為生成圖像。為了找到所需要的結(jié)構(gòu)使用金字塔結(jié)構(gòu)損失來獲取結(jié)構(gòu)信息,并將結(jié)構(gòu)信息融合到粗修復網(wǎng)絡(luò)中。
(6)
(7)
式中:Pr為真實數(shù)據(jù);z為生成器輸入;G(z)表示生成器生成數(shù)據(jù);m=0表示缺少像素,其他位置時m=1;實驗中設(shè)置λ=10;⊙表示哈達瑪積。
綜上,整個模型損失函數(shù)為:
L=λ1L1+λ2L2+λ3L3
(8)
在實驗中不斷調(diào)測試節(jié)超參數(shù),其中λ1、λ2、λ3為不同損失因子。
實驗基于ubuntu 18.04下TensorFlow 1.14.0 框架、CUDNN V10.0、CUDA V10.0、單塊GeForce RTX 2080Ti GPU 的環(huán)境訓練網(wǎng)絡(luò)模型。網(wǎng)絡(luò)迭代訓練1 000 000次,設(shè)置batchsize為16。實驗在Places2數(shù)據(jù)集上驗證模型效果,并在相同環(huán)境下測試其他方法,將修復結(jié)果進行對比。Places2是一個含有不同環(huán)境的多場景數(shù)據(jù)集,能夠用在場景識別、圖像描述等領(lǐng)域。訓練前將Places2數(shù)據(jù)集中2 500 000幅256×256圖片使用Places2 flist進行劃分,生成訓練集和驗證集文件。其中訓練集包含1 750 000幅圖片,驗證集包含750 000幅圖片。實驗中設(shè)置缺失最大尺寸為128×128,訓練時對輸入模型場景圖片隨機生成缺失區(qū)域,將缺失區(qū)域與原圖合成缺失圖像作為輸入,輸入到網(wǎng)絡(luò)中進行訓練。
為了驗證本文算法在圖像修復上的有效性,將本文方法與其他三種深度學習圖像修復方法進行比較。首先驗證本文修復模型的效果,對不同類型不同缺失大小圖像進行修復;其次在本文實驗環(huán)境下重現(xiàn)其他修復方法,采用相同的實驗數(shù)據(jù)與步驟對比不同方法修復效果;最后使用客觀評價標準對各個方法進行比較,驗證本文方法有效性。為了展示本文修復算法效果,選擇在不同缺失大小、不同缺失類型的缺失圖像使用本文方法進行修復,修復效果如圖5所示。
圖5 本文模型修復結(jié)果
圖5展示了Places2中選擇的四個不同場景在不同區(qū)域、不同破損面積、不同破損類型的破損圖像修復效果。其中:第1列為原始圖像;第2列為不規(guī)則缺失圖像;第3列為修復后圖像,可以看出不規(guī)則邊界區(qū)域能夠較好地擬合整體結(jié)構(gòu);第4列為規(guī)則破損場景圖像;第5列為修復結(jié)果,可以看出修復圖像在整體的結(jié)構(gòu)、圖像完整性上有突出表現(xiàn)。
為了驗證本文方法比其他修復方法更有效,對比的過程中重現(xiàn)GL[10]、 CA[12]和EG[13]等方法。采用相同的實驗環(huán)境、訓練數(shù)據(jù)、測試數(shù)據(jù),對同一幅破損圖像進行修復。對比修復結(jié)果比較各個修復算法的差異,如圖6所示。
圖6 本文模型與其他模型對比
圖6是不同破損圖像使用本文算法與GL、CA和EG算法的修復效果比較。其中:第1列為原圖;第2列表示要修復的圖像;第3列表示GL算法修復結(jié)果;第4列表示CA算法修復結(jié)果;第5列表示EG算法修復結(jié)果;第6列表示本文算法修復結(jié)果??梢钥闯鯣L不能很好地擬合邊界導致邊界較為明顯,缺失區(qū)域內(nèi)部色彩差異較為明顯,修復效果比較差。CA修復填補區(qū)域出現(xiàn)顏色淡化與原圖差別較大。EG修復結(jié)果整體較好但是還會出現(xiàn)缺失部位修復細節(jié)不夠好。具體細節(jié)比較如圖7所示。
圖7 EG與本文模型對比
在不同缺失圖像修復結(jié)果對比中可以看出本文方法在修復邊界區(qū)域時能夠與邊界較好的擬合。缺失區(qū)域內(nèi)部紋理結(jié)構(gòu)和色彩與原圖更加接近。一方面嵌入結(jié)構(gòu)信息的細節(jié)修復能學習圖像結(jié)構(gòu)信息,提高紋理結(jié)構(gòu)的一致性,同時擴張卷積獲取更大的視野得到更多的邊界信息;另一方面在細修復的過程中使用多尺度注意力機制。修復結(jié)果整體結(jié)構(gòu)連貫同時生成的圖片質(zhì)量較高與原圖十分接近。
為了能夠更好驗證本文方法的有效性,本文使用客觀的評價方法對不同修復算法修復結(jié)果進行比較。圖像在經(jīng)過修復后會出現(xiàn)某些部位與原始圖像不同,為了衡量修復后圖像質(zhì)量,使用峰值信噪比 (Peak Signal to Noise Ratio,PSNR)表示對修復結(jié)果的滿意程度。PSNR越大代表失真越少,表明圖像越真實,修復效果越好。SSIM是對原圖與修復圖像從結(jié)構(gòu)、亮度、對比度三方面進行比較。SSIM數(shù)值在0至1范圍,大小反映圖像結(jié)構(gòu)完整性,數(shù)值越大結(jié)構(gòu)越優(yōu)秀,修復圖與原圖越相似。平均L1 loss 和PSNR用于在像素級測量兩幅圖像之間的相似性。本文對不同的修復方法在PSNR、 SSIM和平均L1 loss進行比較,對比結(jié)果如表1所示。
表1 結(jié)構(gòu)相似性對比
表1展示了本文算法與其他修復算法PSNR、 SSIM和Mean L1的對比結(jié)果。通過粗修復細修復中帶有多尺度結(jié)構(gòu)信息及擴展卷積的修復網(wǎng)絡(luò),不僅學習圖像結(jié)構(gòu)特征,而且擴大修復過程感受視野,獲取更多的圖像信息;在修復過程中使用多尺度注意力機制關(guān)注缺失區(qū)域細節(jié)信息,使生成的缺失區(qū)域圖像更加真實連貫。對比結(jié)果顯示本文修復方法在峰值信噪比、結(jié)構(gòu)相似性、平均L1損失上分別有不同提升。本文方法了提高修復質(zhì)量,修復圖片更加細膩,與真實圖片更加接近。
本文針對當前深度學習圖像修復領(lǐng)域存在的問題,提出分階段分步驟的圖像修復方法。在修復圖像過程中使用結(jié)構(gòu)嵌入并結(jié)合注意力機制提高修復質(zhì)量。鑒別過程中,同時使用局部與全局鑒別器進行鑒別,進一步提高模型修復圖像效果,使用WGAN-GP損失提升模型收斂速度加快訓練進程。最后對不同的深度學習修復方法在相同數(shù)據(jù)集上進行比較,并通過主客觀評價方法驗證本文算法的優(yōu)越性。