劉慶俞,劉 磊,陳 磊,肖 強
(1.淮南師范學院 計算機學院,安徽 淮南 232038;2.國家大學 計算機與信息技術學院,菲律賓 馬尼拉 0900)
圖像修復是指將一幅破損或有缺失的圖像利用技術手段進行補全,使其語義連貫、紋理細節合理。圖像修復的目標是通過重建破損區域像素來盡量恢復到原始圖像。圖像修復是計算機視覺領域的一個熱點研究課題,在很多方面發揮著巨大作用,比如字畫的破損修復、圖像的超分辨率、圖像去霧[1-2]、公安人員對口罩遮擋嫌疑人的人臉識別等。
圖像修復技術主要有傳統修復方法[3-5]和基于深度學習的修復方法[6-8]。擴散理論的傳統修復算法是利用周邊的像素來填補缺失區域,它只能修復小的缺失區域且很難生成語義豐富的圖像結構?;趬K的修復方法可以從源圖像集中提取相似的像素塊來快速填補圖像。它的主要問題是假設缺失區域和其他圖像具有相同或相似的像素信息。因此,對于簡單結構的圖像修復效果較好,但是對于復雜的缺失區域往往修復效果不佳,且計算量較大。近年來隨著卷積神經網絡的快速發展,尤其是生成對抗網絡的出現,基于深度學習的圖像修復算法為圖像修復提供了新的解決思路。這類方法一個重要特點是可以從未遮擋的其他區域內提取到有意義的語義信息,進而生成新的內容重建缺失像素。
Context Encoder(CE)[9]是首個基于生成對抗網絡[10]的圖像修復方法,整體結構為編碼-解碼器結構。編碼器將缺損圖像映射到低維特征空間,解碼器用于重構圖像,編碼后的特征通過基于通道的全連接層融合輸入至解碼各階段。但由于在生成過程中未充分考慮到全局一致性與語義連貫性,導致重構部分存在較嚴重的視覺模糊現象。
為了提升圖像修復效果,本方案在CE模型的基礎上引入UNet[11-13]結構,利用其跳層連接融合低層紋理特征和高層語義特征。另外在生成器的下采樣模塊中引入改進的殘差模塊和自注意力模塊[14],以保證在降低參數量的同時不降低圖像特征提取能力。
生成對抗網絡(Generative Adversarial Network,簡稱GAN)最早是由Goodfellow等人提出的一種深度學習模型,一經提出就被認為是二十年來機器學習領域最酷的想法。GAN網絡的原理結構框架如圖1所示,其中G表示生成網絡(Generator),它通過接收隨機噪聲數據z生成相應的圖像。D是表示判別網絡(Discriminator),用來判斷輸入的圖像x是真實的圖像還是G生成的“假”圖像。判別器的輸出表示x為真實圖像的概率,0表示判定其是假的圖片,1則代表判別器鑒定其為真實圖像。

圖1 GAN網絡結構
GAN的思想主要來源于“零和博弈”理論。研究人員之所以將其引入到深度學習領域,就是利用生成器和判別器這兩個前饋網絡進行最小最大博弈的對抗訓練。訓練過程中鼓勵生成器不斷向真實數據的分布逼近,進而做到生成“以假亂真”的圖像。由于具備這種靈巧的博弈對抗學習機制以及擬合數據分布的潛在能力,可以用來進行圖像修復。因此,可進一步將這種博弈關系表示為:
MinGMaxD(D,G)=Ex~Pdata(x)[logD(x)]+
Ez~Pz(z)[log(1-D(G(z)))]
(1)
式(1)中,z和x分別表示隨機噪聲矢量和從真實數據分布Pdata(x)采樣的真實圖像。D(x)和D(G(z))分布表示對真實圖像和生成圖像的判別結果。式(1)也表示GAN是一種可以生成特定數據分布的模型。
正是因為GAN這種無監督且可產生新內容的博弈過程,使其在圖像處理和圖像修復領域得到更廣泛的關注。在損失函數的作用下,通過判別器的不斷優化,會促使生成器生成更接近于真實圖像的優質圖像。這對于圖像修復技術尤為重要,因為修復結果主觀上就是通過人眼視覺感知、判斷算法的優劣。
自注意力機制是注意力機制的一種,在圖像處理方面,上下文信息對于局部特征的提取非常重要。自注意力機制通過(key、query、value)這種三元組提供了一種有效的捕捉圖像全局上下文信息的建模方式。具體可以表示為:
(2)
式(2)中,f和g分別是一種查詢變換,βi,j表示修復第j個像素時,模型對第i個像素點的關注程度。假設o是N個C維的向量組,配合另外一種變換h,可以得到自注意力層的輸出特征圖oj,具體如式(3)所示。
o=(o1,o2,…,oN)∈RC*N
=Whxi,v(xi)=Wvxi
(3)
于是最終特征輸出為:
yi=μoi+xi
(4)
式(4)中,μ為可訓練的影響因子,其初始值一般為0。xi為輸入,yi即是自注意力機制處理后的輸出特征。隨著訓練的進行,可以獲得從局部到全局的信息。
本文將UNet結構和CE模型相結合,在生成器中加入改進的殘差模塊和自注意力機制來提升圖像修復效果,具體框架如圖2所示。生成器經過連續的下采樣提取特征并降低特征圖大小,在上采樣的過程中得出修復后的小圖。最后將修復后的小圖嵌入遮擋的原始圖像中得到最后的修復圖像。

