葉曉文,章銀娥,?,周 琪
(1.贛南師范大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,江西 贛州 341000;2.贛東學(xué)院 信息工程系,江西 撫州 344000)
圖像修復(fù)[1]是指對(duì)存在破損的圖像進(jìn)行修復(fù),主要是通過(guò)提取未破損區(qū)域的信息來(lái)進(jìn)行修復(fù).圖像修復(fù)技術(shù)在現(xiàn)實(shí)生活中也有著廣泛的應(yīng)用,首先可以用來(lái)對(duì)破損的老舊照片進(jìn)行修復(fù),可以用來(lái)修復(fù)破損的文物、壁畫(huà)和建筑,還可以應(yīng)用在圖像編輯[2]、圖像重建[3]、圖像增強(qiáng)[4]等.由于破損圖像存在著復(fù)雜結(jié)構(gòu)和破損面積大等問(wèn)題,因此圖像修復(fù)是非常具有挑戰(zhàn)性的任務(wù).
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)[5]得到了廣泛的發(fā)展和應(yīng)用,越來(lái)越多人開(kāi)始使用卷積神經(jīng)網(wǎng)絡(luò)來(lái)處理圖像修復(fù)任務(wù),并且都取得了不錯(cuò)的成就.隨著自編碼器[6]模型的提出,圖像修復(fù)任務(wù)變得更加有效率,使用編碼器對(duì)破損圖像進(jìn)行特征提取,隨后使用解碼器對(duì)提取的圖像信息進(jìn)行解碼,可以得到修復(fù)好的圖像.隨著生成對(duì)抗網(wǎng)絡(luò)[7]的提出,越來(lái)越多的研究者使用其來(lái)處理圖像修復(fù)任務(wù),生成對(duì)抗網(wǎng)絡(luò)優(yōu)勢(shì)在于可以生成大量的高質(zhì)量的圖像,PATHAK等[8]首次將生成對(duì)抗網(wǎng)絡(luò)和自編碼器結(jié)構(gòu)相結(jié)合起來(lái)提出了基于卷積神經(jīng)網(wǎng)絡(luò)的上下文編碼器的圖像修復(fù)算法,修復(fù)效果要好于早期的傳統(tǒng)圖像修復(fù)算法,但是僅使用了對(duì)抗損失和重構(gòu)損失兩種損失函數(shù),并且正常的重構(gòu)損失沒(méi)有對(duì)不同區(qū)域的修復(fù)效果給予不同的關(guān)注度,所以修復(fù)效果并不是很理想.為了取得增強(qiáng)局部的修復(fù)效果,IIZUKA等[9]對(duì)判別器進(jìn)行改進(jìn),提出了同時(shí)使用全局判別器和局部判別器的方法,使用全局判別器來(lái)保證修復(fù)圖像的全局一致性.同樣的孫勁光等[10]也提出了全局與局部屬性一致的圖像修復(fù)模型,使用全局和局部判別器來(lái)進(jìn)行保證圖像的全局與局部的一致性,這兩種方法在兩個(gè)判別器都使用了重構(gòu)損失,同樣也是沒(méi)有考慮到正常重構(gòu)損失函數(shù)對(duì)不同區(qū)域修復(fù)效果沒(méi)有給予不同的權(quán)重,從而不能很好的引導(dǎo)生成器進(jìn)行修復(fù).李海燕等[11]提出一種基于雙網(wǎng)絡(luò)及多尺度判決器的圖像修復(fù)算法,使用多個(gè)不同尺度的判別器,來(lái)提高圖像的紋理粒度,其在每個(gè)尺度的判別器上都使用了重構(gòu)損失,沒(méi)有考慮到對(duì)于沒(méi)有修復(fù)好的區(qū)域需要得到更大的關(guān)注度.YAN等提出了一種以u(píng)-net[12]為主要網(wǎng)絡(luò)結(jié)構(gòu)的shift-Net[13]圖像修復(fù)算法,雖然修復(fù)效果取得了進(jìn)一步的改進(jìn),但是依然存在過(guò)度平滑的問(wèn)題,其除了使用了重構(gòu)損失和對(duì)抗損失,還使用了指導(dǎo)損失,指導(dǎo)損失是真實(shí)圖像經(jīng)過(guò)編碼器第L層后的特征與需要修復(fù)圖像經(jīng)過(guò)解碼器倒數(shù)第L層后的特征之間的重構(gòu)損失.姜藝等[14]提出一種邊緣指導(dǎo)圖像修復(fù)算法,第一階段對(duì)破損圖像進(jìn)行邊緣修復(fù),二階段使用修復(fù)的邊緣修復(fù)圖像進(jìn)行內(nèi)容修復(fù),其使用了對(duì)抗損失、重構(gòu)損失和風(fēng)格損失[15],風(fēng)格損失是通過(guò)預(yù)先訓(xùn)練的VGG網(wǎng)絡(luò)[16]分別對(duì)修復(fù)圖像和真實(shí)圖像提取高級(jí)語(yǔ)義特征圖,然后求出特征圖的格拉姆矩陣,最后計(jì)算真實(shí)圖像和修復(fù)圖像的格拉姆矩陣之間的重構(gòu)損失,用來(lái)衡量圖像的風(fēng)格相似性,但是其使用的重構(gòu)損失同樣沒(méi)有考慮對(duì)于沒(méi)有修復(fù)好的區(qū)域給予更高的權(quán)重.
針對(duì)現(xiàn)有的圖像修復(fù)算法使用的重構(gòu)損失沒(méi)有考慮對(duì)不同區(qū)域的修復(fù)效果給予不同的權(quán)重的問(wèn)題,提出了一種基于改進(jìn)重構(gòu)損失函數(shù)的生成對(duì)抗網(wǎng)絡(luò)圖像修復(fù)算法.改進(jìn)后的損失函數(shù),可以幫助模型更加關(guān)注修復(fù)效果不好的區(qū)域,提升修復(fù)效果,減少偽影和模糊現(xiàn)象,同時(shí)在網(wǎng)絡(luò)模型的編碼器和解碼器中引入多尺度稠密卷積模塊,可以幫助模型更加有效的提取和利用特征,減少梯度消失問(wèn)題.跳躍連接處使用的是殘差空間注意力模塊,可以讓模型在獲取更大的感受野,同時(shí)在參數(shù)量不變的情況下,提升像素間的相互依賴.
生成對(duì)抗網(wǎng)絡(luò)[7]的提出主要是用于圖像的生成,具有優(yōu)越的圖像生成能力.近年來(lái),許多研究者將生成對(duì)抗網(wǎng)絡(luò)用于圖像處理領(lǐng)域,并且取得了卓越的成就.生成對(duì)抗網(wǎng)絡(luò)是由生成器和判別器組成,生成器的功能是用來(lái)繪制圖像,生成器繪制好圖像后會(huì)交給判別器.判別器的輸入是真實(shí)圖像和生成器繪制的圖像,它的功能是判斷出圖像是有生成器繪制的,還是真實(shí)圖像,如果是真實(shí)圖像判別器會(huì)判斷為真,如果是生成器繪制的圖像,判別器會(huì)判斷為假.判別器將判斷結(jié)果作為損失傳給生成器,生成器根據(jù)損失來(lái)調(diào)整參數(shù)后繼續(xù)繪制圖像.最終的結(jié)果是隨著生成器繪制圖像能力和判別器的判斷能力不斷增強(qiáng),生成器繪制的圖像已經(jīng)是真假難辨.
圖像修復(fù)常用的損失函數(shù)有重構(gòu)損失、感知損失[15]和風(fēng)格損失[15].其中重構(gòu)損失是衡量?jī)蓮垐D像像素的差距.公式1是重構(gòu)損失函數(shù)的公式,其中Itrue表示真實(shí)圖像,Igf表示生成的修復(fù)后的圖像.
Lr=‖Igf-Itrue‖1
(1)
但是僅僅依靠普通的重構(gòu)損失并不能很好指導(dǎo)修復(fù),這時(shí)就需要使用了感知損失和風(fēng)格損失,感知損失是通過(guò)預(yù)先訓(xùn)練好的Vgg16網(wǎng)絡(luò)模型[16]分別提取真實(shí)圖像和修復(fù)圖像的高級(jí)語(yǔ)義特征,然后計(jì)算真實(shí)圖像和修復(fù)圖像的高級(jí)語(yǔ)義特征的重構(gòu)損失來(lái)指導(dǎo)圖像進(jìn)行修復(fù),衡量的是真實(shí)圖像和修復(fù)圖像在高級(jí)語(yǔ)義上的相似性.感知損失其公式如公式2所示,其中Ψm表示通過(guò)VGG16網(wǎng)絡(luò)的pool1、pool2,pool3層后提取的高級(jí)語(yǔ)義特征圖,在這里N的值是3,表示需要通過(guò)VGG16網(wǎng)絡(luò)分別對(duì)修復(fù)圖像和真實(shí)圖像提取三個(gè)高級(jí)語(yǔ)義特征圖,并計(jì)算它們之間的重構(gòu)損失,然后將三個(gè)重構(gòu)損失求和得到感知損失.
(2)
風(fēng)格損失是用來(lái)衡量?jī)蓮垐D像之間的風(fēng)格相似程度,其計(jì)算方法是在感知損失計(jì)算重構(gòu)損失之前,先計(jì)算每個(gè)特征圖的格拉姆矩陣,其公式如公式3所示,其中G表示對(duì)高級(jí)語(yǔ)義特征圖構(gòu)建格拉姆矩陣.
(3)
生成器是基于u-net網(wǎng)絡(luò)結(jié)構(gòu),結(jié)構(gòu)圖如圖1所示,特征圖頂部的尺寸,底部的是通道數(shù)量.破損圖像首先進(jìn)入到多尺度稠密卷積模塊進(jìn)行下采樣,隨后進(jìn)入到8個(gè)殘差塊中提取深層次特征信息,接下來(lái)使用多尺度稠密卷積模塊進(jìn)行上采樣,并且引入了帶有空洞殘差空間注意力模塊的跳躍連接,最后輸出修復(fù)好的圖像,頂部的數(shù)字表示的是特征圖經(jīng)過(guò)處理后的尺寸,底部的數(shù)字是特征圖經(jīng)過(guò)處理后的通道數(shù),本文方法的判別器使用的是文獻(xiàn)[13]中的判別器.修復(fù)后的圖像會(huì)與真實(shí)圖像進(jìn)行對(duì)比,計(jì)算損失大小,同時(shí)修復(fù)后的圖像會(huì)放入到判別器判斷真假,然后將損失傳回給生成器進(jìn)行參數(shù)調(diào)整.
圖1 生成器網(wǎng)絡(luò)結(jié)構(gòu)圖
編碼器和解碼器使用的是多尺度稠密卷積模塊,在多尺度稠密卷積塊中引入了空洞卷積,在參數(shù)量不變的情況下可以獲取多個(gè)尺度的特征圖,將多個(gè)尺度的特征圖進(jìn)行特征融合,得到多尺度特征圖,多尺度稠密卷積模塊的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示,圖中的Conv后的數(shù)字依次是卷積的卷積核大小、步長(zhǎng)、填充和擴(kuò)張率.特征圖從左側(cè)開(kāi)始輸入,假設(shè)其通道數(shù)為C,首先特征圖需要分別經(jīng)過(guò)兩個(gè)卷積核大小為3步長(zhǎng)為2的卷積和ReLU激活函數(shù),這時(shí)特征圖的大小減半,特征圖的通道數(shù)增加為2C,這個(gè)卷積的作用是改變特征圖的尺寸大小. 接下來(lái)特征圖會(huì)分別經(jīng)過(guò)四個(gè)空洞卷積,卷積核大小為3步長(zhǎng)為1,然后在經(jīng)過(guò)BatchNorm2d和ReLU激活函數(shù),空洞卷積的擴(kuò)張率大小分別為1、2、4、8,空洞卷積用來(lái)獲取多尺度的特征信息,這時(shí)特征圖通道數(shù)不變和尺寸不變.空洞卷積可以在不增加參數(shù)量的情況下,增加網(wǎng)絡(luò)的感受野.然后通過(guò)concat將多個(gè)感受野的特征圖按照箭頭方向進(jìn)行堆疊,堆疊后的特征圖從上到下通道數(shù)依次是4C、6C、8C.之后多尺度特征再分別經(jīng)過(guò)三個(gè)卷積核大小為3,步長(zhǎng)為1的卷積,這時(shí)特征圖的通道數(shù)都變成2C.后面的卷積也是做類(lèi)似的操作,最后一個(gè)concat將5個(gè)不同感受野的特征圖堆疊到一起,特征圖通道數(shù)變?yōu)?0C,最后將特征圖放入到卷積核大小為1,步長(zhǎng)為1的卷積和LeakyReLU激活函數(shù)后,特征圖最終的通道數(shù)變?yōu)?C,這樣就完成了一次下采樣,得到的特征圖尺寸為原來(lái)的一半.上采樣也是同樣的網(wǎng)絡(luò)模型,只是將開(kāi)始的兩個(gè)卷積換成卷積核大小為4,步長(zhǎng)為2的反卷積,每次上采樣后得到的特征圖尺寸是原來(lái)的兩倍.
圖2 多尺度稠密卷積模塊網(wǎng)絡(luò)結(jié)構(gòu)圖
跳躍連接中的空洞殘差注意力模塊網(wǎng)絡(luò)結(jié)構(gòu)圖如圖3所示,conv表示卷積,其中的數(shù)字依次是卷積核大小、步長(zhǎng)、填充和擴(kuò)張率,特征圖M1首先經(jīng)過(guò)三個(gè)卷積和LeakyReLU激活函數(shù),得到特征圖M2,其尺寸和通道數(shù)不變.隨后特征圖依次進(jìn)入到卷積核為1和卷積核為3的卷積中,其中卷積核為3卷積的擴(kuò)張率分別是1、2、4、8,卷積核為1的卷積可以幫助降低參數(shù)量,空洞卷積用于擴(kuò)大感受野.之后將4個(gè)提取到不同感受野信息的特征圖堆疊起來(lái),此時(shí)的通道數(shù)變?yōu)樵瓉?lái)的4倍.隨后通過(guò)卷積核為1的卷積將通道數(shù)變回原來(lái)的1倍,再經(jīng)過(guò)LeakyReLU激活函數(shù).最后通過(guò)卷積核為1的卷積道數(shù)變?yōu)?,再經(jīng)過(guò)Sigmoid激活函數(shù),將特征圖限制在0-1之間,得到空間權(quán)重特征圖M3.隨后將空間權(quán)重特征圖M3乘以特征圖M2得到帶注意力的特征圖M4,最后將M1與M4相加再經(jīng)過(guò)LeakyReLU激活函數(shù),得到最終的殘差空間注意力特征圖.
圖3 空洞殘差空間注意力模塊網(wǎng)絡(luò)結(jié)構(gòu)圖
重構(gòu)損失是用來(lái)衡量?jī)蓮垐D像之間的像素距離,通過(guò)兩張圖像對(duì)應(yīng)坐標(biāo)像素點(diǎn)的差值相加得到,不管差值的多大都是用這樣的方法去計(jì)算差值,而在圖像修復(fù)中,需要的是對(duì)沒(méi)有修復(fù)好的區(qū)域進(jìn)行修復(fù),這時(shí)就需要更加重構(gòu)損失較大的區(qū)域,對(duì)于修復(fù)好的圖像和真實(shí)圖像之間的像素差值如果不進(jìn)行加權(quán)處理,損失就不能很好的指導(dǎo)生成器進(jìn)行圖像的修復(fù),這里對(duì)重構(gòu)函數(shù)進(jìn)行改進(jìn),讓重構(gòu)損失能夠?qū)π迯?fù)不夠好的區(qū)域給予更多的關(guān)注,來(lái)指導(dǎo)生成器對(duì)修復(fù)效果差的區(qū)域給予更多的關(guān)注度.改進(jìn)方法是將修復(fù)后的圖像和真實(shí)圖像平均分割成N×N塊,然后分別求出分割塊的重構(gòu)損失,將所有分割快的重構(gòu)損失求和后除以塊的數(shù)量計(jì)算出平均重構(gòu)損失.將每個(gè)分割快的重構(gòu)損失與平均重構(gòu)損失作對(duì)比,如果重構(gòu)損失大于平均重構(gòu)損失,則對(duì)這一塊的重構(gòu)損失進(jìn)行加權(quán)處理,加權(quán)公式為如公式4,如果重構(gòu)損失小于平均重構(gòu)損失則繼續(xù)使用未加權(quán)的重構(gòu)損失.
Lw-recon=W×L+Sigmoid(L)
(4)
改進(jìn)的重構(gòu)損失公式如公式5所示,Lw-recon是改進(jìn)的重構(gòu)損失,PatchW表示分割加權(quán)運(yùn)算,N表示分割系數(shù),W表示權(quán)重系數(shù),Itrue表示真實(shí)圖像,Igf表示生成的修復(fù)后的圖像.
Lw-recon=PatchW(N,W,Igf,Itrue)
(5)
改進(jìn)后感知損失的定義如公式6所示.
(6)
改進(jìn)后的風(fēng)格損失也是將其中的重構(gòu)損失換成改進(jìn)的重構(gòu)損失,其定義如公式7.
(7)
對(duì)抗損失可以用來(lái)優(yōu)化網(wǎng)絡(luò)參數(shù),降低對(duì)抗損失,增強(qiáng)修復(fù)圖像的紋理和結(jié)構(gòu)一致性,對(duì)抗損失函數(shù)定義如公式8,pgf代表生成器生成數(shù)據(jù)的分布,ptrue代表真實(shí)數(shù)據(jù)的分布,表示期望.
(8)
全變分損失[17]可以用于改善修復(fù)后圖像的平滑度,增強(qiáng)掩膜邊界的平滑性,改善偽影問(wèn)題.其定義如公式9所示,p,q是像素點(diǎn)坐標(biāo).
(9)
總的損失函數(shù)定義如公式10.
Ltotal=λadvLadv+λreconLw-recon+λpercLw-perc+λstyleLw-style+λtvLtv
(10)
本文使用人臉公開(kāi)數(shù)據(jù)集CelebA[18]進(jìn)行實(shí)驗(yàn).CelebA數(shù)據(jù)集包含了202599張人臉圖像,隨機(jī)抽取其中的20000張圖像用來(lái)訓(xùn)練,然后在剩余的圖像中隨機(jī)抽取1000張用于作為測(cè)試集.
訓(xùn)練集和測(cè)試集圖像經(jīng)過(guò)處理后得到256×256大小的圖像,輸入生成器的圖像大小為256×256,其中訓(xùn)練和測(cè)試使用的是128×128的中心掩膜來(lái)模擬破損區(qū)域.訓(xùn)練集進(jìn)行30次循環(huán),訓(xùn)練時(shí)Batchsize大小設(shè)置為4,使用的是Adam優(yōu)化器.實(shí)驗(yàn)損失函數(shù)的參數(shù)設(shè)置為λadv=0.2,λrecon=10,λperc=1,λstyle=120,λtv=0.01,學(xué)習(xí)率為2×10-4.
本文方法分別與GLCIC[9]、Pconv[19]、Shift-Net[13]、CTSDG[20]4種算法進(jìn)行對(duì)比實(shí)驗(yàn).如圖9所示,是4種算法對(duì)CelebA數(shù)據(jù)集的修復(fù)效果,從圖1-4分別是帶掩碼的圖像、GLCIC算法修復(fù)效果、Pconv算法修復(fù)效果、Shift-Net算法修復(fù)效果、CTSDG算法修復(fù)效果、本文修復(fù)效果和真實(shí)圖像.
由圖4可以看出,GLCIC的修復(fù)效果是在第2列,修復(fù)后圖像有著明顯的的偽影和模糊,特別是在眼睛和眉毛附近,修復(fù)效果很不理想.Pconv算法修復(fù)結(jié)果在第3列,可以看出其修復(fù)效果好于前面的算法,不過(guò)第一張眼鏡的修復(fù)效果不理想,還有第三張的鼻子和嘴巴有些模糊,產(chǎn)生了粘連.Shift-Net算法修復(fù)效果在第4列,可以看出其修復(fù)效果也不是很好,第一張圖像中的眼鏡只修復(fù)好了一半,第二張和第三張圖像的眼睛處出現(xiàn)了模糊和偽影現(xiàn)象,修復(fù)后的圖像沒(méi)有得到很好的修復(fù)效果.CTSDG算法修復(fù)效果在第5列,可以看出其修復(fù)效果在視覺(jué)上有了很大的提升,但是依然存在一些問(wèn)題,比如第一張修復(fù)的圖像雖然修復(fù)出了眼鏡輪廓,但是在結(jié)構(gòu)上還是不連貫,第二張修復(fù)圖像除了額頭上有一點(diǎn)偽影,整體的修復(fù)還是令人滿意的.第三張修復(fù)的圖像也達(dá)到了預(yù)期的修復(fù)效果,但是在圖像左側(cè)的眉毛處還是存在瑕疵.本文模型修復(fù)效果在第6列,可以看出修復(fù)圖像已經(jīng)達(dá)到了很好的視覺(jué)效果,和真實(shí)圖像已經(jīng)十分接近,沒(méi)有出現(xiàn)明顯的模糊現(xiàn)象,也沒(méi)有很明顯偽影現(xiàn)象,臉部細(xì)節(jié)得到了很好的修復(fù),修復(fù)的整體效果也都優(yōu)于對(duì)比算法.
圖4 不同方法在CelebA數(shù)據(jù)集中心掩膜修復(fù)效果
表1 在CelabA數(shù)據(jù)集在中心掩碼上各算法修復(fù)對(duì)比
本文對(duì)修復(fù)結(jié)果還通過(guò)峰值信噪比(Peak Signal to Noise Ratio)PSNR[21]、結(jié)構(gòu)相似性(Structural Similarity Index)SSIM[22]和弗雷歇距離(Fréchet Inception Distance,FID)進(jìn)行定量分析.峰值信噪比是用來(lái)檢測(cè)修復(fù)圖像和真實(shí)圖像的細(xì)節(jié)修復(fù)效果,值越大表示修復(fù)效果越好.結(jié)構(gòu)相似性衡量的是修復(fù)圖像和真實(shí)圖像之間結(jié)構(gòu)的相似程度,值越大表示修復(fù)結(jié)果越好.FID計(jì)算的是修復(fù)圖像和真實(shí)圖像高維特征的相似程度,值越小說(shuō)明越相似.
表1是在CelebA數(shù)據(jù)集上各算法在中心掩碼上的性能指標(biāo),可以看出本文算法各項(xiàng)指標(biāo)都取得了最好的效果,說(shuō)明了本文算法無(wú)論在定性分析還是在定量分析上有要優(yōu)于對(duì)比算法.
本文提出了一種基于改進(jìn)重構(gòu)損失函數(shù)的生成對(duì)抗網(wǎng)絡(luò)圖像修復(fù)方法,對(duì)重構(gòu)損失進(jìn)行改進(jìn),可以指導(dǎo)網(wǎng)絡(luò)對(duì)修復(fù)不佳的區(qū)域給予更多的關(guān)注度,提升修復(fù)效果.同時(shí)在編碼器和解碼器中引入多尺度稠密卷積模塊,幫助模型在下采樣時(shí)加強(qiáng)多尺度特征的提取,并且有助于加強(qiáng)特征的傳遞.跳躍連接處使用的是空洞殘差空間注意力模塊,擴(kuò)大網(wǎng)絡(luò)模型的感受野,加強(qiáng)了低維度特征的利用,提升修復(fù)質(zhì)量.但是本方法還存在一些問(wèn)題,對(duì)于面積比較大并且背景復(fù)雜的破損圖像,其修復(fù)效果還有待提升,因此接下來(lái)的工作將繼續(xù)對(duì)生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)進(jìn)行改進(jìn),增強(qiáng)對(duì)大面積缺失的修復(fù)效果.