朱德利,熊 昌,胡雪奎,李 煒,王 青
1.重慶師范大學(xué) 計算機與信息科學(xué)學(xué)院,重慶 401331
2.重慶市數(shù)字農(nóng)業(yè)服務(wù)工程技術(shù)研究中心,重慶 401331
下雨是一種常見的天氣現(xiàn)象,當在雨天進行拍攝任務(wù)時,雨條紋會對場景中的內(nèi)容進行遮擋和干擾,從而使拍攝到的圖像質(zhì)量下降,直接導(dǎo)致主觀視覺效果變差,并降低后續(xù)計算機視覺系統(tǒng)的性能,對無人駕駛、道路監(jiān)控等實際應(yīng)用產(chǎn)生極大的影響。因此,如何改善有雨圖像的清晰化問題受到國內(nèi)外科研工作者的廣泛關(guān)注。然而,單幅圖像中并不具有視頻信號中豐富的時空相關(guān)性,不能利用這些時空特征,這進一步增加了單幅有雨圖像清晰化的難度。因而,對單幅圖像去雨問題進行研究具備極大的意義。
目前,單幅圖像去雨的方法可大致分為兩類,基于模型驅(qū)動和基于數(shù)據(jù)驅(qū)動。其中,基于模型驅(qū)動的方法側(cè)重于挖掘和利用圖像的先驗知識,并將其用到解決反問題時的約束和建模中去,再通過設(shè)計優(yōu)化算法求解模型,獲得無雨圖像;而基于數(shù)據(jù)驅(qū)動的方法,主要是以深度學(xué)習(xí)為代表,通過構(gòu)建神經(jīng)網(wǎng)絡(luò),并采用仿真數(shù)據(jù)和反向傳播算法對神經(jīng)網(wǎng)絡(luò)進行監(jiān)督訓(xùn)練,讓網(wǎng)絡(luò)從數(shù)據(jù)中自行學(xué)習(xí)有雨圖像到無雨圖像的映射關(guān)系。
Kim 等[1]通過非均值濾波器將雨條紋移除,但是該方法的缺點是物理模型限制了其性能。Kurihata等人[2]使用PCA 來學(xué)習(xí)雨的形狀,并試著將測試圖像中的一個區(qū)域與所學(xué)雨的區(qū)域相匹配。然而,由于雨是透明的,形狀各異,尚不清楚需要了解的雨數(shù)量有多大,如何保證PCA 能夠模擬雨的各種外觀,以及如何防止局部類似雨的區(qū)域被檢測為雨。Luo等[3]提出了一種判別性稀疏編碼,用于將雨條紋與圖像背景分開,不足的地方是該方法去完雨后的圖像上仍有雨條紋殘留。當圖像中的物體結(jié)構(gòu)和方向與雨條紋相似時,便很難在去除雨條紋的同時又有效地保存物體的結(jié)構(gòu)信息。在2017年之后單幅圖像去雨主要采用基于深度學(xué)習(xí)的方法,F(xiàn)u等[4]提出了一種名為DerainNet的去雨方法,將圖像的高頻部分輸入到卷積神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練學(xué)習(xí),但是該方法會造成圖像色澤上的損失,在背景區(qū)域仍然存在雨條紋的殘留痕跡,從而導(dǎo)致去雨效果不理想。Zhang 等[5]將條件生成對抗網(wǎng)絡(luò)應(yīng)用于單圖像除雨任務(wù)。該方法能夠捕捉信號保真度以外的視覺特性,并以更好的光照、顏色和對比度分布呈現(xiàn)結(jié)果。然而,當測試雨圖的背景與訓(xùn)練集的背景不同時,有時會產(chǎn)生視覺偽影。Wei 等[6]提出一種半監(jiān)督學(xué)習(xí)方法,以利用合成配對數(shù)據(jù)和未配對真實數(shù)據(jù)中的先驗。在該方法中,殘差被表示為輸入雨圖與其期望網(wǎng)絡(luò)輸出之間的特定參數(shù)化雨帶分布。在雨帶分布模型的指導(dǎo)下,基于合成的成對降雨圖像訓(xùn)練的模型適用于處理真實場景中的各種降雨。然而,該方法并沒有顯示出有效的去雨效果,特別是對于真實的去雨圖像。Qian等[7]提出了一種基于生成對抗網(wǎng)絡(luò)[8]的去雨方法,可以有效地去除玻璃上的雨但對雨線移除處理效果不好。Jin 等[9]通過引入自監(jiān)督約束和從未配對的雨和干凈圖像中提取內(nèi)在先驗,提出了一種無監(jiān)督的去監(jiān)督產(chǎn)生式對抗網(wǎng)絡(luò)(UD-GAN)。設(shè)計了兩個協(xié)同模塊:一個模塊用于檢測真實去雨圖像與生成的去雨圖像之間的差異;另一個模塊用于調(diào)整生成結(jié)果的亮度,使生成的結(jié)果更加直觀。這種方法能夠從雨圖像中去除真實的雨,但不可避免地會丟失一些細節(jié),特別是在雨帶密集的情況下。
為了解決雨條紋對圖像背景遮擋問題,本文提出基于注意力生成對抗網(wǎng)絡(luò)的圖像去雨方法。在生成網(wǎng)絡(luò)部分,利用雨線提取模塊來提取雨條紋特征,然后通過空間關(guān)注模塊生成雨線注意力圖,最后結(jié)合雨線注意力圖和有雨圖像通過上下文自動編碼器生成清晰無雨圖像。
因為當前基于深度學(xué)習(xí)的單幅圖像去雨方法都是通過設(shè)計不同的網(wǎng)絡(luò)結(jié)構(gòu),然后采用監(jiān)督學(xué)習(xí)的方式,將有雨圖像和對應(yīng)無雨圖像作為訓(xùn)練數(shù)據(jù),利用反向傳播算法更新網(wǎng)絡(luò)參數(shù),使網(wǎng)絡(luò)可以學(xué)習(xí)出從有雨圖像到無雨圖像(如圖1)??梢灾溃鉀Q此類問題的關(guān)鍵在于如何設(shè)計深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以獲取更加有效的特征表示。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Structure of network
生成網(wǎng)絡(luò)由三個模塊組成:雨線提取模塊、空間關(guān)注模塊、上下文自動編碼器。首先,雨線提取模塊的目的是為后續(xù)模塊提取有效的雨線二值圖,然后利用空間關(guān)注模塊準確地定位降雨條紋的位置,以增強泛化能力。最后,使用注意力圖來指導(dǎo)上下文自動編碼器執(zhí)行去雨操作。
1.1.1 雨線提取模塊
本文使用快速導(dǎo)向濾波器[10]和Haar 小波變換[11]進行檢測雨線。雨線提取模塊處理流程如圖2所示。
圖2 雨線提取模塊流程圖Fig.2 Flow chart of rainline extraction module
導(dǎo)向濾波是一種保邊濾波。它在計算上的時間復(fù)雜度是O(N),即與當前圖像像素點個數(shù)N成線性關(guān)系,與濾波器大小無關(guān)。導(dǎo)向濾波還能夠有效地抑制梯度翻轉(zhuǎn)的現(xiàn)象。而快速導(dǎo)向濾波在導(dǎo)向濾波的基礎(chǔ)上,進一步簡化計算,通過下采樣,將時間復(fù)雜度降低為O(N/s2),其中s為采樣率。該濾波能夠通過引導(dǎo)圖像保留邊緣信息,磨平區(qū)域信息中的噪點。因此能有效地將高頻雨條紋細節(jié)信息分離出來,如圖3。它的輸入是要處理的圖像和引導(dǎo)圖像,將雨圖作為要處理的圖像,選擇雨圖對應(yīng)的無雨圖像作為引導(dǎo)圖像。經(jīng)快速導(dǎo)向濾波器處理后雨線細節(jié)如圖3(c)所示。
圖3 快速導(dǎo)向濾波器圖像Fig.3 Fast steering filter image
再通過使用Haar 小波變換[12-13]對雨線細節(jié)圖進行水平和豎直兩個方向進行低通和高通濾波。小波分解示意圖如圖4所示,首先將一幅N×N的圖像先進行濾波,再作1/2的抽取,把得到的水平方向的低頻子帶放在左邊,高頻子帶放在右邊;然后再進行列濾波,垂直方向的低頻子帶放上邊,高頻子帶放下邊。這樣得到的小波變換是由4 個的子圖構(gòu)成,圖像小波分解的正變換可以根據(jù)變換方式進行擴展。
圖4 小波分解示意圖Fig.4 Wavelet decomposition schematic
通過Haar 小波對雨線細節(jié)圖分解后,能夠突出高頻域中的雨條紋,有助于后續(xù)的特征提取,進而消除雨條紋噪聲。如圖5 所示,近似子圖表示圖像的低頻信息,水平細節(jié)圖圖像的水平方向紋理邊緣信息,垂直細節(jié)圖圖像垂直方向的紋理邊緣信息,對角線細節(jié)圖圖像對角方向的紋理邊緣信息。
圖5 雨線細節(jié)圖小波分解示例圖Fig.5 Wavelet decomposition schematic of rainline detail
由于雨噪聲的方向性,垂直細節(jié)圖包含更多的雨條紋信息。在獲得雨線區(qū)域及邊緣細節(jié)信息后,使用一個閾值來確定是否屬于雨線區(qū)域及邊緣結(jié)構(gòu),在實踐中,經(jīng)過測試,將閾值設(shè)置為25,其余小于25的像素值為0,大于等于25 的像素值為1,得到二進制矩陣MR,再用MR引導(dǎo)生成雨線注意圖。
1.1.2 空間關(guān)注模塊
視覺注意力機制模型已被應(yīng)用于定位圖像中的目標區(qū)域,以捕捉區(qū)域的特征。這一思想已被用于視覺識別和分類。因此,視覺關(guān)注對于生成無雨背景圖像是非常重要的,因為它允許網(wǎng)絡(luò)知道去除雨應(yīng)該集中在哪個區(qū)域。通常,神經(jīng)網(wǎng)絡(luò)通過大量數(shù)據(jù)識別對象,以訓(xùn)練網(wǎng)絡(luò)識別對象的能力,但是訓(xùn)練后的網(wǎng)絡(luò)中圖片的整體價值是相等的,也就是說,這些特征在神經(jīng)網(wǎng)絡(luò)的眼中并沒有什么不同,并且網(wǎng)絡(luò)不會在某個區(qū)域上過多關(guān)注,因此計算機視覺中的關(guān)注機制的基本思想是使網(wǎng)絡(luò)具有忽略無關(guān)信息并專注于關(guān)鍵信息的能力。
空間關(guān)注模塊結(jié)構(gòu)如圖6 所示是一個三層的循環(huán)視覺注意網(wǎng)絡(luò)。每層循環(huán)視覺注意網(wǎng)絡(luò)由深度殘留網(wǎng)絡(luò)(ResNet)[14],卷積長短記憶網(wǎng)絡(luò)單元(ConvLSTM)單元[15]和標準卷積層組成。ResNet 主要用于從輸入圖像和上一個塊的蒙版中提取特征。每個殘差塊包括一個具有LrReLU非線性激活函數(shù)的具有3×3卷積的兩層卷積核;它被用于圖像特征提取。提取的特征圖和初始化的注意圖被拼接并轉(zhuǎn)移到ConvLSTM單元中進行學(xué)習(xí)。
圖6 空間關(guān)注模塊結(jié)構(gòu)圖Fig.6 Structure of space concerned module
ConvLSTM 單元包括一個輸入it、一個忘記門ft、一個輸出門ot以及一個單元狀態(tài)Ct。
其中,Xt是由ResNet 生成的特征;Ct對將要轉(zhuǎn)遞到下一個LSTM 的狀態(tài)進行編碼;Ht代表LSTM 單元的輸出特性;運算符?表示卷積運算。LSTM的輸出特征隨后被輸入到卷積層,這將產(chǎn)生一個2D的注意圖。
1.1.3 上下文自動編碼器
本文使用上下文自動編碼器作為無雨圖像生成部分。上下文自動結(jié)構(gòu)示意圖如圖7所示,與傳統(tǒng)的U-net結(jié)構(gòu)類似,有16 個conv-LrRelu 塊可對輸入執(zhí)行兩次下采樣操作和兩次上采樣操作,并添加了跳過連接以防止在下采樣期間丟失高分辨率功能。不同地,在上下文自動中間編碼器,使用具有不同擴張因子的四個連續(xù)擴張卷積層,以在不增加參數(shù)的情況下將接收場增加到不同程度。這樣,不僅可以從雨線位置的像素中去除雨條紋,還可以通過利用雨線位置和背景圖像之間的相關(guān)性更準確地填充遮擋的部分。同時,連接不同大小的接收場意味著可以在每層之間獲得不同大小的信息,從而解決了網(wǎng)格偽影的問題。
圖7 上下文自動編碼結(jié)構(gòu)圖Fig.7 Structure of context automatic encoder
為了區(qū)分假圖片與真實圖片,一些基于GAN 的方法在區(qū)分部分采用了全局和局部的圖片內(nèi)容一致性。就像在圖像修補中給出要恢復(fù)區(qū)域的情況一樣,用于直接區(qū)分的局部區(qū)分策略也很有用。因此,使用注意力判別器直接確定所生成圖像的雨線區(qū)域是否正確是最有效的方法。判別網(wǎng)絡(luò)的功能等效于二分類器。判別網(wǎng)絡(luò)由9 個卷積層組成。每個層都連接到LrRelu 激活函數(shù)。5×5卷積核用于提取和融合紋理特征。6個輸出通道分別為8、16、32、64、128 和128。從鑒別器的第六層提取特征,通過卷積層輸出注意掩碼,然后將鑒別網(wǎng)絡(luò)的第六卷乘以注意掩碼,然后再輸入下一層,這是因為鑒別器將注意力集中在注意力圖上。后面的三層卷積使用(跨步4)卷積層,并且缺少池化層主要是借鑒了深度卷積生成對抗網(wǎng)絡(luò)(DCGAN)中提到的技術(shù),它不僅可以提取高維紋理特征,還可以使輸入特征更小并且更可控。最后,通過兩層全連接層,對圖像特征進行降維后進行加權(quán),然后輸出一個特定值來表示輸入圖像是去雨圖像可能性,將其激活,將輸出值限制為[0,1]。判別網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。
圖8 判別網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.8 Structure of identifying network
為了優(yōu)化上述所提改進生成對抗網(wǎng)絡(luò)以獲得較好的去雨效果,本文通過最小化重建生成圖像與真實圖像之間的差異來調(diào)整網(wǎng)絡(luò)參數(shù)。
采用以下?lián)p失函數(shù)訓(xùn)練生成網(wǎng)絡(luò):
其中,LA表示雨線注意力圖和雨線二值掩碼圖之間的MSE 距離,并通過計算用于約束關(guān)注圖生成的降雨圖像和原始清潔圖像之間的差異來獲得二元蒙版圖。使用Lpixel損耗來測量每像素的重建精度以捕獲低頻信息,并且Lpixel損耗可以防止梯度爆炸。Lfeature用于約束圖像特征空間的損失,利用訓(xùn)練好的VGG16 網(wǎng)絡(luò)對生成圖像與真實圖像的進行特征圖提取,計算兩張?zhí)卣鲌D之間的MSE距離,作為特征空間上的誤差。Lcolor表示去雨圖像和真實圖像色差的損失,其中N是像素數(shù)的總和,為了使去雨后的圖像在顏色上更接近地面真實,引入了CIEDE2000 色差作為損失函數(shù)的一項。為了計算去雨圖像和真實圖像之間的色差,需要將RGB圖像轉(zhuǎn)換到Lab顏色空間。
在公式(11)中E00表示Lab顏色空間中兩個圖像之間每個像素的色差,JLab(i)和GLab(i)是真實無雨圖像和生成去雨圖像對應(yīng)的Lab顏色空間。
判別網(wǎng)絡(luò)的目的就是區(qū)分生成圖像和真實圖像,采用以下?lián)p失函數(shù)訓(xùn)練對判別網(wǎng)絡(luò)進行訓(xùn)練:
本文實驗環(huán)境為Intel?Xeon?Silver 4114 CPU,64位的Windows10,使用NVIDIA TITAN V 型號的GPU對網(wǎng)絡(luò)訓(xùn)練并行加速,所使用的編程語言為Python,并采用谷歌公司開發(fā)的TensorFlow 深度學(xué)習(xí)工具箱進行網(wǎng)絡(luò)的搭建。訓(xùn)練網(wǎng)絡(luò)時,隨機選取輸入圖像(有雨和無雨圖像對)上256×256像素大小的圖像塊作為一對樣本輸入到卷積神經(jīng)網(wǎng)絡(luò)中。網(wǎng)絡(luò)模型訓(xùn)練采用Adam算法下降策略,初始學(xué)習(xí)率大小設(shè)定為0.000 2,小批量數(shù)據(jù)大小為1個樣本,最大迭代次數(shù)為80 000。
由于從現(xiàn)實世界中難以獲取有雨圖和對應(yīng)無雨圖的圖像對,訓(xùn)練和測試選用公開數(shù)據(jù)集,選取了Fu 等提出的Rainy image dataset 和Rain800。Rainy image dataset數(shù)據(jù)集中有1 000張真實無雨圖像以及對應(yīng)1 000張合成有雨圖像。Rain800的訓(xùn)練集總共由700個圖像組成,其中500 個圖像是從UCID 數(shù)據(jù)集的前800 個圖像中隨機選擇的,200 個圖像是從BSD500 的訓(xùn)練集中隨機選擇的。測試集由總共100 個圖像組成,其中從UCID 數(shù)據(jù)集中的最后500 個圖像中隨機選擇50 個圖像,并從BSD-500 數(shù)據(jù)集的測試集中隨機選擇50 個圖像。此外還選取了Rain12、Rain100L 以及Rain100H 數(shù)據(jù)集測試本文所提方法的性能。Rain12 包括12 幅合成的雨圖,Rain100L 有100 張低雨量的合成雨圖,Rain100H有100張高雨量的合成雨圖。
鑒于本文所用測試集有可供參考的真實圖像,因此,選擇峰值信噪比(PSNR)[16]和結(jié)構(gòu)相似度(SSIM)[17]來作為算法評價指標,其中PSNR 常用于測量圖片的重建質(zhì)量,PSNR 值越高說明圖片的重建質(zhì)量越好;SSIM 是一種考慮人眼視覺感知的圖像質(zhì)量評價方法,常用來衡量兩幅圖像的相似度,該值越大表示兩幅圖像之間越相似,算法性能越好。值得一提的是,本文旨在于無需圖像增強作為后處理即可有效去除單幅圖像上的雨條信息。為了進行公平比較,本文實驗對比是在不同去雨方法未采用圖像增強作為后處理的設(shè)定下進行的。
表1 列出了本文所提方法與目前主流單幅圖像去雨方法在上Rain12、Rain100L、Rain100H以及Ran800數(shù)據(jù)集上的SSIM與PSNR比較??梢钥闯霰疚乃岢龅姆椒ㄔ趦煞N評價指標上對比各種方法中具有一定的優(yōu)越性。
表1 不同方法的PSNR和SSIM對比結(jié)果Table 1 Result of different methods in PSNR and SSIM
本文所提方法與主流去雨方法在四幅不同圖像去雨效果對比結(jié)果如圖9所示,局部細節(jié)放大信息如圖10所示。從視覺效果上可以看出,文獻[7]方法的方法得到的去雨圖有顯著的雨水殘留,文獻[4]方法、文獻[5]方法、文獻[9]方法在去雨圖像有明顯的去雨痕跡而本文所提方法能夠有效地去除有雨圖像上的雨條,并且去完雨條后的圖像背景上幾乎沒有雨條痕跡殘留。表明本文所提方法所得到的去雨圖像具有更好的視覺效果,該結(jié)果進一步驗證了本文所提方法的優(yōu)越性。
圖9 合成圖像去雨效果對比圖Fig.9 De-raining effect of synthetic image comparison
圖10 合成圖像細節(jié)放大圖Fig.10 Enlarged detail of composite image
為了驗證本文提出的單圖像雨模型也可以應(yīng)用于現(xiàn)實生活中的雨圖像,并強調(diào)該模型的實際應(yīng)用價值,測試在雨天拍攝的真實降雨圖像。真實雨景圖像的測試結(jié)果如圖11所示,從視覺上可以看出,盡管本文所提方法對真實雨景下的圖像仍然具有良好的去雨效果。
圖11 真實圖像去雨效果Fig.11 De-raining effect of real image
為了驗證結(jié)構(gòu)中添加的每個組件的有效性,在測試集上針對每個組件的不同組合進行了結(jié)構(gòu)分析。如表2所示,上下文自動編碼器是基準模塊,第二列是雨線提取模塊,第三列是空間關(guān)注模塊,第四列PSNR 指標。結(jié)果表明網(wǎng)絡(luò)中的每個組件都在一定程度上改善了最終結(jié)果。通過消融實驗,驗證了所提出方法中各個模塊的有效性。
表2 生成網(wǎng)絡(luò)結(jié)構(gòu)分析Table 2 Analysis of generate network structure
表3 給出了本文方法與其他主流方法在圖像尺寸大小為(3×320×240)上同時采用相同的GPU 硬件環(huán)境的去雨運算時間上的對比結(jié)果。本文所提方法在去雨運算速度上具有一定的優(yōu)越性。
表3 圖像去雨速度測試Table 3 Test of image de-raining
本文提出了一種基于注意力生成對抗網(wǎng)絡(luò)單幅圖像去雨方法。生成網(wǎng)絡(luò)使用雨線提取模塊生成雨線二值圖,以為后續(xù)的空間關(guān)注模塊提供有價值的降雨條紋特征,然后空間關(guān)注模塊生成雨線注意力圖,以指導(dǎo)上下文自動編碼器生成清晰無雨圖像。在綜合測試數(shù)據(jù)集和真實圖像上進行實驗,對比幾種深度網(wǎng)絡(luò)去雨方法,無論是在去雨圖像的視覺感觀上,還是在PSNR 和SSIM數(shù)據(jù)量化上,都處于領(lǐng)先的地位。但是,本文的網(wǎng)絡(luò)有局限性。例如,雨天經(jīng)常伴隨著霧。對于真實世界的多雨圖像,只能去除雨水條紋,但是如果沒有霧,將無法恢復(fù)清晰的背景圖像。因為不可能獲得真實世界的無雨無影圖像對,并且在合成圖像中,僅合成了雨條紋,而沒有模擬霧。在進一步的研究中,可以改善合成圖像對,以訓(xùn)練網(wǎng)絡(luò)在去除霧氣并消除雨水條紋后恢復(fù)清晰圖像。