圖2 模型整體框架
本文假設原始遮擋圖像大小為128×128,遮擋掩碼居中為64×64。生成器由7個下采樣模塊和6個上采樣模塊組成,輸出為修復后的遮擋區域。圖3為下采樣模塊結構,包括2個改進后的殘差模塊,其中一個殘差模塊通過步長stride設置為2來降低特征圖大小。

圖3 下采樣模塊結構
殘差網絡的出現是深度學習領域的重要成果[15],它指出在神經網絡中,較深的網絡應該不會比較淺的網絡效果差,通過輸入的恒等映射即可實現深度神經網絡。圖4左圖即為原始的殘差模塊,它可以解決網絡退化問題。殘差網絡越深,特征提取能力越好??紤]到不同大小的卷積核能夠提取不一樣的特征,本研究在原始殘差模塊的基礎上增加了多尺度卷積神經網絡分支來進行特征融合,從而更好地在下采樣過程中提取有效特征。改進后的殘差模塊包括3路卷積分支,分別是1×1、3×3和5×5的卷積分支,模塊的輸出為3路卷積結果的融合。根據實際需要來計算復雜度,可以調整分支數。卷積分支中,激活函數使用LeakyRelU,使用InstanceNorm2d替換BatchNorm2d。

圖4 多尺度殘差模塊
圖5是上采樣模塊結構,也包括了一個改進后的殘差模塊,步長stride為1,即特征圖大小不變。上采樣模塊中使用了“Concatenate”操作,將處理得到的特征圖與對應大小的上采樣特征圖進行通道維度的疊加處理。這種操作的結構是結合了底層和高層的特征,盡量保持其他未遮擋區域像素的一致。

圖5 上采樣模塊結構
判別器和生成器相輔相成,用于判斷輸入的圖像是真實的“自然”圖像,還是生成器生成的“假”圖像。圖6顯示判別器共有三個卷積操作,分別將輸入圖像大小減半,輸出為(1,8,8)的矩陣。矩陣中的每一個點代表了原始輸入圖像的一個區域。

圖6 判別器結構
在生成對抗網絡中,損失函數起著重要的作用,判別器和生成器分別對應自己的損失函數。生成器損失函數包括L1損失(LossL1)和對抗損失(Lossadv),兩種損失的權重之和1(γL1+γadv=1),具體為:
LossG=γL1×LossL1+γadv×Lossadv
(5)
對于判別器,它接收2種輸入圖像,真實圖像給予高判別值,生成圖像則數值較低。損失函數只采用對抗損失,具體為:
LossD=Lossadv(D)
(6)
本文的圖像修復模型訓練和測試均在Celeb A數據集上進行。該圖像數據集包括202599張各國名人的人臉圖像,選取其中26000張用于模型訓練,1000張用于測試。圖像初始化為128*128,人臉遮擋區域居中且為64×64。
實驗硬件環境為Intel Xeon處理器,128G內存和8塊3090顯卡。軟件環境使用Red Hat 4.8.5,Python 3.7.1,Pytorch 1.10。實驗超參數γadv為1,γL1為100,batch size為300,優化器為Adam。
為了證明模型的有效性,將本文所提的圖像修復算法與CE、CE-UNet(CE模型的生成器添加UNet結構)和GLGAN[16]在同一個圖像數據集上進行對比。圖7為四種修復算法在矩形遮擋的人臉圖像上修復的效果圖(模型訓練到800epoch)。其中,第一列為遮擋人臉圖像,最后一列為原始正常人臉。中間四列依次為不同修復算法的修復結果。顯然,本文修復算法的效果優于其他三種算法。CE和CE-UNet算法修復后的圖像存在明顯的模糊和邊界突出的問題,而GLGAN算法的整體修復效果略差于本文方法。本文修復效果和原始人臉具有較好的一致性,人臉的細節恢復較好,保證了視覺上的自然和紋理的連貫性。

圖7 修復效果圖(800epoch)
為了更好地說明本文修復算法的有效性,使用PSNR(峰值信噪比)和SSIM(結構相似性)[17]兩項參數進行定量數據分析。PSNR一般用于衡量最大值信號和噪音數據之間的圖像質量參考值。PSNR值越大,圖像失真越少。SSIM是一種衡量圖像之間相似度的指標。一般來說,SSIM在評價圖像質量上更能符合人類一般的視覺特性。SSIM使用的兩張圖像中,一張為原始的無失真圖像,另一張為處理后的圖像。顯示本文所提算法的修復結果在PSNR和SSIM兩項指標上也是優于前面3種算法,如表1所示。

表1 修復結果的定量分析表
本文在原始CE模型的基礎上改進了生成器和判別器網絡結構。生成器采用UNet跳層連接,同時下采樣模塊使用了多尺度的殘差模塊和自注意力機制以提高模型的特征提取能力。在對抗損失和L1損失函數的作用下,實現了更好的圖像修復效果。實驗結果表明,本文修復算法在定量分析和定性分析方面都取得了明顯的提升。