李 炬 黃文培
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院 四川 成都 611756)
數(shù)字圖像修復(fù)的目的在于對于圖像中缺失的信息進(jìn)行補(bǔ)全,滿足人眼對于更完整信息的追求,同時(shí)也要求修復(fù)后的結(jié)果令人難以察覺到任何異常。數(shù)字圖像修復(fù)技術(shù)可以應(yīng)用到多種實(shí)際場景中,例如許多舊照片可能會(huì)因?yàn)榇娣艜r(shí)間過于久遠(yuǎn)丟失了部分信息,或者因?yàn)榉狐S、褪色、沾染污漬或受到外部物理損毀變得模糊不清,這些照片可以通過轉(zhuǎn)為數(shù)字圖像,并使用計(jì)算機(jī)技術(shù)進(jìn)行修復(fù)從而得到長時(shí)間的保存。為了去除圖像上某個(gè)不需要的區(qū)域,可以考慮先使用掩碼覆蓋目標(biāo)區(qū)域,再使用修復(fù)技術(shù)在掩碼區(qū)域填充合理內(nèi)容。一直以來都有研究者對圖像信息修復(fù)算法進(jìn)行研究,然而該問題具有一定的多樣性與復(fù)雜性,實(shí)際情況中圖像信息缺失可能的表現(xiàn)形式有多種,例如信息完全丟失、部分丟失、信息夾雜噪聲等。目前該領(lǐng)域仍然有很多問題無法解決或不能完全解決。本文主要研究在圖像局部信息完全丟失的情況下,如何修復(fù)這些信息。
早期的圖像修復(fù)算法主要分為兩類,一類是基于偏微分方程的修復(fù)算法,另一類是基于樣本塊的修復(fù)算法。近年來的圖像修復(fù)算法的重要突破來自于深度學(xué)習(xí)領(lǐng)域。
基于偏微分方程的方法采用的是擴(kuò)散的思路,即把信息丟失區(qū)域附近的信息擴(kuò)散到待修復(fù)區(qū)域中[1],無需另指明外部信息的來源,還能夠同時(shí)修復(fù)多個(gè)破損區(qū)域。該類方法的主要優(yōu)點(diǎn)是對小范圍破損區(qū)域的修復(fù)效果很好,數(shù)值計(jì)算簡單、快速,其中經(jīng)典模型有三類:全變分模型[2-3]、曲率驅(qū)動(dòng)擴(kuò)散模型[4-5]、BSCB模型[6]。基于偏微分方程的方法對于結(jié)構(gòu)復(fù)雜的大面積缺失基本是無能為力的,因?yàn)閮H僅依靠擴(kuò)散不能引入更多的新信息。
基于塊填充法[7]依賴于搜索圖像低層線索,從一幅與受損圖像風(fēng)格類似的完整圖像中提取與信息缺失塊在局部最匹配的塊,匹配的標(biāo)準(zhǔn)可以包含色彩、結(jié)構(gòu)、紋理等的一致性,將所提取的塊填充至缺失區(qū)域即可。塊填充法能較好地修復(fù)圖像中信息大面積丟失的區(qū)域,但是效率不夠高,效果也有待提升。
基于深度學(xué)習(xí)的圖像修復(fù)技術(shù)主要考慮的問題有:數(shù)據(jù)輸入方式、模型設(shè)計(jì)以及目標(biāo)函數(shù)的構(gòu)造等方面。圖像數(shù)據(jù)輸入方式有多種:直接輸入圖像數(shù)據(jù)[8],圖像數(shù)據(jù)與噪聲數(shù)據(jù)的混合輸入[9],圖像數(shù)據(jù)與條件信息的混合輸入[10]。2014年Goodfellow等[11]提出了生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)。GAN框架同時(shí)訓(xùn)練了2部分網(wǎng)絡(luò)結(jié)構(gòu):生成器和判別器。生成器用于捕捉樣本的概率分布,判別器用于判定生成數(shù)據(jù)的真實(shí)性,兩者在訓(xùn)練過程中不斷進(jìn)行著交互式的博弈,最終在理想的平衡狀態(tài)下,生成圖像與真實(shí)圖像的分布非常接近。通過將條件信息參與GAN模型的訓(xùn)練,我們還能對輸出圖像的屬性進(jìn)行控制。Arjovsky等[12]提出的WGAN對于GAN模型訓(xùn)練的穩(wěn)定性有了許多提升。
基于深度學(xué)習(xí)的數(shù)字圖像修復(fù)的基本方法是:首先建立一個(gè)端到端的深層網(wǎng)絡(luò)模型,利用大量圖像數(shù)據(jù)作為輸入,通過一定端到端的訓(xùn)練使得網(wǎng)絡(luò)模型學(xué)習(xí)到圖像的特征;接著給定破損圖像,期望神經(jīng)網(wǎng)絡(luò)能根據(jù)學(xué)習(xí)到的圖像概念估算破損區(qū)域應(yīng)該補(bǔ)充哪些內(nèi)容才能符合現(xiàn)實(shí)情況;最后在輸出端得到修復(fù)后的結(jié)果。整個(gè)過程不需要人工提取特征,也不需要具體指出神經(jīng)網(wǎng)絡(luò)該學(xué)習(xí)哪些特征。
Pathak等[13]提出了語境編碼模型(Context Encoder,CE),首次將生成對抗模型用于圖像修復(fù)。模型的生成器是一個(gè)編碼-解碼網(wǎng)絡(luò),破損圖像輸入到編碼器后,經(jīng)過卷積層的提取特征,得到一系列特征圖,接著將這些特征圖輸入到解碼器部分,經(jīng)過一系列反卷積,最后得到輸出圖像。模型的目標(biāo)函數(shù)包含兩部分:第一部分為重構(gòu)損失,用于衡量修補(bǔ)后的部分與真實(shí)數(shù)據(jù)的偏差;第二部分為對抗損失,用于衡量修復(fù)后的圖像符合真實(shí)程度的大小。
Li等[9]提出了生成臉部修復(fù)模型,其中生成器部分也是一個(gè)編碼-解碼器。該模型的特別之處在于引入了預(yù)訓(xùn)練過的語義解析網(wǎng)絡(luò),它使用語義分割將人臉圖像劃為11個(gè)區(qū)域,修復(fù)后的圖像和真實(shí)圖像都進(jìn)行語義分割,兩者的差異即為語義損失。模型的目標(biāo)函數(shù)包含四部分:第一部分為L2重構(gòu)損失;第二部分為語義損失;第三部分為對抗損失,可以評估整幅圖像符合真實(shí)圖像程度的大??;第四部分也是對抗損失,可以評估生成圖像的局部區(qū)域是否為真實(shí)圖像。該模型在修復(fù)人臉數(shù)據(jù)集上達(dá)到了很好的效果,但是模型所需要的多類別語義分割數(shù)據(jù)集在一般的情況下是難以得到的。
在設(shè)計(jì)圖像修復(fù)模型的時(shí)候,我們將獲得最終解的過程建模為圖像到圖像的轉(zhuǎn)換過程。修復(fù)后的圖像需要滿足三點(diǎn)基本要求:1) 修復(fù)區(qū)域與保留區(qū)域在語義上要保持合理性;2) 被修復(fù)區(qū)域的邊緣需要保持連貫性;3) 修復(fù)區(qū)域需要有豐富的紋理細(xì)節(jié),這樣合并后的圖像才能使人眼視覺系統(tǒng)難以察覺出異常。文獻(xiàn)[9]建立的模型使用了額外的語義分割數(shù)據(jù)集作為輔助約束,緩解了人臉圖像修復(fù)的非對稱現(xiàn)象,但是多類別的語義分割數(shù)據(jù)集通常難以獲得,并且該模型對于修復(fù)結(jié)果的邊緣部分還需要其他的后處理步驟。CE模型則對紋理細(xì)節(jié)處理得不夠好。本文的模型結(jié)合下面三項(xiàng)措施,對現(xiàn)有模型的修復(fù)效果有了明顯的改進(jìn)。
GAN通過生成任意的圖像用于填充缺失塊,能實(shí)現(xiàn)人臉五官需要成對存在的高層特征,但是對長距離信息的依賴不夠密切,容易導(dǎo)致所生成的內(nèi)容與待修復(fù)圖像在語義上不夠連貫,導(dǎo)致修復(fù)的圖像在視覺上不夠真實(shí)。2018年,文獻(xiàn)[14-15]將非局部注意力機(jī)制引入了GAN模型。非局部注意力機(jī)制可以視為一種非局部均值,即通過對所有不同位置的輸入數(shù)據(jù)計(jì)算加權(quán)均值獲得輸出響應(yīng),使得模型在生成整幅圖像時(shí)不僅考慮邊緣部分的約束,而且也考慮了長距離的特征依賴。其基本原理如下:
假設(shè)卷積層的特征圖為x,其維度記為H×W×C,其中C為特征圖的通道數(shù),通過重排的手段使x∈RHW×C。首先計(jì)算x在3個(gè)特征空間中的輸出響應(yīng):
θ(x)=xWθφ(x)=xWφg(x)=xWg
(1)
R=f(θ(x),φ(x))
(2)
注意力機(jī)制的特征圖輸出像素值可以表示為:
(3)
(4)
根據(jù)文獻(xiàn)[14],這里選擇下面的配對函數(shù):
f(θ(x),φ(x))=eθ(x)φ(x)T
(5)
歸一化因子可以表示為:
(6)
此時(shí)式(3)可改寫為:
y=softmax(R)g(x)
(7)
圖1展示了注意力層的運(yùn)行機(jī)制。從上述非局部注意力機(jī)制的設(shè)計(jì)方式來看,每個(gè)注意力層的輸出都要綜合特征圖所有位置的數(shù)據(jù)進(jìn)行計(jì)算,這使得大量使用注意力層時(shí)會(huì)增加計(jì)算負(fù)擔(dān),在1×1的卷積運(yùn)算后進(jìn)行池化操作能一定程度上降低計(jì)算量。另一方面,由于注意力機(jī)制重在對生成圖像進(jìn)行長距離結(jié)構(gòu)約束,因此不適合添加在生成器的編碼階段,可以考慮在生成器的解碼部分和判別器中加入該機(jī)制。
圖1 非局部注意力方法的計(jì)算過程
模型的整體架構(gòu)如圖2所示,其中用黑色標(biāo)注的層為非局部注意力的插入位置。
(a) 生成器結(jié)構(gòu)圖
(b) 判別器結(jié)構(gòu)圖圖2 GAN修復(fù)模型結(jié)構(gòu)圖
為了使生成器的輸出滿足各種質(zhì)量要求,如何充分利用保留完好的圖像信息也是很重要的,如果生成的圖像能夠滿足下面2個(gè)條件就可以實(shí)現(xiàn)理想修復(fù)功能:
1) 生成圖像與真實(shí)圖像的分布一致:
Pgen(Gθ(z))=Pdata(x)
(8)
2) 生成圖像與原始圖像在未受損區(qū)域的范數(shù)距離接等于0:
(9)
式中:Gθ(z)表示生成圖像,x表示真實(shí)數(shù)據(jù),M為圖像掩碼。條件1)可以由KL散度、Wasserstein距離等衡量,其隱含的條件之一有長距離特征依賴,可以由非局部注意力機(jī)制來加強(qiáng)。針對條件2),可以考慮添加多級(jí)合并,也就是在靠近生成器的輸出端將輸入圖像與特征圖進(jìn)行多次合并。需要注意的是,由于缺失塊不含任何有效信息,多級(jí)合并的時(shí)候勢必會(huì)在生成圖像中引入大量難以過濾的干擾數(shù)據(jù)。這里可以用卷積運(yùn)算的濾波特性來緩解這個(gè)困境,也就是在多級(jí)合并的后面再添加若干特征圖不變的卷積緩沖層,這樣既可以使有效信息最大限度地保留下來,又可以過濾掉干擾信息,但付出的代價(jià)是計(jì)算量和硬件資源占用量的增加。在許多文獻(xiàn)中,特別是圖像分割、條件圖像生成等任務(wù)中,研究者經(jīng)常使用到U-Net一類的架構(gòu),實(shí)現(xiàn)了非常高的性能提升,這主要是因?yàn)閁-Net模型中的跨越式連接(Skip Connection)很好地利用了輸入圖像的有效信息,但是在圖像修復(fù)這類任務(wù)中,跨越式連接會(huì)對解碼階段引入不可忽視的干擾,嚴(yán)重降低生成圖像的視覺質(zhì)量。
文獻(xiàn)[9]提出的修復(fù)模型中,使用局部判別器和全局判別器共同提升生成圖像的質(zhì)量。此外,為了滿足2.2節(jié)最優(yōu)修復(fù)的第2項(xiàng)條件,該模型還引入了重構(gòu)損失,然而在編碼-解碼架構(gòu)的生成器中,很難使距離范數(shù)Lp為0,因此難以保證生成的區(qū)域與原圖的完整區(qū)域合并后的圖像在邊緣附近保持連貫性。此前的GAN修復(fù)模型使用泊松編輯后處理來緩解這類現(xiàn)象,但是無法徹底解決這類問題。本文將提出另一種方案,舍棄了多余的后處理步驟。這里將局部判別器替換為一個(gè)新的全局輔助判別器D2,其輸入為圖像I2,也就是最終的目標(biāo)圖像。D2的目標(biāo)是縮小I2與訓(xùn)練圖像之間分布的差異,并提供有效梯度來更新生成器與自身的參數(shù)。隨著D2性能的提升,I2將越來越滿足真實(shí)數(shù)據(jù)的分布要求。在測試階段僅需一次前向傳播即可獲得I2?;谏鲜鲇^點(diǎn),模型的代價(jià)函數(shù)定義如下:
(10)
對抗損失部分定義為:
(11)
I1=Gθ(z)I2=(1-M)⊙I1+M⊙x
(12)
式中:⊙表示將掩碼與圖像某一位置所有通道的像素進(jìn)行相乘。對于Lp損失部分,這里對其進(jìn)行了像素級(jí)歸一化,修改后如下:
(13)
實(shí)驗(yàn)中可以令p=2,算法參數(shù)的迭代更新流程如下:
1) 給定模型超參數(shù),包括學(xué)習(xí)速率、迭代步數(shù)、求解器類型以及相關(guān)的參數(shù)。
2) 采樣m個(gè)隨機(jī)掩碼M和圖像樣本x,并產(chǎn)生受損圖像z。
z=M⊙x
(14)
(15)
5) 使用式(16)產(chǎn)生對于生成器的參數(shù)θ的梯度, 并且由反向傳播僅更新生成器的參數(shù)。
(16)
6) 若模型參數(shù)的更新次數(shù)小于預(yù)設(shè)的次數(shù),則重復(fù)執(zhí)行第2步到第5步。
本文進(jìn)行的實(shí)驗(yàn)主要基于Tensorflow框架。主要的軟、硬件設(shè)備包括:Linux操作系統(tǒng)(Ubuntu14.04 LTS),加速顯卡(GTX1050Ti)、英特爾CPU(i5-7500)、內(nèi)存大小為8 GB(DDR4,2 400 Hz)。實(shí)驗(yàn)數(shù)據(jù)集為CelebA[16]。
實(shí)驗(yàn)使用經(jīng)過預(yù)處理對齊的數(shù)據(jù)集,人臉基本處于圖像的中間位置。在訓(xùn)練模型時(shí)使用了已對齊的50 000幅圖像,測試模型時(shí)使用了其余的1 000幅圖像。每幅圖的像素值轉(zhuǎn)化到[-1,1],圖像的大小為128×128×3。最后還使用了二維隨機(jī)游走算法產(chǎn)生不規(guī)則形狀的掩碼。
根據(jù)第2節(jié),本文設(shè)計(jì)的最終模型包括1個(gè)生成器和2個(gè)判別器。生成器中首先使用了4個(gè)卷積塊,每個(gè)卷積塊的包括卷積層、批歸一化以及ReLU激活函數(shù)。特征圖的通道數(shù)分別為64、128、256、512,卷積核的寬度與高度相等, 大小依次為5、5、5、3,移動(dòng)步長分別為3、3、3、2。隨后是7個(gè)轉(zhuǎn)置卷積塊,每個(gè)轉(zhuǎn)置卷積塊的包括轉(zhuǎn)置卷積層、批歸一化以及ReLU激活函。特征圖的通道數(shù)分別為256、128、64、32、16、16、3,卷積核的寬度與高度相等, 大小依次為3、5、5、4、3、3、3, 移動(dòng)步長分別為2、3、3、3、1、1、1。我們在第3、4個(gè)轉(zhuǎn)置卷積塊之間插入了注意力層,第4、5個(gè)轉(zhuǎn)置卷積塊中合并了輸入圖像,最后輸出層的激活函數(shù)為Tanh。所有卷積層和轉(zhuǎn)置卷積層的padding參數(shù)可自由選擇,但要確保生成圖像與真實(shí)圖像的尺寸一致。2個(gè)判別器的結(jié)構(gòu)相同,主要包括5個(gè)卷積塊,每個(gè)卷積塊包括卷積層、批歸一化以及Leaky_ReLU激活函數(shù)。特征圖的通道數(shù)分別為64、64、128、128、256,卷積核的寬度與高度相等, 大小依次為5、3、5、3、3, 移動(dòng)步長分別為3、2、3、2、2。我們在第2、3個(gè)卷積層之間插入了非局部注意力層,隨后是全連接層,輸出神經(jīng)元數(shù)為1, 激活函數(shù)為Sigmoid。
超參數(shù)設(shè)置上,令生成器的學(xué)習(xí)速率為0.000 2,兩個(gè)判別器的學(xué)習(xí)速率均為0.000 1且保持固定。目標(biāo)優(yōu)化算法選擇ADAM, 動(dòng)量參數(shù)beta1選擇0.5。λ0設(shè)置為100, 主判別器的代價(jià)權(quán)值λ1設(shè)置為1, 輔助判別器的代價(jià)權(quán)值λ2設(shè)置為0.02。
為了驗(yàn)證所提出的幾項(xiàng)改進(jìn)措施,還設(shè)置了幾組對比實(shí)驗(yàn)?zāi)P?。首先按照CE模型設(shè)計(jì)實(shí)驗(yàn)1,以獲取評估基線;接著從實(shí)驗(yàn)2-實(shí)驗(yàn)4分別驗(yàn)證了3項(xiàng)改進(jìn)的有效性;實(shí)驗(yàn)5測試了文獻(xiàn)[9]的結(jié)果,但沒有使用人臉語義分割作為輔助約束;最后將所有改進(jìn)點(diǎn)結(jié)合起來得到了實(shí)驗(yàn)6的結(jié)果。實(shí)驗(yàn)期間我們并沒有使用矩形掩碼,而是使用了自定義的隨機(jī)游走掩碼。各個(gè)對比實(shí)驗(yàn)的模型結(jié)構(gòu)大致與3.2節(jié)相同,只需要修改對比部分的結(jié)構(gòu)即可得到。實(shí)驗(yàn)結(jié)果如表1所示,可以看到改進(jìn)后的模型在性能的主要評價(jià)指標(biāo)上均有所上升。
表1 圖像修復(fù)結(jié)果對比
各實(shí)驗(yàn)最終的修復(fù)圖像如圖3所示,其中實(shí)驗(yàn)1-實(shí)驗(yàn)6分別與表1的實(shí)驗(yàn)結(jié)果相對應(yīng)。
(a) 待修復(fù)圖 (b) 實(shí)驗(yàn)1 (c) 實(shí)驗(yàn)2 (d) 實(shí)驗(yàn)3
(e) 實(shí)驗(yàn)4 (f) 實(shí)驗(yàn)5 (g) 實(shí)驗(yàn)6 (h) 原圖圖3 圖像修復(fù)實(shí)驗(yàn)結(jié)果對比圖
圖3中,(a)為待修復(fù)的圖像,(b)為無任何改進(jìn)的CE模型的修復(fù)效果,(c)、(e)分別表示無輔助判別器、無注意力機(jī)制、無多級(jí)合并緩沖層的情況,但是包含其他兩項(xiàng)改進(jìn)措施,(f)表示文獻(xiàn)[9]所得結(jié)果,(g)表示本文最終改進(jìn)模型的修復(fù)結(jié)果,(h)為原圖。由圖3結(jié)果可知,添加非局部注意力機(jī)制和輔助判別器后,成功地緩解了修復(fù)圖像的邊緣異?,F(xiàn)象, 對于人臉修復(fù)的對稱性約束得到了改善。緩沖層的提出雖未直接在衡量指標(biāo)上顯示性能提升,但是當(dāng)采用多級(jí)合并的方法時(shí),改善了修復(fù)區(qū)域的模糊現(xiàn)象,提升了修復(fù)圖像的視覺質(zhì)量,使得最終的模型達(dá)到更優(yōu)的修復(fù)效果。
本文研究了基于深度生成對抗網(wǎng)絡(luò)的圖像修復(fù)技術(shù), 主要是處理圖像局部區(qū)域信息完全丟失的情況。通過結(jié)合非局部注意力機(jī)制、多級(jí)合并-緩沖機(jī)制、添加輔助全局判別器,設(shè)計(jì)了新的生成對抗網(wǎng)絡(luò)修復(fù)模型,通過實(shí)驗(yàn)驗(yàn)證了該改進(jìn)策略的有效性。下一步將研究針對多類別少量數(shù)據(jù)時(shí), 如何改善修復(fù)效果, 或者降低模型的復(fù)雜度來加快網(wǎng)絡(luò)的訓(xùn)練速度。