劉嵩山,王華軍,李特,李光志,萬軍,馬瑜
(成都理工大學(xué)計算機與網(wǎng)絡(luò)安全學(xué)院,四川 成都 610059)
在大數(shù)據(jù)時代下,圖像數(shù)據(jù)被人們廣泛使用,但是圖像在采集的過程中,受設(shè)備性能、成本、圖像壓縮等一系列因素的影響導(dǎo)致圖像的成像效果并不理想;因此,無法滿足在一定特殊場景下的需求,如衛(wèi)星遙感[1]、醫(yī)學(xué)[2]、生物特征識別[3]等。
圖像的超分辨率重建(super-resolution,SR)就是用低分辨率圖像生成對應(yīng)的高分辨率圖像的過程。傳統(tǒng)的SR 算法大多是基于插值的超分辨率重建算法,這類算法的優(yōu)點是原理簡單,速度較快。但是其高度依賴于鄰域信息,且重建后的圖像較為模糊,甚至出現(xiàn)振鈴現(xiàn)象。傳統(tǒng)的機器學(xué)習(xí)算法通過對一組包括HR 圖像和LR 圖像的樣本集合進行訓(xùn)練,學(xué)習(xí)得到一個聯(lián)合系統(tǒng)模型。但是這類方法高度依賴于字典設(shè)計,且計算復(fù)雜、實時性不高。近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,特別是卷積神經(jīng)網(wǎng)絡(luò)(CNN)重新被人們重視,越來越多的深度學(xué)習(xí)算法被用于SR 算法中。首次將CNN 用于SR 算法的是SRCNN[4],這種方法比傳統(tǒng)方法效果更好,但是計算量大,進而導(dǎo)致訓(xùn)練速度慢。2015年,隨著何凱明團隊的ResNet[5]問世,很好地解決了深度學(xué)習(xí)算法訓(xùn)練中梯度消失的問題。2016 年Kim等[6-7]首次將殘差網(wǎng)絡(luò)運用于SR 算法中,這一舉措解決了收斂速度慢的問題,優(yōu)化了模型,圖像重建后的質(zhì)量進一步提升。2017 年,Ledig等[8]首次將GAN 應(yīng)用于圖像超分辨率領(lǐng)域,提出了SRGAN。SRGAN 的網(wǎng)絡(luò)模型由生成器和鑒別器兩個部分構(gòu)成。生成器部分將LR 圖像重建成對應(yīng)的SR 圖像,鑒別器部分將生成器生成的高分辨率圖像SR 與真實的高分辨率圖像HR 進行比較然后給出圖像質(zhì)量分數(shù),當生成器生成的SR 圖像能夠使鑒別器分辨不出真的HR 圖像和生成器重建的SR 圖像時,表明網(wǎng)絡(luò)模型的重建效果很好。
基于深度學(xué)習(xí)圖像超分辨率的重建算法取得了很好的效果,但是依然存在以下幾個問題:(1)SRGAN網(wǎng)絡(luò)模型結(jié)構(gòu)本身參數(shù)數(shù)量龐大,包含生成器和鑒別器兩個部分;(2)SRGAN 的生成器網(wǎng)絡(luò)模型中沒有注意力機制,導(dǎo)致圖像特征表達能力不足;(3)以LeakyReLU 函數(shù)作為激活函數(shù)的激活層對小于等于0 的圖像信息數(shù)據(jù)泛化能力不夠,甚至可能出現(xiàn)梯度爆炸。
針對以上問題,本文提出一種基于SRGAN 的圖像超分辨率重建算法SRGAN-E。該算法通過添加輕量級注意力機制,在不大幅度增加模型復(fù)雜程度的情況下提升模型中生成器的部分性能,并優(yōu)化鑒別器中激活函數(shù),以獲得更好的準確性和泛化能力。改進后的算法在DIV2K 數(shù)據(jù)集進行訓(xùn)練,將Set5、Set14、BSDS100、Urban100作為測試集,實驗結(jié)果表明,與SRGAN 相比SRGAN-E的PSNR和SSIM 值均有提高。
SRGAN 網(wǎng)絡(luò)模型由兩部分構(gòu)成。第一部分是生成器,生成器的網(wǎng)絡(luò)模型為SRResNet,網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示,輸入為低分辨率圖像LR,LR∈RM×N×3,低分辨率圖像通過卷積層、激活層后,得到多張?zhí)卣鲌D,特征圖依次經(jīng)過B 個殘差塊,殘差塊由卷積層、BN 層、PReLu 激活層組成。殘差塊將前面得到的特征圖進行深層次提取得到新的特征圖,然后進行上采樣放大圖像,最后通過卷積層將特征圖維度轉(zhuǎn)換為 3,輸出成高分辨率圖像SR。
圖1 生成器模型
SRGAN 算法的第二部分是鑒別器。鑒別器的網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖2所示,分別將重建后的高分辨率圖像SR和真實高分辨率圖像HR 輸入鑒別器,高分辨率圖像通過卷積層后,進入激活層,然后經(jīng)過若干個卷積層、BN 層、激活層后,將特征圖進行平均池化,然后經(jīng)過兩次卷積層,激活層后輸出高分辨率圖像的質(zhì)量分數(shù)。
圖2 鑒別器模型
SRGAN 算法很好地將GAN 運用于圖像的超分辨率重建,在Set5 等測試集上有很好的表現(xiàn),但是也存在參數(shù)數(shù)量巨大且缺乏注意力機制等問題。本文在SRGAN 的基礎(chǔ)上進行改進,提出了一種圖像超分辨率重建算法SRGAN-E。
2.1.1 刪除BN 層,提高圖形的重建效果
BN 層在卷積神經(jīng)網(wǎng)絡(luò)中起著重要作用,不但可以加快訓(xùn)練速度,還具有正則化的效果。BN 層的存在使得卷積神經(jīng)網(wǎng)絡(luò)可以去掉使用頻繁的dropout 層,L1 正則化或L2 正則后,也同樣具備防止過擬合的效果,進而提高模型的訓(xùn)練精度。但是在圖像超分辨率重建過程中,BN 層的存在會降低圖形的重建效果。陳文文[9]詳細闡述了BN 層降低圖形的重建效果的具體原因:BN 層會對輸入到網(wǎng)絡(luò)的每個批次的圖像塊做歸一化處理,歸一化操作會破壞圖像的色彩、亮度等信息;BN 層會使網(wǎng)絡(luò)在每次迭代時都去學(xué)習(xí)適應(yīng)不同的分布,導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練速度大大降低。Lim等[10]的論文中也證明了BN 會增加時間復(fù)雜度,減緩訓(xùn)練速度。因此,本文在改進SRGAN 算法時為了提高圖形的重建效果將刪除BN 層。
2.1.2 引入一維卷積注意力機制,降低參數(shù)數(shù)量
自從神經(jīng)網(wǎng)絡(luò)重新進入人們的視野以來,基于卷積神經(jīng)網(wǎng)絡(luò)的算法不斷創(chuàng)新也推動著計算機視覺技術(shù)的高速發(fā)展,如AlexNet[11]、ResNet[5]、ResNeXt[12]等。近年來,越來越多的科學(xué)家將注意力機制融入卷積神經(jīng)網(wǎng)絡(luò),實踐證明注意力機制在提升算法性能方面有著非常顯著的效果。計算機視覺中的注意力機制可以分為3 種:一是通道域注意力,只關(guān)注圖的空間位置關(guān)系,不關(guān)注通道,如SENet[13];二是空間域注意力,不關(guān)注通道中每個像素點的差異,對特征的所有通道進行加權(quán),如STN[14];三是混合域注意力,既包含通道注意力,又包含空間域注意力,這樣的注意力機制在實際應(yīng)用中應(yīng)用較為廣泛,但是也因為其結(jié)構(gòu)更加復(fù)雜導(dǎo)致模型的參數(shù)量增大進而導(dǎo)致網(wǎng)絡(luò)訓(xùn)練困難,如CBAM[15]。
2020 年,WANG等[16]通過引入一維卷積提出了輕量級注意力模型ECA-Net,因為SRGAN 中參數(shù)個數(shù)太過龐大,本文將參考ECA-Net 的通道注意力進行模型的優(yōu)化。CBAM 注意力機制雖然使得網(wǎng)絡(luò)關(guān)注了上下文信息,但是CBAM 在過程中進行了通道壓縮,使得網(wǎng)絡(luò)在運算過程中舍棄了部分特征圖信息,最終使得注意力機制的特征表達能力下降;因此,本文參考ECA-Net 設(shè)計的注意力機制直接對全局池化后的通道特征圖進行一維卷積,并沒有壓縮特征圖,使得特征圖信息完全保留了下來,而且,在個過程中,也因為一維卷積而沒有對整個特征圖進行二維卷積運算使得參數(shù)數(shù)量不增反降。
2.1.3 改進殘差塊
加入注意力機制后的殘差塊如圖3所示。首先使用全局平均池化和全局最大池化來聚合特征圖F 的空間信息,生成的通道描述符分別為和,然后用卷積核長度為k的一維卷積來聚合該通道k個鄰域內(nèi)的信息,將卷積后的兩個特征元素求和,然后通過Sigmoid 函數(shù)運算得到Mc(F)∈ Rc×1×1,計算過程如式(1)所示。
其中:δ是Sigmoid 函數(shù);表示卷積核大小為k的一維卷積操作。Wang等[16]指出一維卷積核的大小k和通道數(shù)c 成正比,那么k和c之間的映射關(guān)系表示為
其中:最簡單的映射是線性函數(shù) φ(k)=γ·k-b;而通道數(shù)c 通常設(shè)置成2 的冪。根據(jù)線性函數(shù)擴展到非線性,因此將映射函數(shù)表示為
圖3 改進后的殘差塊結(jié)構(gòu)模型
根據(jù)上述函數(shù)推導(dǎo)出:
式中:c是特征圖的通道數(shù);O(x)表示與x最接近的奇數(shù)。通常γ取2,b取1,因此得到k的計算方式為
然后將式(1)中Mc(F)的結(jié)果乘到池化前的特征圖上,這樣的注意力機制便可以讓模型自發(fā)地去注意圖像的重點區(qū)域。最后為了防止出現(xiàn)梯度在深層網(wǎng)絡(luò)中消失的問題,將進入殘差塊的特征圖加到主干網(wǎng)絡(luò)中,計算過程如式(6)、式(7)所示:
X為輸入殘差塊前的特征圖。
在SRGAN 中,鑒別器起著對重建后的圖像進行鑒別的作用,其性能的好壞關(guān)系著最后重建后的圖像的質(zhì)量的好壞,在原SRGAN 中,使用LeakyReLU函數(shù)作為激活函數(shù),其函數(shù)的形式如下:
LeakyReLU 函數(shù)從ReLU 函數(shù)的基礎(chǔ)上優(yōu)化而來,相比較ReLU 函數(shù)而言,函數(shù)值在大于等于0的部分是一樣的,在小于0 的部分,也存在斜率,而不是像ReLU 函數(shù)那樣等于0,這樣就解決了神經(jīng)網(wǎng)絡(luò)在反向傳播過程中的梯度消失的問題。
且LeakyReLU 函數(shù)沒有上限,這樣,在大于0的部分也不會出現(xiàn)梯度消失。
但是,LeakyReLU 函數(shù)沒有下限,且函數(shù)是單調(diào)遞增,函數(shù)在0 點處的左導(dǎo)數(shù)和右導(dǎo)數(shù)不相等導(dǎo)致函數(shù)不光滑。針對以上缺點,本文選擇將Mish[17]函數(shù)作為鑒別器的激活函數(shù),Mish 函數(shù)的形式為
則根據(jù)函數(shù)計算出對應(yīng)的導(dǎo)數(shù)為
由式(10)可知,f′(-1.2)≈0,f′(x)在小于-1.2 的區(qū)間小于0,在大于-1.2 的區(qū)間大于0,則函數(shù)在0點附近會先遞減再遞增,函數(shù)在0 點附近的圖像如圖4所示,函數(shù)沒有上限,最小值大約在-1.2 左右取得,約為-0.31。
首先,相比較LeakyReLU 函數(shù),Mish 函數(shù)有下界,這一特點可以幫助模型實現(xiàn)強正則化效果。因為正則化的目的是防止過擬合,而如果激活函數(shù)沒有下界,則在特征圖中代表像素信息的數(shù)字在輸入激活函數(shù)后可能會越來越小,從而導(dǎo)致網(wǎng)絡(luò)權(quán)重在負方向上一直增大,最后導(dǎo)致網(wǎng)絡(luò)中的神經(jīng)元走向極端。
其次,Mish 函數(shù)并不像LeakyReLU 函數(shù)那樣一直遞增,而是先減小后增大。且在0 點的左半邊小于0,這樣使得輸入的信息為較小的負數(shù)時,通過激活函數(shù)將信息適當放大;而當輸入信息為較大的負數(shù)時,通過激活函數(shù)將信息適當縮小,這樣就能很好地防止梯度爆炸。
最后,Mish 函數(shù)在0 點處連續(xù),且左導(dǎo)數(shù)和右導(dǎo)數(shù)相等,使得函數(shù)在0 點處光滑,這一特性使函數(shù)避免了奇異性,神經(jīng)網(wǎng)絡(luò)在反向傳播時,函數(shù)在0 點處依然可以求導(dǎo),這樣就使得模型具有很好的泛化能力。
綜上所述,在鑒別器中我們選擇將Mish 函數(shù)作為激活函數(shù),且與生成器一樣,去掉BN 層,鑒別器網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖5所示。
圖4 Mish 函數(shù)圖像
圖5 改進后的鑒別器模型
本文所使用的硬件環(huán)境的處理器是Intel(R)Xeon(R) Gold 5218 CPU @ 2.30 GHz,運行內(nèi)存為125 G,顯卡版本為NVIDIA GEFORCE RTX 2080Ti,操作系統(tǒng)為Ubantu20.04。整個實驗基于深度學(xué)習(xí)框架pytorch 1.9 進行,實驗環(huán)境是python 3.8,GPU加速軟件為 CUDA 10.2.89和 CUDNN7.6.5。在訓(xùn)練階段,使用Adam 優(yōu)化器,學(xué)習(xí)率為1e-3,一共訓(xùn)練100 輪。損失函數(shù)為對抗損失和內(nèi)容損失。
3.2.1 訓(xùn)練集
本文采用訓(xùn)練集是圖像超分辨率領(lǐng)域的經(jīng)典數(shù)據(jù)集DIV2K,數(shù)據(jù)集包含800 張訓(xùn)練圖像,100張驗證圖像和100 張測試圖像。訓(xùn)練集中包含低分辨率圖像和對應(yīng)的高分辨率圖像。
3.2.2 測試集
本文采用的測試集是個標準基準數(shù)據(jù)集:Set5,Set14,BSDS100,Urban100。Set5 數(shù)據(jù)集是由5 張圖片組成,應(yīng)用廣泛。Set14 數(shù)據(jù)集共有 14 張圖片。與 Set5 相比,Set14 所包含的圖像更多,分辨率也更高。BSDS100 數(shù)據(jù)集共有 100 張圖片,相比較Set5和Set14,BSDS100 圖像所包含的內(nèi)容更加豐富。Urban100 數(shù)據(jù)集共有 100 張圖片,與BSDS100 數(shù)據(jù)集相比較,分辨率更高。
為驗證改進算法的性能,本文使用峰值信噪比(PSNR)和結(jié)構(gòu)相似性(SSIM)兩種客觀評價標準作為圖像超分辨率重建評價標準。
峰值信噪比(PSNR)經(jīng)常用作圖像壓縮等領(lǐng)域中信號重建質(zhì)量的測量,它非常簡單地通過均方差(MSE)進行定義。兩個m×n單色圖像S和H,峰值信噪比(PSNR)定義為:
結(jié)構(gòu)相似性(SSIM),也是一種全參考的圖像質(zhì)量評價指標,它分別從亮度、對比度、結(jié)構(gòu)三方面度量圖像相似性。
式中:l(S,H)表示亮度比較函數(shù);α為調(diào)節(jié)亮度的參數(shù);c(S,H)表示對比度函數(shù);β為調(diào)節(jié)對比度的參數(shù),β> 0;s(S,H)表示結(jié)構(gòu)函數(shù);γ為調(diào)節(jié)結(jié)構(gòu)函數(shù)的參數(shù),γ> 0。
根據(jù)重建后的圖像和原始高分辨率圖像得到每個測試集上所有圖像的PSNR 值和SSIM 值,然后在每個測試集上求得平均值,得到最終的PSNR值和SSIM 值。
3.4.1 消融實驗
在改進算法的過程中,本文將鑒別器中的激活函數(shù)從LeakyReLU 函數(shù)改為Mish 函數(shù),為了驗證這一選擇是合理的,我們改變前文中的生成器部分,鑒別器部分在去掉BN 層以后,還是使用LeakyReLU函數(shù)作為激活函數(shù),然后進行訓(xùn)練,得到權(quán)重文件后在測試集上進行測試,然后和鑒別器中的激活函數(shù)改變后的效果進行比較,得到表1和表2。
表1 改進后的算法鑒別器中分別為LeakyReLU 函數(shù)和Mish 函數(shù)的PSNR 對比結(jié)果
表2 改進后的算法鑒別器中分別為LeakyReLU 函數(shù)和Mish 函數(shù)的SSIM 對比結(jié)果
由表1和表2可知,在測試指標PSNR 中,Set5和BSDS100 兩個數(shù)據(jù)集上,LeakyReLU 函數(shù)的表現(xiàn)更好,在另外兩個數(shù)據(jù)集上Mish 函數(shù)表現(xiàn)更好,但是在測試指標SSIM 中,4 個測試集上,Mish 函數(shù)的表現(xiàn)都更好。Set5和BSDS100 兩個數(shù)據(jù)集與Set14和Urban100 數(shù)據(jù)集相比,Set14和Urban100兩個數(shù)據(jù)集內(nèi)容更加豐富,分辨率也更高,Mish 函數(shù)對于分辨率更高的圖像的效果更好,而LeakyReLU函數(shù)對于低分辨率的圖像的效果更好。所以盡管出現(xiàn)了LeakyReLU 函數(shù)表現(xiàn)更好的特殊的情況,本文還是認為Mish 函數(shù)作為激活函數(shù)更好,特別是對高分辨率的圖像更是如此。
3.4.2 對比實驗
為了驗證本文優(yōu)化算法的效果,本文選取了一些經(jīng)典算法進行實驗,先將每個算法訓(xùn)練100 輪,得到相應(yīng)的權(quán)重文件,然后在4 個測試集上進行測試得到在放大因子4 倍的情況下的4 個測試集的PSNR和 SSIM 值,具體如表3和表4所示。
表3 每個算法在4 個測試集上的PSNR值
表4 每個算法在4 個測試集上的SSIM值
由表3和表4可知,改進后的SRGAN-E 算法與原始的SRGAN 算法相比,在4 個測試集上PSNR的平均值增加了0.345,SSIM 的平均值增加了0.009,進而證實了改進的SRGAN-E 算法是有效的。
為驗證前文闡述的參數(shù)數(shù)量減少的真實性,本文在實驗時通過pytorch 提供的parameters()函數(shù)獲取網(wǎng)絡(luò)的參數(shù)數(shù)量(如表5所示),由于鑒別器的優(yōu)化不涉及參數(shù)數(shù)量的改變,所以表5中只是生成器的參數(shù)。
表5 生成器參數(shù)數(shù)量
由表5可知,SRGAN-E 算法的生成器參數(shù)數(shù)量與SRGAN 算法相比,不增反降,減少了1 388 個。圖像的重建效果卻有所提升。SRGAN+CBAM 的方法雖然提升了重建效果;但是基于CBAM 的注意力機制中存在兩次二維卷積,使得參數(shù)數(shù)量在原模型上進一步增加,而且,也因為卷積運算時壓縮了特征圖的通道數(shù),使得圖像信息損失進而導(dǎo)致重建效果無法進一步提高。本文所提出的算法通過一維卷積的方式保留了圖像的信息,也因為一維卷積的卷積核規(guī)模更小,使得參數(shù)有所下降,且模型的性能無論與較原始的SRGAN 算法相比,還是與SRGAN+CBAM 算法相比,算法的性能都得到了提升。
為了展示改進算法的重建效果,我們從測試集中隨機選取了一張低分辨率圖片分別進行原始SRGAN 算法測試和本文改進后的SRGAN-E 算法測試,然后得到的效果如圖6所示。
由圖6可以看出,無論是客觀測試指標上還是從視覺效果上,都可以看出本文提出的SRGANE 算法都比原始SRGAN 算法在提升圖像重建效果的性能上更加優(yōu)異。
圖6 放大因子為 4 倍的重建圖像結(jié)果
為了解決SRGAN 算法中存在的問題,本文通過添加一維卷積注意力機制,優(yōu)選激活函數(shù)等措施,提出了一種改進的圖像超分辨率重建算法SRGAN-E。與原始的SRGAN 算法相比,改進后的SRGAN-E 算法在4 個測試集上的PSNR和SSIM兩個評價指標上都有所提升,且減少了SRGAN 中的生成器參數(shù)數(shù)量。在本文中,僅僅是對生成器和鑒別器的性能進行了優(yōu)化,雖然參數(shù)數(shù)量有所減少,但是數(shù)量依舊還是龐大,還需要進行更加深層次的優(yōu)化以到達在不降低重建圖像質(zhì)量的情況下提高模型訓(xùn)練速度的目的。