?

基于改進重構損失函數的生成對抗網絡圖像修復方法*

2023-12-13 03:56葉曉文章銀娥
贛南師范大學學報 2023年6期
關鍵詞:尺度重構損失

葉曉文,章銀娥,?,周 琪

(1.贛南師范大學 數學與計算機科學學院,江西 贛州 341000;2.贛東學院 信息工程系,江西 撫州 344000)

0 引言

圖像修復[1]是指對存在破損的圖像進行修復,主要是通過提取未破損區域的信息來進行修復.圖像修復技術在現實生活中也有著廣泛的應用,首先可以用來對破損的老舊照片進行修復,可以用來修復破損的文物、壁畫和建筑,還可以應用在圖像編輯[2]、圖像重建[3]、圖像增強[4]等.由于破損圖像存在著復雜結構和破損面積大等問題,因此圖像修復是非常具有挑戰性的任務.

近年來,卷積神經網絡[5]得到了廣泛的發展和應用,越來越多人開始使用卷積神經網絡來處理圖像修復任務,并且都取得了不錯的成就.隨著自編碼器[6]模型的提出,圖像修復任務變得更加有效率,使用編碼器對破損圖像進行特征提取,隨后使用解碼器對提取的圖像信息進行解碼,可以得到修復好的圖像.隨著生成對抗網絡[7]的提出,越來越多的研究者使用其來處理圖像修復任務,生成對抗網絡優勢在于可以生成大量的高質量的圖像,PATHAK等[8]首次將生成對抗網絡和自編碼器結構相結合起來提出了基于卷積神經網絡的上下文編碼器的圖像修復算法,修復效果要好于早期的傳統圖像修復算法,但是僅使用了對抗損失和重構損失兩種損失函數,并且正常的重構損失沒有對不同區域的修復效果給予不同的關注度,所以修復效果并不是很理想.為了取得增強局部的修復效果,IIZUKA等[9]對判別器進行改進,提出了同時使用全局判別器和局部判別器的方法,使用全局判別器來保證修復圖像的全局一致性.同樣的孫勁光等[10]也提出了全局與局部屬性一致的圖像修復模型,使用全局和局部判別器來進行保證圖像的全局與局部的一致性,這兩種方法在兩個判別器都使用了重構損失,同樣也是沒有考慮到正常重構損失函數對不同區域修復效果沒有給予不同的權重,從而不能很好的引導生成器進行修復.李海燕等[11]提出一種基于雙網絡及多尺度判決器的圖像修復算法,使用多個不同尺度的判別器,來提高圖像的紋理粒度,其在每個尺度的判別器上都使用了重構損失,沒有考慮到對于沒有修復好的區域需要得到更大的關注度.YAN等提出了一種以u-net[12]為主要網絡結構的shift-Net[13]圖像修復算法,雖然修復效果取得了進一步的改進,但是依然存在過度平滑的問題,其除了使用了重構損失和對抗損失,還使用了指導損失,指導損失是真實圖像經過編碼器第L層后的特征與需要修復圖像經過解碼器倒數第L層后的特征之間的重構損失.姜藝等[14]提出一種邊緣指導圖像修復算法,第一階段對破損圖像進行邊緣修復,二階段使用修復的邊緣修復圖像進行內容修復,其使用了對抗損失、重構損失和風格損失[15],風格損失是通過預先訓練的VGG網絡[16]分別對修復圖像和真實圖像提取高級語義特征圖,然后求出特征圖的格拉姆矩陣,最后計算真實圖像和修復圖像的格拉姆矩陣之間的重構損失,用來衡量圖像的風格相似性,但是其使用的重構損失同樣沒有考慮對于沒有修復好的區域給予更高的權重.

針對現有的圖像修復算法使用的重構損失沒有考慮對不同區域的修復效果給予不同的權重的問題,提出了一種基于改進重構損失函數的生成對抗網絡圖像修復算法.改進后的損失函數,可以幫助模型更加關注修復效果不好的區域,提升修復效果,減少偽影和模糊現象,同時在網絡模型的編碼器和解碼器中引入多尺度稠密卷積模塊,可以幫助模型更加有效的提取和利用特征,減少梯度消失問題.跳躍連接處使用的是殘差空間注意力模塊,可以讓模型在獲取更大的感受野,同時在參數量不變的情況下,提升像素間的相互依賴.

