陳清江,胡倩楠,李金陽
(西安建筑科技大學 理學院,陜西 西安 710055)
近年來,隨著手機等移動設備的普及,拍照成為了記錄生活的主要方式。但不可避免地會出現相機抖動、物體移動等問題,獲取的圖像出現模糊現象,嚴重影響后續(xù)圖像的使用。除了日常生活中的照片,圖像模糊退化還會發(fā)生在刑事偵察、視頻監(jiān)控、衛(wèi)星成像等[1-2]方面,故圖像去模糊技術具有重大的研究意義和應用價值。
圖像去模糊通常分為兩類,非盲去模糊[3]和盲去模糊[4]。早期的研究大多致力于非盲去模糊[3],即模糊核已知。但在真實應用場景中模糊圖像的模糊核往往是未知的。傳統(tǒng)方法[5]大多基于統(tǒng)計先驗和正則化技術去除圖像模糊,常見圖像先驗包括梯度稀疏先驗[6]、低秩先驗[7]等。但傳統(tǒng)基于統(tǒng)計先驗的去模糊方法采用的圖像先驗大多是假設的,存在假設不正確、細節(jié)丟失等問題。近年來,深度學習已廣泛應用于解決計算機視覺問題,例如圖像識別[8]、圖像分類[9]等問題。Xu等[10]提出基于卷積神經網絡的圖像去模糊方法,但該算法在去模糊過程中丟失了圖像的細節(jié)紋理信息。Hradi等[11]提出基于卷積神經網絡的圖像去模糊算法,但該算法只適用于文本圖像。Su等[12]提出基于卷積神經網絡的視頻去模糊方法,但該算法不適用單幅圖像去模糊。Nah等[4]提出一種多尺度卷積網絡,遵循傳統(tǒng)的“從粗到細”的網絡框架逐漸恢復出更高分辨率的清晰圖像,該算法獲得了較好的效果,但計算量大,運行速度較慢。Zhang等[13]提出了一種深度分層多補丁網絡,利用“從細到粗”的分層方式去除非均勻運動模糊,該算法降低了模型大小,提高了運行速度,但圖像預處理過程較復雜,網絡性能不穩(wěn)定。以上各種算法均未加區(qū)分地處理空間與通道特征信息,事實上,模糊圖像中不同通道以及各個空間位置上包含不同類型的信息,其中一些有助于消除模糊,另一些有助于恢復細節(jié)。
針對目前用于圖像去模糊的單任務卷積神經網絡高頻細節(jié)丟失、不加區(qū)分地處理空間和通道特征信息等問題,本文提出一種基于雙任務卷積神經網絡的圖像去模糊方法,網絡由去模糊子網絡、高頻細節(jié)恢復子網絡以及特征重建模塊組成。由于不同的空間區(qū)域以及不同通道包含不同類型的特征信息,故在去模糊子網絡中將殘差注意力模塊放置在編碼器末端引導解碼器重建出更加清晰的圖像,并在去模糊子網絡中引入八度卷積殘差塊作為整個編解碼子網絡的基礎構建塊,增強特征提取能力的同時降低空間冗余,減少參數量。編解碼網絡結構可以增加網絡的感受野以及獲取更多不同層級的圖像特征信息,但由于編解碼網絡結構會丟失特征圖的高頻信息,故提出一種用以恢復細節(jié)紋理的基于雙殘差連接的高頻細節(jié)恢復子網絡。本文將去模糊子網絡與高頻細節(jié)恢復子網絡采用并聯的方式進行組合,可達到更好的去模糊效果。
注意力機制可被視為一種自適應地將計算資源分配給輸入特征中最有用部分的方法。近年來,空間注意力機制和通道注意力機制被廣泛應用于計算機視覺任務中,例如目標識別[8]、圖像去霧[14]等??臻g注意力機制可突出有用空間位置的特征,通道注意力機制可以識別通道特征之間的相互依賴性并找到有用的特征。
通道注意力模塊從通道的角度對特征進行加權,該模塊結構如圖1所示,通道注意主要關注于輸入圖像中什么是有意義的。計算過程如下:
MC(F)=σ(MLP(AvgPool(F))+
MLP(MaxPool(F))),
(1)
其中:σ表示sigmoid激活函數,MLP表示多層感知機。
與通道注意不同,空間注意側重于輸入圖像‘何處’信息是有用的,是對通道注意的補充。該模塊結構如圖2所示,計算過程如下:
圖1 通道注意力模塊Fig.1 Channel attention module
(2)
其中:σ表示Sigmoid函數,f7×7表示濾波器大小為7×7的卷積運算。
圖2 空間注意力模塊Fig.2 Spatial attention module
自然圖像可以分解為低空間頻率和高空間頻率,卷積層的輸出特征圖以及輸入通道也存在著高、低頻分量。高頻信號支撐的是豐富細節(jié),而低頻信號支撐的是整體結構,顯然低頻分量中存在冗余,在編碼過程中可以節(jié)省。而傳統(tǒng)的卷積并未分解低高頻分量,導致空間冗余。為解決上述問題,Chen等人[15]提出了八度卷積(Octave Convolution),其核心原理就是利用空間尺度化理論將圖像高頻低頻部分分開,下采樣低頻部分,并在其相應的頻率上用不同的卷積處理它們,間隔一個八度,可以大幅降低參數量。OctConv被定義為一個單一的、通用的、即插即用的卷積單元,并且可以完美地嵌入到神經網絡中,同時減少內存和計算成本。該模塊結構如圖3所示。
圖3 八度卷積模塊Fig.3 Octave convolution module
如圖3所示,卷積層的輸入輸出以及卷積核都被分為了兩個部分,一部分為高頻信息[XH,YH,WH],另一部分為低頻信息[XL,YL,WL],低頻特征圖的分辨率為高頻特征圖的一半,對于高頻特征圖,它的頻率內信息更新過程就是普通卷積過程,而頻率間的信息交流過程,則使用上采樣操作再進行卷積。類似地,對于低頻特征圖,它的頻率內信息更新過程是普通卷積過程,而頻率間的信息交流過程,則使用平均池化操作再進行卷積。其卷積過程可以描述如下:
YH=f(XH;WH→H)+
upsample(f(XL;WL→H),2),
(3)
YL=f(XL;WL→L)+
f(pool(XH,2);WH→L).
(4)
針對現有去模糊算法存在的高頻細節(jié)丟失、不加區(qū)分地處理所有空間和通道特征信息等問題,本文提出一種基于雙任務卷積神經網絡的圖像去模糊方法,將整個去模糊任務分為兩個子任務進行,首先利用基于殘差注意力模塊和八度卷積殘差塊的編解碼網絡去除圖像模糊,將殘差注意力模塊添加至編碼器末端來引導解碼器重建出更加清晰的圖像,并且利用八度卷積殘差塊來降低空間冗余以及更充分地提取特征信息,去模糊子網絡保留了整體結構信息,但由于編碼過程采用下采樣操作,會丟失高頻細節(jié),故提出一種基于雙殘差連接模塊的高頻細節(jié)恢復子網絡來恢復其高頻細節(jié),在雙殘差連接模塊中利用成對操作潛力來進行細節(jié)恢復,在擴大感受野的同時提高了網絡性能。本文采用并聯方式將去模糊子網絡和高頻細節(jié)恢復子網絡組合起來,從而達到更好的去模糊效果。整體網絡結構如圖4所示。
圖4 雙任務卷積神經網絡模型Fig.4 Dual task convolution neural network model
目前,編解碼網絡結構常被應用于計算機視覺任務中[16],其對于圖像復原任務有較強的適用性和實用性。本文采用一種新型的自編解碼網絡結構,自編碼結構由卷積層、八度卷積殘差塊以及殘差注意力模塊組成,輸入的模糊圖像經過3次步長為2的卷積層進行下采樣,每經過一次下采樣得到尺寸減少一半的特征圖。自解碼結構由上采樣層、卷積層以及八度卷積殘差塊組成,經過3次上采樣操作將特征圖恢復到原來的尺寸大小。由于利用注意力模塊可以使網絡自適應地學習不同通道以及空間的重要特征,故將殘差注意力模塊應用于編碼器末端來引導解碼器去除運動模糊,重建出更加清晰的圖像。圖像去模糊任務中,具有較大感受野是去除嚴重模糊的關鍵,增加網絡層數可以增大感受野,但也會導致梯度消失或梯度爆炸等問題,故本文在編碼階段和對稱的解碼階段添加跳躍連接,可以緩解由于網絡過深而導致的梯度消失或爆炸問題。編解碼器的參數配置如表1、表2所示,編解碼結構所有卷積層均使用3×3的卷積核。
表1 編碼結構參數配置表Tab.1 Parameters configuration table of encoding structure
表2 解碼結構參數配置表Tab.2 Parameters configuration table of decoding structure
殘差結構的網絡已被廣泛應用于圖像去霧[17]、圖像去噪[18]等領域,其產生的目的是為了解決較深網絡容易出現梯度消失、梯度爆炸、網絡性能退化等問題。本文將注意力機制(CBAM)[19]與殘差結構[20]相結合并應用于編碼器末端用于引導解碼器重建出更清晰的圖像,并且能夠保證在整體結構完整的情況下突出更有用的信息。該模塊結構如圖5所示。
輸入特征首先經過一個3×3的卷積層,得到的特征分別進入主干分支M和CBAM分支C。進入CBAM分支的特征首先經過通道注意力機制模塊,得到的特征再與經過卷積層的特征進行相應元素相乘,得到輸出特征F′,之后F′進入空間注意力機制模塊,再與F′進行相應元素相乘,得到CBAM分支的最終輸出特征Ci,c(x)。主干分支保留了原始的特征Mi,c(x),與CBAM分支所得到的輸出Ci,c(x)相加得到殘差注意力模塊的最終輸出Hi,c(x)。上述結構可表述為:
圖5 殘差注意力模塊Fig.5 Residual attention module
Hi,c(x)=Ci,c(x)+Mi,c(x),
(5)
其中:i代表空間位置,c代表特征通道的索引。
該模塊中的主干分支M保留了原始輸入特征信息,而CBAM分支生成的注意力機制特征圖顯著突出了對結果有用的區(qū)域,故此模塊有利于提高網絡的表達能力。
Chen等人[15]已經證明了八度卷積可以有效減少參數量,降低空間冗余,并且可以使一部分卷積專注提取高頻信息,另一部分卷積提取低頻信息。ResNet是He等[20]在2015年所提出的,它解決了深層網絡中梯度彌散和精度下降的問題,使網絡能夠越來越深,既保證了精度,又控制了速度。本文將八度卷積引入殘差塊,將殘差連接單元中普通卷積替換為八度卷積,在解決梯度消失、精度下降等問題的同時降低空間冗余,減少計算量。本文將八度卷積殘差塊作為編解碼網絡的基礎構建塊。該模塊結構如圖6所示。
圖6 八度卷積殘差模塊Fig.6 Octave convolution residual module
由于編解碼網絡結構會丟失部分細節(jié)特征,故本文設計了一個基于雙殘差連接方式的高頻細節(jié)恢復子網絡。這種連接方式配備了兩個容器,可以插入任何操作。為擴大感受野,本文將第一個容器里放入一個3×3,步長為1的卷積層和膨脹因子為3的擴張卷積層;第二個容器里放入一個5×5,步長為1的卷積層,利用這兩個容器的成對運算潛力來恢復出高頻細節(jié)信息。在此模塊中并未進行下采樣操作,整個過程特征圖大小與輸入大小保持一致,只進行模糊圖像高頻特征的提取和融合,為最終的圖像恢復過程提供高頻信息。本文在高頻細節(jié)恢復子網絡中設計了5對成對操作。該模塊的網絡結構如圖7所示。
圖7 雙殘差連接模型Fig.7 Double residual connection model
特征x進入第i個成對操作后,首先經過第一個容器,也即經過一個3×3的卷積層和一個膨脹因子為3的擴張卷積層,所得到的特征g1(x)與第i-1個成對操作中經過第一個容器后所得到的特征M進行相應元素相加,得到輸出特征G,之后G進入第i個成對操作中的第二個容器得到特征g2(x),g2(x)再與第i-1個成對操作中經過第二個容器后所得到的特征N進行相應元素相加,得到最終輸出特征H(x)。上述過程可以表述為:
G=M+g1(x),
(6)
H(x)=N+g2(x).
(7)
本文總損失函數由平均絕對誤差損失(Mean Absolute Error,MAE)、結構損失(Structural Loss,SL)組成。其計算公式為:
Ltotal=λALA+λSLS,
(8)
其中:LA表示平均絕對誤差損失(MAE),LS表示結構損失(SL),λA與λS分別為對應的平衡權重。
平均絕對誤差(MAE)損失用于測量清晰圖像和輸出去模糊圖像之間像素方面的差異。其計算過程可以表述為:
(9)
平均絕對誤差損失往往會丟失細節(jié)紋理,故在網絡中引入結構損失作為約束項,保持圖像細節(jié),避免細節(jié)模糊。其計算過程可以表述為:
LS=LSSIM+LMS-SSIM,
(10)
其中,LSSIM可以表示為:
LSSIM=1-SSIM(P),
(11)
多尺度結構相似損失(MS-SSIM)基于多層的SSIM損失函數,考慮了分辨率,LMS-SSIM可以表示為:
LMS-SSIM=1-MS-SSIM(P),
(12)
P為像素塊的中間像素值。
本文實驗訓練與測試數據均來自Nah等[4]在2017年所提出的GoPro數據集,隨機選取2 013張清晰-模糊圖像對,并將2 013張清晰-模糊圖像對按8∶2的比例劃分為訓練集和測試集,即訓練集為1 610張,測試集為403張。為增加整個網絡模型的魯棒性,將訓練集中的1 610張圖像進行翻轉90°與180°,得到4 830張清晰-模糊圖像對。最終用于實驗的訓練集為4 830張,測試集為403張。
本文所做實驗基于TensorFlow2.0深度學習框架與python3.7環(huán)境進行訓練與測試,所用計算機GPU配置為Nvidia GeForce 1660Ti(6 GB),顯存為6 GB。在整個實驗過程中,所有圖像一律裁剪為256×256×3,batch_size=2,epoch=5 000。采用Adam優(yōu)化器來優(yōu)化損失函數,動量參數分別為0.9、0.999,實驗設置固定學習率為0.000 1。
本文所用總損失函數為平均絕對誤差損失與結構損失的加權和,其中不同的權重系數對實驗結果有一定的影響,故本文分別驗證λA與λS取不同值時對實驗結果的影響。依然使用峰值信噪比(PSNR)和結構相似度(SSIM)這兩項指標來作為性能衡量標準。為了快速驗證,λA與λS取不同值的對比實驗均在只在編碼器末端添加殘差注意力模塊的情況下進行。表3為λA與λS取不同值時網絡模型在GoPro測試集上的性能對比結果。圖8為λA與λS取不同值時的網絡模型在GoPro測試集上可視化對比示例圖。表3表明,當λA=0.3,λS=0.7時網絡性能最好,故本文其他實驗均選擇λA=0.3,λS=0.7。由圖8也可看出當λA=0.3,λS=0.7時,圖像紋理細節(jié)更加豐富,更加接近真實清晰圖像。
表3 λA與λS取不同值下的實驗指標表
殘差注意力模塊可以放置到編解碼網絡結構中的不同位置,為驗證本文將殘差注意力模塊放置為最優(yōu),故先進行對比實驗。殘差注意力模塊可以加入到編解碼網絡結構的不同位置,分別為:
(1)C0:不添加殘差注意力模塊;
(2)C1:在編碼器末端添加殘差注意力模塊;
(3)C2:在編碼器的第3,4塊添加殘差注意力模塊;
(4)C3:在編碼器的第2,3,4塊添加殘差注意力模塊;
(5)C4:在編碼器后均添加殘差注意力模塊;
(6)C5:在編碼器末端和解碼器第一塊添加殘差注意力模塊;
(7)C6:在解碼器的第1,2塊添加殘差注意力模塊;
(8)C7:在解碼器后均添加殘差注意力模塊。
本文將驗證這8種情況,表4展示了殘差注意力模塊所處位置對網絡性能的影響。圖9為殘差注意力模塊放置不同位置的網絡模型在GoPro測試集上可視化對比示例圖。
如表4所示,將殘差注意力模塊放置在C1位置時,能夠更好地提升網絡去模糊性能,獲得了最高的PSNR和SSIM。同時觀察到,添加多個殘差注意力模塊在編碼器或解碼器中,網絡性能有所下降,故本文的其余實驗均將殘差注意力模塊放置在編碼器末端。
表4 殘差注意力模塊不同位置對性能影響
圖9 殘差注意力模塊放置不同位置的可視化對比Fig.9 Visual comparison of different positions of residual attention module
針對不同損失函數對實驗結果的影響,本文測試了不同情況下的實驗結果。表5展示了不同損失函數對網絡性能的影響。圖10為應用不同損失函數的情況下在GoPro測試集上可視化對比示例圖。
表5表明,LA與LS的加權和相比于LA和LS在兩項指標上有略微的提升,由圖10也可看出單純地使用LA或LS并不能有效去除模糊,細節(jié)紋理不夠豐富,而利用LA與LS的加權和可以更好地去除模糊,因此選擇LA與LS的加權和作為損失函數。
表5 不同損失函數對網絡性能的影響
圖10 應用不同損失函數的可視化對比Fig.10 Visual comparison of different loss functions
為了驗證本文算法的有效性,選取6種目前先進的圖像去模糊卷積神經網絡與本文方法進行對比,使用峰值信噪比(PSNR)、結構相似度(SSIM)、模型大小以及網絡模型的運行時間作為性能衡量標準,表6展示了不同算法在測試集上的性能對比結果。圖11為不同算法在測試集上可視化對比示例圖。
圖11 不同算法的可視化對比Fig.11 Visual comparison of different algorithms
表6 不同算法的性能對比Tab.6 Performance comparison of different algorithms
由表6可以看出本文所提出的方法較其他4種算法得到了更高的PSRN和SSIM,并且本文的網絡模型較除Ye算法之外的5種算法達到最小,雖然本文算法比Ye算法網絡模型大,但本文算法運行時間較短且能達到更高的PSNR和SSIM。由圖11也可看出Sun等[21]提出的算法不能夠有效去除模糊,Nah等[4]、Tao等[16]、Zhang等[13]、Ye等[22]以及Zhou等[23]的去模糊效果雖較Sun等[21]的算法有一定的提升,但紋理細節(jié)恢復較差,沒有達到更好的去模糊效果。本文方法在GoPro數據集上有著良好的表現,所得到的去模糊圖像更接近清晰圖像。
本文使用同一臺電腦來評估本文算法及目前先進的6種算法。如表6所示,Sun等[21]利用CNN算法來估計運動模糊核,但仍需要傳統(tǒng)的非盲去模糊算法來生成干凈的圖像,這增加了計算成本;為增大感受野,Nah等[4]和Tao等[16]使用了多尺度CNN算法來估計干凈圖像,與傳統(tǒng)的算法相比花費了更少的時間,但多尺度框架不可避免地增加了計算量,與本文所提方法相比,其效率仍然不高;Zhang等[13]使用了深度分層多補丁CNN算法來去除模糊,但其圖像預處理過程較為復雜,花費時間更多,并且此模型比本文模型大得多;Ye等[22]使用一種新的尺度循環(huán)網絡,降低了模型大小,但本文方法的運行時間比該方法快約0.73倍。本文提出的雙殘差連接模塊利用不同膨脹率的卷積以較低的計算成本擴大感受域。另外,本文提出的網絡中使用了八度卷積,進一步減小了網絡的規(guī)模。從表6可以看出,與現有的基于CNN的方法相比,本文提出的網絡模型小,運行速度快,效率更高。
本文為解決現存去模糊卷積神經網絡中存在的細節(jié)紋理丟失、不加區(qū)分地處理通道以及空間特征信息等問題,提出了一種并聯的雙任務卷積神經網絡用于圖像去模糊任務。首先利用基于殘差注意力模塊和八度卷積殘差塊的新型編解碼網絡結構用來去除模糊,且在編解碼之間加入跳躍連接來豐富解碼器的信息,實驗結果表明,將殘差注意力模塊放置編碼器末端有利于提升去模糊性能。其次提出一種基于雙殘差連接模塊的子網絡進行細節(jié)恢復,雙殘差連接方式對于圖像細節(jié)恢復任務具有更強的效果。將這兩個子網絡采用并聯的方式連接起來,最后利用一層卷積來重建出更加清晰的圖像。實驗結果表明,本文算法的峰值信噪比為32.427 6 dB,結構相似度為0.947 0,與目前先進的圖像去模糊技術相比均有所提升。