劉慶俞,胡 瑩,陳 磊,肖 強,劉 磊
圖像修復是機器視覺領(lǐng)域中的一個重要研究子課題,它的研究目的是在圖像中恢復缺失部分、修復損壞區(qū)域,并盡可能恢復到原始圖像的效果.目前圖像修復技術(shù)已廣泛應用于數(shù)字圖像處理、計算機圖形學、醫(yī)學影像處理、視頻編碼等領(lǐng)域.
傳統(tǒng)的圖像修復主要有基于像素擴散和像素塊的修復方法,典型的算法有基于全變分的修復方法[1]、基于曲率驅(qū)動擴散修復方法[2]、基于快速近鄰場算法[3]、基于補丁優(yōu)先級算法[4]等.基于擴散的方法通常只能修復缺失區(qū)域比較小的圖像,且受限于缺失區(qū)域周圍的像素信息,難以修復現(xiàn)實世界具有復雜紋理細節(jié)信息的圖像.像素塊的修復方法優(yōu)于擴散的方法,但是其計算量會明顯增加,且只能修復與訓練集中相似的缺失區(qū)域,修復效果嚴重依賴原始數(shù)據(jù)集.近年來,隨著深度學習技術(shù)的不斷發(fā)展,基于深度學習的圖像修復方法取得了顯著的成果.尤其是基于生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)[5]的圖像修復方法[6?9]逐漸成為人們的關(guān)注熱點.相比于傳統(tǒng)的圖像修復方法,基于GAN 的圖像修復方法和模型能夠更好地保留圖像的底層結(jié)構(gòu)和紋理信息,并且具有良好的魯棒性和泛化能力[10?11].
Context Encoder(CE)[12]是首個基于生成對抗網(wǎng)絡(luò)的圖像修復方法,整體結(jié)構(gòu)為編碼?解碼器結(jié)構(gòu).由于其在圖像生成過程中未充分考慮到全局一致性與語義連貫性,導致缺失區(qū)域修復后存在嚴重的模糊和邊界突出現(xiàn)象.為解決該問題,本文構(gòu)建了以UNet[13]結(jié)構(gòu)為基礎(chǔ),融合了殘差模塊、全局一致?lián)p失和TVLoss的圖像修復方法,旨在獲得更好的圖像修復效果.
生成對抗網(wǎng)絡(luò)是由IAN GOODFELLOW 提出的一種深度學習模型,其成果在圖像、語音、文本生成等領(lǐng)域都取得了一定的成果,被認為是深度學習領(lǐng)域的一項重要進展.生成對抗網(wǎng)絡(luò)通過讓兩個子網(wǎng)絡(luò)以相互對抗的方式生成能夠“騙過”人類的新數(shù)據(jù).這兩個子網(wǎng)絡(luò)分別稱為生成器(Generator)和判別器(Discriminator).生成器負責生成新樣本,并盡可能使其與真實樣本相似,以達到欺騙判別器的目的;判別器負責區(qū)別真實樣本和假樣本,并盡可能將兩者區(qū)分開.生成器和判別器通過不斷地對抗學習來提高各自的能力,最終促使生成器生成具有逼真程度的數(shù)據(jù).
GAN 的訓練過程可以形象地比喻為一場“博弈”,生成器和判別器之間進行不斷地互動,其過程可以用以下公式表示:
式中:x表示真實數(shù)據(jù);z表示生成器的輸入,即隨機噪聲;D(x)和D(G(z))分別表示判別器對真實數(shù)據(jù)和生成樣本的預測結(jié)果;minGmaxD表示生成器和判別器的優(yōu)化目標;Preal(x) 表示真實數(shù)據(jù)的數(shù)學分布;Pz(z)表示生成器輸入隨機噪聲數(shù)據(jù)的分布函數(shù);Ex~Preal(x)表示真實數(shù)據(jù)的期望概率;Ez~Pz(z)表示生成樣本的期望概率.
殘差網(wǎng)絡(luò)(Residual Network,ResNet)是由何凱明等人于2016 年提出的一種深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[14],在圖像識別、語義分割和自然語言處理等領(lǐng)域都取得了很好的效果.它通過引入“殘差塊”(Residual block)來解決深度神經(jīng)網(wǎng)絡(luò)中存在的梯度消失和梯度爆炸問題,使得網(wǎng)絡(luò)可以更深、更容易訓練和收斂.
在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,多個卷積層通常會被串聯(lián)起來形成一個深層網(wǎng)絡(luò),如VGG等.但是,在網(wǎng)絡(luò)變得更深時,通常會出現(xiàn)訓練難度增加、精度下降等情況,被稱為“退化問題”.其原因在于:當信息需要穿過多個卷積層時,由于每個卷積層都會對輸入進行非線性變換,導致后面的卷積層無法獲取到前面卷積層所丟失的信息,從而使得網(wǎng)絡(luò)的表達能力降低.為了解決這個問題,ResNet 引入了殘差塊(Residual block),該塊包含了兩個卷積層,另外使用了跨越連接(Skip Connection)將輸入直接進行1*1 卷積,然后傳遞到后面的卷積層,如圖1 所示.這樣,即使特征信息在處理過程中丟失,原始輸入仍然可以保留并直接傳遞到后面的卷積層,從而實現(xiàn)跨越連接的效果.
圖1 殘差塊結(jié)構(gòu)圖
F(X) 表示殘差塊中的變換函數(shù),X表示輸入.因此,F(xiàn)(X) 實際上表示網(wǎng)絡(luò)要學習的部分,而X則是該部分未被學習到的部分.通過這種方式,卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)可以變得更多,其特征提取能力會更強.
本文在CE 模型的基礎(chǔ)上,使用UNet 跳層連接改進生成器的網(wǎng)絡(luò)模型.同時,生成器網(wǎng)絡(luò)的下采樣模塊使用了改進的殘差模塊,以達到在下采樣過程降低模型參數(shù)的同時不減少圖像可提取的特征.生成器由7 個下采樣模塊和6 個上采樣模塊組成,假設(shè)生成器輸入圖像為(3,128,128),則生成圖像為(3,64,64),如圖2 所示.生成的圖像和真實圖像分別輸入判別器網(wǎng)絡(luò)進行判別處理.生成器生成的圖像為缺失圖像的修復結(jié)果,把其和原始輸入圖像結(jié)合得到修復的大圖.
圖2 模型整體結(jié)構(gòu)
殘差模塊可以在深度卷積神經(jīng)網(wǎng)絡(luò)中提升圖像的特征提取能力,考慮到不同大小的卷積核能夠提取不同尺度的圖像特征,因此對原始殘差模塊進行改進.通過增加一個5*5的卷積分支來增強殘差模塊的提取效率,具體如圖3 所示.
圖3 改進后殘差模塊
F(X) 表示殘差塊中3*3 和5*5 分支的變換函數(shù),X表示輸入.這時,F(xiàn)(X)實際上表示網(wǎng)絡(luò)要學習的部分.改進后殘差模塊通過3 個分支中的卷積步長來控制特征圖的大小變化.
生成器的每個下采樣模塊使用2 個改進后的殘差模塊,其中一個殘差模塊進行特征圖的下采樣操作,如圖4 所示.上采樣模塊使用反卷積提升圖像分辨率,使得生成器的輸出圖像達到指定大小.
圖4 下采樣模塊結(jié)構(gòu)圖
判別器網(wǎng)絡(luò)的主要作用是區(qū)分真實圖像和生成的“假”圖像,因此判別器的輸入圖像和生成器的輸出圖像大小一致.判別器網(wǎng)絡(luò)通過3 個卷積層將輸出變化為(1,8,8)的矩陣,而不是一個具體標量值,矩陣中的每一個值代表判別器輸入圖像的一個小的區(qū)域.如果一個區(qū)域是來自真實圖像,則其對應的值為1,否則為0.利用patchGAN[15]的思想可以使圖像的局部紋理細節(jié)得到有效增強.
在生成器和判別器的對抗訓練過程中,損失函數(shù)起著至關(guān)重要的作用.生成器網(wǎng)絡(luò)生成缺失區(qū)域的小圖,小圖嵌入遮擋缺失區(qū)域得到修復后的完整圖像.因此,考慮增加全局L1 損失約束圖像的整體一致性.針對修復區(qū)域的邊界突出問題,引入TVLoss降低圖像噪聲和保持邊界的平滑性.生成器損失包括對抗損失、局部L1 損失、全局L1 損失和TV Loss損失,具體如下所示:
式中:Lossadv、LossL?L1、LossG?L1、LossTV分別是 對抗損失、局部L1 損失、全局L1 損失和TVLoss損失;γadv、γL?L1、γG?L1、γTV分別對應四種損失函數(shù)的權(quán)重.
判別器損失如下:
式中:Lossadv表示對抗損失.
CelebA 圖像數(shù)據(jù)集是香港中文大學制作的開放數(shù)據(jù)集,包含全球10 000 多位名人的202 599 張圖片,是圖像和人臉處理的非常好用的數(shù)據(jù)集.本文隨機選取其中46 000 張圖像作為訓練數(shù)據(jù)集,另外選取1 000 張圖像作為測試數(shù)據(jù)集.考慮到硬件條件限制,所有圖像統(tǒng)一縮放到128*128 尺寸,遮擋區(qū)域為居中64*64 大小.
實驗操作系統(tǒng)為Ubuntu 20.04,Python 3.7,Pytorch 1.10.實驗超參數(shù)batch size 為1 000,γadv為0.02,γL?L1為0.48,γG?L1為0.48,γTV為0.02,優(yōu)化器為Adam,生成器和判別器的學習率都是0.000 2.
為了驗證所設(shè)計模型的有效性,將CE 模型的生成器添加UNet 結(jié)構(gòu)(簡稱CE?UNet 模型),進行定性和定量的對比實驗.在定量分析方面,使用峰值信噪比(PSNR)和結(jié)構(gòu)相似性(SSIM)兩項指標進行數(shù)據(jù)分析.PSNR一般用于衡量最大值信號和噪音數(shù)據(jù)之間的圖像質(zhì)量參考值.PSNR值越大,表示圖像失真越少.SSIM是一種衡量圖像之間相似度的指標.SSIM值越大,表明原圖和生成圖像相似度越高.
圖5 為3 種修復模型的修復結(jié)果圖,其中第一列為矩形遮擋人臉圖像,后面依次是CE模型、CE?UNet 模型和本文模型,最后一列為原始未遮擋人臉圖像.通過直觀比較,本文模型的修復效果最好,修復后人臉各器官相對自然,符合人們視覺認知習慣.而CE 模型、CE?UNet 模型的修復結(jié)果存在明顯的圖像模糊和語義不連貫等問題,可讀性較差.
圖5 修復結(jié)果對比
表1 清晰地說明了本文修復結(jié)果在PSNR和SSIM指標上的優(yōu)越性.CE?UNet 模型因為存在跳層連接,可以很好地將圖像底層特征和高層抽象特征融合,所以比原始CE 模型修復結(jié)果略好.
表1 修復結(jié)果的定量分析
對生成器而言,除了對抗損失,還有局部L1 損失、全局L1 損失和TVLoss.因此,設(shè)計了生成器損失函數(shù)的消融實驗,在生成器的損失函數(shù)中分別移除局部L1 損失、全局L1 損失和TVLoss,然后進行定量和定性分析.
通過圖6 可以得出,局部L1 損失、全局L1損失和TVLoss三種損失函數(shù)對圖像的最終修復效果都起著一定的促進作用.其中,當移除局部L1 損失時,圖像修復效果最差,局部L1損失可以實現(xiàn)遮擋區(qū)域像素級別的處理.而全局L1 損失和TVLoss則可以很好地保證圖像的整體連貫性和修復邊界的平滑過渡.
圖6 修復結(jié)果(損失函數(shù)驗證)
表2 說明,三種損失函數(shù)對圖像的最終修復都起著不同程度的作用,三種損失函數(shù)共同使用,聯(lián)合對抗損失,修復效果才能達到最優(yōu).
表2 損失函數(shù)的定量分析
圖像修復具有重要的理論研究價值和實際意義.在CE 算法的基礎(chǔ)上,使用UNet 結(jié)構(gòu)替換生成器模型,同時在其下采樣模塊中引入多路分支殘差模塊進行特征提取.生成器損失函數(shù)綜合使用了對抗損失、局部一致?lián)p失、全局一致?lián)p失和TVLoss損失,從而提高圖像的修復能力.實驗結(jié)果表明,本文提出的改進生成對抗網(wǎng)絡(luò)在CelebA 數(shù)據(jù)集上取得了較好的圖像修復效果,和CE 等修復模型相比,主客觀評價指標均得到提升.