1 相關理論基礎

1.1 生成對抗網絡

生成對抗網絡[7]的提出主要是用于圖像的生成,具有優越的圖像生成能力.近年來,許多研究者將生成對抗網絡用于圖像處理領域,并且取得了卓越的成就.生成對抗網絡是由生成器和判別器組成,生成器的功能是用來繪制圖像,生成器繪制好圖像后會交給判別器.判別器的輸入是真實圖像和生成器繪制的圖像,它的功能是判斷出圖像是有生成器繪制的,還是真實圖像,如果是真實圖像判別器會判斷為真,如果是生成器繪制的圖像,判別器會判斷為假.判別器將判斷結果作為損失傳給生成器,生成器根據損失來調整參數后繼續繪制圖像.最終的結果是隨著生成器繪制圖像能力和判別器的判斷能力不斷增強,生成器繪制的圖像已經是真假難辨.

1.2 圖像修復中常用的損失函數

圖像修復常用的損失函數有重構損失、感知損失[15]和風格損失[15].其中重構損失是衡量兩張圖像像素的差距.公式1是重構損失函數的公式,其中Itrue表示真實圖像,Igf表示生成的修復后的圖像.

Lr=‖Igf-Itrue‖1

(1)

但是僅僅依靠普通的重構損失并不能很好指導修復,這時就需要使用了感知損失和風格損失,感知損失是通過預先訓練好的Vgg16網絡模型[16]分別提取真實圖像和修復圖像的高級語義特征,然后計算真實圖像和修復圖像的高級語義特征的重構損失來指導圖像進行修復,衡量的是真實圖像和修復圖像在高級語義上的相似性.感知損失其公式如公式2所示,其中Ψm表示通過VGG16網絡的pool1、pool2,pool3層后提取的高級語義特征圖,在這里N的值是3,表示需要通過VGG16網絡分別對修復圖像和真實圖像提取三個高級語義特征圖,并計算它們之間的重構損失,然后將三個重構損失求和得到感知損失.

(2)

風格損失是用來衡量兩張圖像之間的風格相似程度,其計算方法是在感知損失計算重構損失之前,先計算每個特征圖的格拉姆矩陣,其公式如公式3所示,其中G表示對高級語義特征圖構建格拉姆矩陣.

(3)

2 本文方法

2.1 生成器

生成器是基于u-net網絡結構,結構圖如圖1所示,特征圖頂部的尺寸,底部的是通道數量.破損圖像首先進入到多尺度稠密卷積模塊進行下采樣,隨后進入到8個殘差塊中提取深層次特征信息,接下來使用多尺度稠密卷積模塊進行上采樣,并且引入了帶有空洞殘差空間注意力模塊的跳躍連接,最后輸出修復好的圖像,頂部的數字表示的是特征圖經過處理后的尺寸,底部的數字是特征圖經過處理后的通道數,本文方法的判別器使用的是文獻[13]中的判別器.修復后的圖像會與真實圖像進行對比,計算損失大小,同時修復后的圖像會放入到判別器判斷真假,然后將損失傳回給生成器進行參數調整.

圖1 生成器網絡結構圖

2.2 多尺度稠密卷積模塊

編碼器和解碼器使用的是多尺度稠密卷積模塊,在多尺度稠密卷積塊中引入了空洞卷積,在參數量不變的情況下可以獲取多個尺度的特征圖,將多個尺度的特征圖進行特征融合,得到多尺度特征圖,多尺度稠密卷積模塊的網絡結構圖如圖2所示,圖中的Conv后的數字依次是卷積的卷積核大小、步長、填充和擴張率.特征圖從左側開始輸入,假設其通道數為C,首先特征圖需要分別經過兩個卷積核大小為3步長為2的卷積和ReLU激活函數,這時特征圖的大小減半,特征圖的通道數增加為2C,這個卷積的作用是改變特征圖的尺寸大小. 接下來特征圖會分別經過四個空洞卷積,卷積核大小為3步長為1,然后在經過BatchNorm2d和ReLU激活函數,空洞卷積的擴張率大小分別為1、2、4、8,空洞卷積用來獲取多尺度的特征信息,這時特征圖通道數不變和尺寸不變.空洞卷積可以在不增加參數量的情況下,增加網絡的感受野.然后通過concat將多個感受野的特征圖按照箭頭方向進行堆疊,堆疊后的特征圖從上到下通道數依次是4C、6C、8C.之后多尺度特征再分別經過三個卷積核大小為3,步長為1的卷積,這時特征圖的通道數都變成2C.后面的卷積也是做類似的操作,最后一個concat將5個不同感受野的特征圖堆疊到一起,特征圖通道數變為10C,最后將特征圖放入到卷積核大小為1,步長為1的卷積和LeakyReLU激活函數后,特征圖最終的通道數變為2C,這樣就完成了一次下采樣,得到的特征圖尺寸為原來的一半.上采樣也是同樣的網絡模型,只是將開始的兩個卷積換成卷積核大小為4,步長為2的反卷積,每次上采樣后得到的特征圖尺寸是原來的兩倍.

