楊記鑫,胡偉霞,趙 杰,徐靈飛
(1.成都理工大學 工程技術學院,四川 樂山 614000;2.核工業(yè)西南物理研究院,四川 成都 610225)
圖像作為一種信息載體,在人類社會中扮演著重要的角色,由于硬件設備、自然環(huán)境、人為因素和其他因素的影響,很容易造成圖像模糊,在雙目測距系統(tǒng)中,圖像質量在很大程度上影響目標檢測的精度。提高圖像分辨率最直接的方法是從硬件方面入手,但這會面臨很大的成本問題,因此采用軟件技術提升圖像的分辨率具有重要的意義。圖像超分辨率圖像重建(SR)是指通過軟件算法對圖像進行處理,將低分辨率(LR)圖像轉換成高分辨率(HR)圖像的技術。隨著計算機技術的不斷發(fā)展,圖像超分辨算法越來越完善,常用的有插值法、重建法、學習法等[1-3]。當圖像放大倍數較大時,插值法得到的圖像質量較差。重建法復雜度較高,圖像重建效果優(yōu)于插值法,基于學習的算法主要以卷積神經網絡和生成對抗網絡為主,后者得到的圖像質量較好[4-5]。
2014年,Dong等人提出了圖像的超分辨SRCNN網絡,該算法的重建效果相對較高。在低分辨率圖像的上采樣操作中,改進的FSRCNN算法使用反卷積層[6-7]。Shi等人提出的ESPCN網絡在低分辨率圖像塊上進行特征提取,上采樣部分使用亞像素卷積,計算量較小并且重建效果較高[8]。2016年,Kim等人提出VDSR網絡增加了網絡層數和殘差網絡,提高了圖像重建效果[9]。Lai等人提出的LapSRN網絡通過逐步上采樣的方式實現重建[10]。Kim等人提出了DRCN網絡增加了殘差學習網絡層數以及遞歸神經網絡結構[11]。2017年,Ledig等人提出了SRGAN網絡,該網絡主要由產生樣本的生成器和判別真實樣本還是生成樣本的判別器組成,并通過不斷的學習使得生成圖像接近真實圖像從而使重建的圖像更逼真[12]。Lim等人提出的EDSR網絡增加了卷積層并減少了部分殘差模塊,圖像重建效果較好[13]。
該文提出了一種基于生成對抗網絡的圖像超分辨算法,并對網絡結構進行改進。設計的生成器刪除了殘差塊的BN層,增加了特征識別的相關算法,在低分辨率圖像上提取特征,通過卷積計算得到高分辨率圖像。在判別器中結合PatchGAN模型[14],減少了運算參數,盡可能節(jié)省運算的時間。
生成對抗網絡(GAN)是通過對抗的方式去學習數據分布的一種網絡模型,該網絡主要由產生樣本的生成器和判別真實樣本還是生成樣本的判別器組成,其主要網絡結構如圖1所示[15]。
圖1 生成對抗網絡模型
將一個隨機樣本輸入到生成器G中,生成器通過計算得到一個相應的生成樣本,把生成樣本和真實樣本同時輸入到判別器D中,判別器主要區(qū)分該樣本是來源于生成樣本還是真實樣本,并輸出判別結果,然后進行誤差修正,通過不斷的學習,生成網絡生成更像真實數據的假樣本,使得生成樣本與真實樣本的判別結果逐漸接近,以至于判別器無法區(qū)分該數據是生成樣本還是判別樣本,從而提高生成樣本的準確性。
若D(y)表示樣本y是真實樣本的概率,該網絡學習過程可表示為:
Ex-Px[log(1-D(G(x)))]
(1)
其中,Pdata表示真實樣本的概率分布,Px表示潛在變量x的概率分布。x和y分別對應了隨機樣本和生成樣本。
當輸入來自真實數據分布時應最大化D(y),當輸入是生成器G輸出的假樣本時應最小化其輸出D(G(x)),在模型訓練過程中,也就是說生成器G希望通過最小化G(x)為假樣本的概率來欺騙判別器D。生成對抗網絡的訓練存在很多問題,運算量大,很多研究人員提出了優(yōu)化方法[16]。
文中提出的基于生成對抗網絡的超分辨算法,主要工作是對生成網絡和判別網絡中的結構進行改進,算法結構如圖2所示。輸入的低分辨率的圖像經生成網絡輸出生成的高分辨率的圖像,生成網絡主要由兩層卷積運算進行特征提取,再經過兩層亞像素卷積運算生成高分辨的圖像。為了確保訓練的穩(wěn)定性和一致性,生成網絡中不使用BN層。判別網絡主要由6層卷積層組成,并且每個卷積層后使用相同的激活函數。為防止計算中梯度消失造成的誤差,同時增加判別網絡結構的平穩(wěn)性,在判別網絡的第二到五層的卷積層后面加入BN層。
圖2 算法結構
傳統(tǒng)的SRGAN生成網絡主要由三部分組成:輸入部分、Res Net部分、輸出部分。輸入圖像大小為256×256×3,經過填充層和卷積層運算得到64個256×256大小的特征信息圖。Res Net部分主要由九個Res Net層形成最終輸出的卷積層,最后生成256 ×256×3的恢復圖像,低分辨率圖像通過上采樣得到高分辨率圖像,在較高的分辨率上進行卷積操作會增加計算復雜度。文中設計的生成網絡首先是在低分辨率圖像上進行特征提取,保證特征信息的準確性,其次卷積運算生成高分辨率圖像。采用兩層的特征提取,進一步增大特征提取的準確性,并修改了網絡的參數,增加網絡層深度,修改卷積核,然后再進行高分辨運算,網絡結構如圖3所示。
圖3 生成網絡結構
生成網絡主要由兩個部分構成:兩層特征提取模塊和兩層圖像重建模塊。輸入低分辨的圖像,首先通過兩級卷積提取特征值,提高圖像特征提取的準確性。其次采用兩級亞像素卷積的方式生成高分辨圖像,防止單次放大產生的誤差較大,也可以降低訓練和測試的復雜度,減少了在輸出卷積層的計算時間。
卷積運算公式為:
F(x)=x*W+B
(2)
式中,x為輸入圖像,W為卷積核,B為偏置。F(x)為輸出圖像,*為卷積運算。
每個層卷積層后面使用的激活函數為Relu函數:
F(x)=max(0,x)
(3)
該函數主要計算輸入大于0的樣本特征,將其他不滿足的數據表示為0,可以簡化網絡計算,節(jié)省訓練時間。
因此,每一層輸出圖像為:
F(x)=max(0,x*W+B)
(4)
亞像素卷積計算方式為:
F(x)=S×(W*x+B)
(5)
式中,F(x)為輸出圖像,S為周期的變換算子,用于實現像素的重新排列,W為卷積核,x為輸入圖像(即上一層的輸出),B為偏置。
計算中使用相同的卷積核可以得到圖片的局部細節(jié)特征,能夠減少網絡參數和降低網絡的復雜度,多個局部特征可以計算得到全局特征。
假設輸入圖像大小為n×n,卷積核為f×f,在圖片四周填充p層,卷積步長為s,則輸出圖像的大小為:
(6)
第一級卷積層采用5×5×64的卷積核,步長為1,填充為2,得到與輸入圖像大小相同,具有64個通道的特征圖像;
第二級卷積層采用5×5×32的卷積核,步長為1,填充為2,得到與輸入圖像大小相同,具有32個通道的圖像,前兩級卷積完成特征提取。
第三級卷積層采用3×3×12的卷積核,步長為1,填充為1,采用亞像素卷積的方式將圖像重新排列得到放大2倍的圖像;
第四級卷積層采用3×3×12的卷積核,步長為1,填充為1,再將圖像重新排列得到放大2倍,共放大4倍,得到生成的高分辨圖像。
生成網絡G生成的HR圖像和真實的HR圖像一起輸入到判別網絡中,判別網絡主要判別圖片是來源于生成圖像還是真實圖像,通過學習使得生成圖像更像真實圖像,判別網絡的設計好壞影響整個生成對抗網絡的運算結果。SRGAN網絡中的判別網絡結構相對簡單,該網絡細節(jié)恢復效果差,并且對測試樣本比較敏感,運算參數相對較多[17]。文中判別網絡的設計采用先分組再整合的思想,將生成圖像劃分成一定數量的圖像塊,計算每一部分的判別結果,然后將所有圖像塊的判別真假組合起來,作為最終的判別結果。判別網絡D將每一張輸入圖像分成N×N大小的圖像塊,并對每一個圖像塊進行真假的判斷,若來自生成圖像,則記為1,來源于真實圖像,則記為0,然后輸出判斷概率,將每一部分的圖像判斷概率組成一個矩陣,求該矩陣的平均均值作為判別器的輸出。判別器主要由6層卷積層組成,判別器網絡結構如圖4所示。
圖4 判別器網絡結構
首先,將生成高分辨圖像和真實高分辨圖像分割成相同大小、相同數量的圖像塊,并對每個圖像塊進行標號。
然后,將每一對相對應的圖像塊輸入到判別網絡中。該網絡的前5層卷積采用3×3的卷積核,最后一層采用1×1的卷積核,并且后5層卷積層都添加BN層。激活函數為LeakyReLu函數,最后使用全局平均池化操作代替全連接層[18]。
最后,將所有圖像塊的判別結果求均值,作為最終的判別結果。
在輸入信息和輸出信息間連接了多個網絡。為了快捷連接,可以采用跨越幾個層的殘差網絡[19]。為了提升算法的運算效果和節(jié)省計算時間,網絡結構中增加了局部殘差網絡,主要結構如圖5所示。
圖5 殘差網絡結構
(7)
其中,m和u為加權系數,通過學習獲得。
2.4.1 內容損失函數
采用生成對抗網絡是為了重建圖像,恢復從低分辨率的圖像到高分辨率圖像的圖像信息,使用均方誤差(MSE)損失函數,計算公式為:
(8)
2.4.2 對抗損失函數
生成網絡的生成高分辨圖像和真實的高分辨圖像的對抗過程中,判別器主要是從低分辨率的圖像SR生成更像真實圖像的假樣本,提升判別網絡可得到該圖像真概率,文中仍采用SRGAN的對抗損失函數,計算公式為:
(9)
2.4.3 感知損失函數
為了生成細節(jié)更加清楚的圖像,考慮到生成圖像和目標圖像的特征圖區(qū)別,使用激活前的特征層信息進行計算,文中設置感知損失函數lper,最小化兩個激活特征之間的距離,感知損失函數的計算公式為:
(10)
文中使用的環(huán)境是:Intel i7-8550U CPU,Windows10操作系統(tǒng),Pycharm2018,圖像處理實驗所采用的數據集是常見的超分辨數據集Set5、Set14、Bsd100,并采用PSNR/SSIM作為評價標準,同時記錄在Set數據集的運行時間TIME,并與常用的超分辨算法雙三次插值算法(Bicubic)、SRCNN、FSRCNN、ESPCN、SRGAN和文中參考的算法TESRGAN進行對比。通過多幅圖片進行運算測試,計算PSNR/SSIM和TIME的平均值,實驗結果如表1和圖6所示。
在圖6中,由圖像主觀質量評價可以得出,通過Bicubic、SRCNN和ESRCN算法得到的超分辨圖像(a)、(b)和(c),紋理細節(jié)不易看得清楚且伴有平滑現象,而(d)、(e)和(f)是分別由SRGAN算法、TESRGAN算法和文中算法得到的HR圖像,與上面三組圖像有很明顯的區(qū)別,在圖像紋理細節(jié)和邊框模糊度上得到了很明顯的改善,觀察翅膀和眉毛等細節(jié)可知,文中超分辨算法實現重建圖像的信息相對更加清晰,視覺效果感更高。但僅局限于靠人眼的主觀質量評價指標,對圖像亮度變化較敏感,而不易分出中間和最右邊圖像的細小差異。
表1 不同算法測試對比
圖6 超分辨重建效果對比
從表1可知,在數據集Set5、Set14和Bsd100的超分辨測試下,文中算法與傳統(tǒng)的插值法Bicubic、SRCNN和ESRCN算法相比,運算時間較長,主要是由于傳統(tǒng)的Bicubic采用數學的線性插值,SRCNN和ECPCN算法只有卷積運算,運算量相對較少,因此這三種算法運行時間較短。但與SRGAN和參考的TESRGAN算法相比,文中算法的運算時間要短,主要是由于SRGAN只采用卷積層,結構相對簡單,網絡初始值對網絡運算結構相對敏感,計算量大,收斂難度大;而TESRGAN算法增加網絡層數以及卷積核個數,使得網絡需要更多的時間收斂,顯著增加了網絡訓練時間。
從圖像的峰值信噪比、結構相似性的角度評價,SRGAN、TESRGAN算法和文中算法得到的高分辨圖像PSNR/SSIM值,遠高于Bicubic、SRCNN和ESRCN算法,是因為生成對抗網絡的代價函數使重建結果有較高的信噪比。主要是由于SRGAN網絡結構相對簡單,計算結果的值也可能并不是最優(yōu)解。而參考中的TESRGAN算法增加了網絡層數和卷積核個數,實驗結果可能較好,但是也比較容易得出局部最優(yōu)解。文中算法的生成網絡是在低分辨率圖像上提取特征值,特征提取部分采用兩層卷積網絡,可以提升運算結果的準確性。兩級圖像上采樣運算,能防止單次放大產生的誤差較大,也可以降低訓練和測試的復雜度,減少了在輸出卷積層的計算時間。重建效果優(yōu)于以上幾種算法。
提出的基于生成對抗網絡的圖像超分辨算法,主要從生成器和判別器的結構上進行改進,生成器的設計借鑒了ESPCN的模型,在低分辨率圖像上提取特征,計算得到高分辨率圖像,可以提升運算結果的準確性。特征提取部分采用兩層卷積網絡,可以提取更多的圖像特征,并修改了網絡的參數,增加網絡層深度,修改卷積核,在保證精確度的基礎上,盡可能節(jié)省運算時間。判別器的設計采用先分組再整合的思想,將生成圖像劃分成一定數量的圖像塊,計算每一部分的判別結果,然后將所有圖像塊的判別真假組合起來,作為最終的判別結果。經實驗驗證,該算法的超分辨重建效果較好,運行時間也相對較少。