圖2 多尺度稠密卷積模塊網絡結構圖

2.3 空洞殘差空間注意力模塊

跳躍連接中的空洞殘差注意力模塊網絡結構圖如圖3所示,conv表示卷積,其中的數字依次是卷積核大小、步長、填充和擴張率,特征圖M1首先經過三個卷積和LeakyReLU激活函數,得到特征圖M2,其尺寸和通道數不變.隨后特征圖依次進入到卷積核為1和卷積核為3的卷積中,其中卷積核為3卷積的擴張率分別是1、2、4、8,卷積核為1的卷積可以幫助降低參數量,空洞卷積用于擴大感受野.之后將4個提取到不同感受野信息的特征圖堆疊起來,此時的通道數變為原來的4倍.隨后通過卷積核為1的卷積將通道數變回原來的1倍,再經過LeakyReLU激活函數.最后通過卷積核為1的卷積道數變為1,再經過Sigmoid激活函數,將特征圖限制在0-1之間,得到空間權重特征圖M3.隨后將空間權重特征圖M3乘以特征圖M2得到帶注意力的特征圖M4,最后將M1與M4相加再經過LeakyReLU激活函數,得到最終的殘差空間注意力特征圖.

圖3 空洞殘差空間注意力模塊網絡結構圖

2.4 損失函數

重構損失是用來衡量兩張圖像之間的像素距離,通過兩張圖像對應坐標像素點的差值相加得到,不管差值的多大都是用這樣的方法去計算差值,而在圖像修復中,需要的是對沒有修復好的區域進行修復,這時就需要更加重構損失較大的區域,對于修復好的圖像和真實圖像之間的像素差值如果不進行加權處理,損失就不能很好的指導生成器進行圖像的修復,這里對重構函數進行改進,讓重構損失能夠對修復不夠好的區域給予更多的關注,來指導生成器對修復效果差的區域給予更多的關注度.改進方法是將修復后的圖像和真實圖像平均分割成N×N塊,然后分別求出分割塊的重構損失,將所有分割快的重構損失求和后除以塊的數量計算出平均重構損失.將每個分割快的重構損失與平均重構損失作對比,如果重構損失大于平均重構損失,則對這一塊的重構損失進行加權處理,加權公式為如公式4,如果重構損失小于平均重構損失則繼續使用未加權的重構損失.

Lw-recon=W×L+Sigmoid(L)

(4)

改進的重構損失公式如公式5所示,Lw-recon是改進的重構損失,PatchW表示分割加權運算,N表示分割系數,W表示權重系數,Itrue表示真實圖像,Igf表示生成的修復后的圖像.

Lw-recon=PatchW(N,W,Igf,Itrue)

(5)

改進后感知損失的定義如公式6所示.

(6)

改進后的風格損失也是將其中的重構損失換成改進的重構損失,其定義如公式7.

(7)

對抗損失可以用來優化網絡參數,降低對抗損失,增強修復圖像的紋理和結構一致性,對抗損失函數定義如公式8,pgf代表生成器生成數據的分布,ptrue代表真實數據的分布,表示期望.

(8)

全變分損失[17]可以用于改善修復后圖像的平滑度,增強掩膜邊界的平滑性,改善偽影問題.其定義如公式9所示,p,q是像素點坐標.

(9)

總的損失函數定義如公式10.

Ltotal=λadvLadv+λreconLw-recon+λpercLw-perc+λstyleLw-style+λtvLtv

(10)

3 實驗

3.1 數據集與運行環境

本文使用人臉公開數據集CelebA[18]進行實驗.CelebA數據集包含了202599張人臉圖像,隨機抽取其中的20000張圖像用來訓練,然后在剩余的圖像中隨機抽取1000張用于作為測試集.

訓練集和測試集圖像經過處理后得到256×256大小的圖像,輸入生成器的圖像大小為256×256,其中訓練和測試使用的是128×128的中心掩膜來模擬破損區域.訓練集進行30次循環,訓練時Batchsize大小設置為4,使用的是Adam優化器.實驗損失函數的參數設置為λadv=0.2,λrecon=10,λperc=1,λstyle=120,λtv=0.01,學習率為2×10-4.

3.2 定性分析

本文方法分別與GLCIC[9]、Pconv[19]、Shift-Net[13]、CTSDG[20]4種算法進行對比實驗.如圖9所示,是4種算法對CelebA數據集的修復效果,從圖1-4分別是帶掩碼的圖像、GLCIC算法修復效果、Pconv算法修復效果、Shift-Net算法修復效果、CTSDG算法修復效果、本文修復效果和真實圖像.

由圖4可以看出,GLCIC的修復效果是在第2列,修復后圖像有著明顯的的偽影和模糊,特別是在眼睛和眉毛附近,修復效果很不理想.Pconv算法修復結果在第3列,可以看出其修復效果好于前面的算法,不過第一張眼鏡的修復效果不理想,還有第三張的鼻子和嘴巴有些模糊,產生了粘連.Shift-Net算法修復效果在第4列,可以看出其修復效果也不是很好,第一張圖像中的眼鏡只修復好了一半,第二張和第三張圖像的眼睛處出現了模糊和偽影現象,修復后的圖像沒有得到很好的修復效果.CTSDG算法修復效果在第5列,可以看出其修復效果在視覺上有了很大的提升,但是依然存在一些問題,比如第一張修復的圖像雖然修復出了眼鏡輪廓,但是在結構上還是不連貫,第二張修復圖像除了額頭上有一點偽影,整體的修復還是令人滿意的.第三張修復的圖像也達到了預期的修復效果,但是在圖像左側的眉毛處還是存在瑕疵.本文模型修復效果在第6列,可以看出修復圖像已經達到了很好的視覺效果,和真實圖像已經十分接近,沒有出現明顯的模糊現象,也沒有很明顯偽影現象,臉部細節得到了很好的修復,修復的整體效果也都優于對比算法.

圖4 不同方法在CelebA數據集中心掩膜修復效果

表1 在CelabA數據集在中心掩碼上各算法修復對比

3.3 定量分析

本文對修復結果還通過峰值信噪比(Peak Signal to Noise Ratio)PSNR[21]、結構相似性(Structural Similarity Index)SSIM[22]和弗雷歇距離(Fréchet Inception Distance,FID)進行定量分析.峰值信噪比是用來檢測修復圖像和真實圖像的細節修復效果,值越大表示修復效果越好.結構相似性衡量的是修復圖像和真實圖像之間結構的相似程度,值越大表示修復結果越好.FID計算的是修復圖像和真實圖像高維特征的相似程度,值越小說明越相似.

表1是在CelebA數據集上各算法在中心掩碼上的性能指標,可以看出本文算法各項指標都取得了最好的效果,說明了本文算法無論在定性分析還是在定量分析上有要優于對比算法.

4 結語

本文提出了一種基于改進重構損失函數的生成對抗網絡圖像修復方法,對重構損失進行改進,可以指導網絡對修復不佳的區域給予更多的關注度,提升修復效果.同時在編碼器和解碼器中引入多尺度稠密卷積模塊,幫助模型在下采樣時加強多尺度特征的提取,并且有助于加強特征的傳遞.跳躍連接處使用的是空洞殘差空間注意力模塊,擴大網絡模型的感受野,加強了低維度特征的利用,提升修復質量.但是本方法還存在一些問題,對于面積比較大并且背景復雜的破損圖像,其修復效果還有待提升,因此接下來的工作將繼續對生成網絡和判別網絡進行改進,增強對大面積缺失的修復效果.

猜你喜歡
尺度重構損失
長城敘事的重構
胖胖損失了多少元
財產的五大尺度和五重應對
玉米抽穗前倒伏怎么辦?怎么減少損失?
北方大陸 重構未來
北京的重構與再造
論中止行為及其對中止犯的重構
宇宙的尺度
一般自由碰撞的最大動能損失
損失
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合