楊 浩,周冬明,趙 倩,李 淼
(云南大學(xué) 信息學(xué)院,云南 昆明 650504)
雨天采集到的圖像因為存在大量的雨條紋,造成關(guān)鍵細節(jié)模糊和被遮擋,使得圖像質(zhì)量下降。這不僅嚴重影響人類的視覺感知,而且對圖像分類[1]、目標檢測[2]和圖像分割[3]等各種高級計算機視覺任務(wù)的執(zhí)行帶來干擾。因此,近年來圖像去雨方法受到國內(nèi)外廣泛關(guān)注[4-5]。圖像去雨是為了從雨天采集到的圖像中恢復(fù)干凈的背景圖像,這是一個具有挑戰(zhàn)性的逆向問題。
目前,針對這個逆向問題已經(jīng)做了大量工作,這些方法主要可以分為2類:基于視頻數(shù)據(jù)的去雨算法[6]和基于單幅圖像的去雨算法[4-5]。基于視頻的去雨算法可以利用前后相鄰幀的信息進行融合,從而大大降低了去雨的難度。而基于單幅圖像的去雨算法無法利用這個信息,且雨線的隨機分布特性使雨條紋的位置難以確定,因此單幅圖像去雨一直是一個極其困難的問題。由于有雨的視頻也是由多幀有雨圖像構(gòu)成,所以單幅圖像去雨算法不僅可以處理單幅圖像,也可以用于處理視頻的每一幀圖像來實現(xiàn)視頻去雨。因此,單幅圖像的去雨算法具有重要的研究意義和廣泛的應(yīng)用前景。
在深度學(xué)習(xí)被用于單幅圖像去雨處理之前,傳統(tǒng)的圖像去雨算法主要是基于先驗的圖像去雨方法。這些方法通過對圖像雨線層施加各種先驗[4,8-9]并通過多次迭代優(yōu)化來去除雨線。然而,這些去雨方法模型建立復(fù)雜、計算量大,并且去雨效果不理想,去雨后的圖片細節(jié)大量丟失且有雨條紋殘留。針對這些缺點,數(shù)據(jù)驅(qū)動的基于深度學(xué)習(xí)的方法通過卷積神經(jīng)網(wǎng)絡(luò)從數(shù)據(jù)中學(xué)習(xí)特征,并以端到端的方式將雨圖像直接映射到無雨圖像。基于深度學(xué)習(xí)的圖像去雨方法比起傳統(tǒng)去雨算法獲得了前所未有的成功[10-13]。然而,大多數(shù)方法仍無法有效保留帶有較多雨線場景的背景圖像細節(jié),現(xiàn)有方法往往在雨痕去除和細節(jié)保持之間進行折中,導(dǎo)致輸出圖像細節(jié)模糊和存在偽影等,大大地影響了單幅圖像去雨算法的實際應(yīng)用。
為了解決以上問題,本文提出了一種基于多階段雙殘差網(wǎng)絡(luò)的圖像去雨。相比其他方法,使用多階段網(wǎng)絡(luò)將圖像去雨問題分解為多個子問題并逐漸去除雨線,從而能夠更徹底地去除雨線。相比起其他多階段方法,本文算法的優(yōu)點在于不同階段間的信息進行交換。通過不同階段的信息交換不僅能減少信息在不同階段傳輸過程中的丟失,還簡化了數(shù)據(jù)流使網(wǎng)絡(luò)優(yōu)化更加穩(wěn)定。此外,本文提出了一個雙殘差圖像重建網(wǎng)絡(luò),與傳統(tǒng)殘差網(wǎng)絡(luò)相比,該網(wǎng)絡(luò)擁有更多恒等映射路徑,減少了信息丟失。最后,通過一個有監(jiān)督的注意力機制在無雨圖像的監(jiān)督下實現(xiàn)將上一階段的有用特征傳遞到下一階段進行圖像重建,豐富了下一階段的特征。通過在4個合成數(shù)據(jù)集和1個真實數(shù)據(jù)集上對實驗結(jié)果的客觀評價和主觀評價,本文提出的去雨算法相較于其他算法而言,色彩失真更小,圖像細節(jié)恢復(fù)更好。同時,還在后續(xù)高級計算機視覺任務(wù)上對本文的去雨圖像進行測試,本文算法能夠有效提高后續(xù)計算機視覺任務(wù)的精度。
傳統(tǒng)的圖像去雨算法往往被看作是一個圖像先驗信息的優(yōu)化問題?;谙闰灥姆椒ㄊ抢酶鞣N先驗或假設(shè)對雨痕的方向、密度和尺寸進行建模,然后利用該模型進行去雨。Kim等[4]建立了一個橢圓形的核函數(shù),分析每個像素位置橢圓核的旋轉(zhuǎn)角度和縱橫比來檢測雨條紋區(qū)域,然后通過自適應(yīng)選擇非局部鄰域像素及其權(quán)重,對檢測到的雨痕區(qū)域進行非局部均值濾波來去除雨條紋。Kang等[14]利用雙邊濾波器將圖像分解為低頻和高頻部分,然后通過字典學(xué)習(xí)和稀疏編碼將高頻部分分解為“雨分量”和“非雨分量”,從圖像中移除雨線分量。Chen等[15]的方法既不需要雨點檢測,也不需要耗時的字典學(xué)習(xí)階段。相反,由于雨條紋在成像場景中往往表現(xiàn)出相似和重復(fù)模式,提出了一種從矩陣到張量結(jié)構(gòu)的低秩模型來捕捉與時空相關(guān)的雨條紋。Li等[5]通過對背景層和雨紋層都施加高斯混合模型約束來去除雨條紋,這些約束可以適應(yīng)各種背景外觀以及雨帶的形狀,相比其他傳統(tǒng)方法能夠更好地去除雨條紋?;趥鹘y(tǒng)算法的圖像去雨在去除較小的雨條紋時取得了不錯的效果,但對于大雨或驟雨產(chǎn)生的雨條紋,傳統(tǒng)算法幾乎無法去除雨條紋。
近幾年,隨著深度學(xué)習(xí)技術(shù)的日漸成熟,深度學(xué)習(xí)被逐漸應(yīng)用于圖像去雨領(lǐng)域,基于深度學(xué)習(xí)的圖像去雨算法不再依賴于先驗知識,而是直接估計雨線的生成模型。Fu等[16]第一次將深度卷積神經(jīng)網(wǎng)絡(luò)用于單幅圖像去雨,首先將圖像分為細節(jié)層和基礎(chǔ)層,然后直接從合成數(shù)據(jù)集中學(xué)習(xí)雨天圖像細節(jié)層與真實圖像細節(jié)層之間的非線性映射關(guān)系,通過優(yōu)化目標函數(shù)來提升去雨效果,而不是增加卷積層的數(shù)量。Yang等[17]為了更好地去除真實場景下的雨線,提出了一種新的雨圖模型和去雨架構(gòu),在現(xiàn)有模型的基礎(chǔ)上標出雨水的位置,網(wǎng)絡(luò)根據(jù)提取到的特征,先檢測雨水位置再估計雨線,最后提取出背景層來完成去雨,另外,還將去雨視作多階段任務(wù)進行循環(huán)操作,每個循環(huán)過程都執(zhí)行上述操作以達到更好的去雨效果。Fu等[18]基于殘差網(wǎng)絡(luò)的啟發(fā),加深了去雨網(wǎng)絡(luò)的深度,提出了深度細節(jié)網(wǎng)絡(luò),將雨圖分解為高頻部分和低頻部分,并且將高頻部分映射到雨紋層,從而縮小了有雨圖像到干凈圖像的映射范圍,使得學(xué)習(xí)過程變得更加容易。為了進一步提高去雨效果,在訓(xùn)練過程中利用先驗圖像域知識對高頻信息進行提取,從而去除背景干擾,使模型聚焦于圖像中的雨條紋,從而更好地去雨。Li等[19]提出了一種采用空洞卷積增大感受野來逐階段去除雨紋的架構(gòu),該架構(gòu)將去雨過程分為幾個階段,在去雨的每一個階段使用一個具有多個空洞卷積的上下文擴展網(wǎng)絡(luò),每個通道對應(yīng)一個去雨模式,并且利用遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)來保存前一階段的有效信息,從而有利于下一階段的去雨。Wei等[20]使用半監(jiān)督學(xué)習(xí)方法,通過有監(jiān)督學(xué)習(xí)下合成的雨條紋來適應(yīng)真實無監(jiān)督學(xué)習(xí)中的雨條紋,通過這種方式來提高去雨模型的泛化能力,以此解決有雨數(shù)據(jù)集缺少問題。Ren等[21]考慮到大量堆疊網(wǎng)絡(luò)層數(shù)會導(dǎo)致參數(shù)增多并且造成過擬合,從而不考慮使用更深、更復(fù)雜的模型,轉(zhuǎn)而使用多個階段來解決問題,在去雨的每個階段使用遞歸運算讓每個階段的網(wǎng)絡(luò)參數(shù)共享,從而大幅減少了網(wǎng)絡(luò)參數(shù),并且取得了很好的去雨效果。Jiang等[22]考慮到雨線與相機之間距離的不同會導(dǎo)致不同雨線有不同程度的尺寸和模糊度,因此采用多個分辨率和多個尺度之間的互補信息來表示雨條紋,從輸入圖像尺度和層次深度特征的角度來探討雨條紋的多尺度協(xié)同表示來去除雨條紋,對于不同位置的相似雨型,采用遞歸計算得到全局紋理,并且在空間維度上挖掘出互補和冗余的信息來表示目標雨型,從而完成去雨。Wang等[23]考慮到現(xiàn)有的基于深度學(xué)習(xí)的去雨方法缺乏可解釋性,提出了一種雨核模型與深度學(xué)習(xí)相結(jié)合的去雨方法來更徹底地去除雨線。Chen等[24]基于控制理論中的反饋機制提出了一種基于錯誤檢測和誤差補償?shù)姆椒▉砣コ昃€。Fu等[25]考慮到基于深度卷積神經(jīng)網(wǎng)絡(luò)的去雨方法大多都是通過疊加普通卷積層來實現(xiàn),而這些卷積層通常只能考慮到局部關(guān)系而很少考慮全局信息,由此提出了一種雙圖卷積神經(jīng)網(wǎng)絡(luò)進行圖像去雨,第1個圖卷積神經(jīng)網(wǎng)絡(luò)用于提取特征圖中像素間的全局位置信息,第2個圖卷積神經(jīng)網(wǎng)絡(luò)用于提取特征圖跨通道的全局信息。與普通的卷積神經(jīng)網(wǎng)絡(luò)相比,2個圖卷積神經(jīng)網(wǎng)絡(luò)能從一個新的維度提取特征,從而能夠更好地處理復(fù)雜空間的長雨紋。Zamir等[26]提出了一個多階段圖像恢復(fù)架構(gòu),在前2個階段使用編碼器-解碼器架構(gòu)來提取圖像的多尺度特征,而在最后一個階段對原始分辨率的圖像進行直接處理來保證圖像細節(jié)不丟失,在每2個階段之間采用一個有監(jiān)督注意力機制模塊來保證每個階段都能利用恢復(fù)以后的圖像信息,該網(wǎng)絡(luò)不僅在每個階段的前后進行跳躍連接,還在不同階段之間進行信息交換,從而避免信息在傳播過程中丟失。
基于深度學(xué)習(xí)的單幅圖像去雨算法相比傳統(tǒng)算法在去雨效果上獲得了很大的進步,但目前基于深度學(xué)習(xí)的算法還存在一些問題。Ren等[21]提出的多階段去雨算法,雖然參數(shù)量很少,但只是單一地采用遞歸來運算,而忽略每個階段之間有用信息的交換。Jiang等[22]雖然加強了雨圖特征的提取,但僅僅采用單一階段來去雨使得去雨不徹底。Zamir等[26]使用多個階段逐漸去雨,但是忽略了深層次特征提取的重要性。
提出的網(wǎng)絡(luò)總體框架如圖1所示,在每個階段的開始有一個特征提取網(wǎng)絡(luò),該模塊能夠提取圖像的各種雨線細節(jié)和多尺度特征。隨后緊跟一個通道注意力(Channel Attention,CA)模塊,為不同的通道分配不同的加權(quán)參數(shù),從而使得有用特征傳到下一階段。在雙殘差圖像重建網(wǎng)絡(luò)中,使用雙殘差網(wǎng)絡(luò)來對圖像進行恢復(fù)。在前2個階段的最后,使用一個有監(jiān)督注意力模塊,在標簽圖像的監(jiān)督下只允許有用特征傳播到下一階段。在去雨的3個階段中,本文算法并不是簡單地將3個階段串接起來,而是在各個階段之間使用特征融合模塊把不同階段之間的信息進行融合,從而防止圖像細節(jié)信息在連續(xù)傳播過程中丟失。
圖1 網(wǎng)絡(luò)總體框架
殘差網(wǎng)絡(luò)(ResNet)是為了解決傳統(tǒng)的深層神經(jīng)網(wǎng)絡(luò)中層數(shù)過深而出現(xiàn)退化現(xiàn)象而提出的。文獻[27]指出,濫用網(wǎng)絡(luò)層數(shù)不僅不能提升網(wǎng)絡(luò)的學(xué)習(xí)能力,使用更深層的網(wǎng)絡(luò)效果反而會更差。本文提出的雙殘差圖像恢復(fù)網(wǎng)絡(luò)如圖2所示,該網(wǎng)絡(luò)不僅在每個殘差塊中添加一個跳躍連接,還在每個殘差塊的中間和下一個殘差塊的中間額外添加了一個跳躍連接,為網(wǎng)絡(luò)提供了更多的恒等映射通道,從而降低整體訓(xùn)練難度和梯度下降的訓(xùn)練速度,也防止信息在傳播過程中的消失。受Liu等[28]啟發(fā),本文使用普通卷積層和空洞卷積層相結(jié)合,在擴大感受野的同時能夠保留細化的特征,同時加入SE-ResNet[29]以獲取全局感受野。本文的圖像恢復(fù)網(wǎng)絡(luò)由6個雙殘差堆疊塊組成,并且從輸入到輸出的最外層使用殘差連接。前3個為DRB(Dual-residual Block),后3個為DRBS(Dual-residual Block with SE-ResNet)。DRB由2個普通卷積和2個空洞卷積構(gòu)成,對于普通卷積均使用3×3卷積核,而3個DRB中空洞卷積的膨脹速率逐漸減小,分別為12,8和6,從而能夠使網(wǎng)絡(luò)在連續(xù)的3個DRB中以從粗到細的方式定位雨線。DRBS均采用普通的3×3卷積核,并且在最后加入SE-ResNet[25]來獲得全局感受野。在圖像恢復(fù)模塊中,所有卷積核后面均使用ReLU激活函數(shù)。該模塊輸入為特征提取模塊的特征圖,輸出特征圖被傳遞到下一階段。
圖2 雙殘差圖像恢復(fù)網(wǎng)絡(luò)
淺層網(wǎng)絡(luò)因為層數(shù)淺,具有較小的感受野,所以輸出得到的特征圖包含更多的局部信息,從而能更好地提取圖像的紋理特征和細節(jié)特征等淺層特征。而深層網(wǎng)絡(luò)具有更大的感受野,所以能夠提取更多的全局信息,比如圖像的輪廓特征和形狀特征等深層特征。本文在每個階段的開始使用一個淺層特征提取模塊,通過一個CA模塊后輸入到深層特征提取模塊進行深層特征提取,然后將深層特征提取模塊輸出的特征圖傳輸?shù)诫p殘差網(wǎng)絡(luò)。
為提取淺層特征,本文在圖像輸入部分使用一個3×3的卷積進行淺層特征提取。在該卷積之后為一個CA模塊,使得更有用的淺層特征通過該模塊。CA模塊之后使用一個具有8個殘差塊的殘差網(wǎng)絡(luò)進行深層特征提取。深層特征提取模塊如圖3所示,由2個卷積和一個ReLU激活函數(shù)組成。特征提取模塊為:
圖3 深層特征提取模塊
RB(x)=C(δ(C(x))),
(1)
FEM(x)=RBt(RBt-1,RBt-2,…,RBo(x)),
(2)
式中,C表示卷積;δ為ReLU激活函數(shù);RB為殘差塊;FEM為特征提取模塊。
為了逐步融合來自上一階段雙殘差網(wǎng)絡(luò)的特征,提出了一個特征融合模塊(Feature Fusion Module,F(xiàn)FM),如圖4所示。來自雙殘差網(wǎng)絡(luò)第2個DRB和第1個DRBS的特征圖被輸送到FFM中。在FFM中,輸入的2個特征圖首先通過2個CA對不同通道的特征進行加權(quán),然后把來自2個卷積的特征圖拼接,最后通過一個1×1卷積進行通道合并。在FFM中的所有卷積后面均使用ReLU激活函數(shù)。殘差塊采用跳躍連接的方式將信息傳遞到更深層,解決了深層次網(wǎng)絡(luò)中的梯度消失問題,從而提升網(wǎng)絡(luò)的學(xué)習(xí)能力。
圖4 特征融合模塊
現(xiàn)有的多階段圖像去雨網(wǎng)絡(luò)大多直接把上一階段得到的去雨圖像信息傳遞到下一個連續(xù)的階段,從而向下一階段傳遞了很多冗余的特征。受Zamir等[26]啟發(fā),本文算法在前后2個階段之間引入一個使用標簽圖像進行監(jiān)督的注意力模塊,如圖5所示。在標簽圖像的監(jiān)督下,該模塊利用前一階段的輸出來計算注意力圖,這些注意力圖被用來提取上一階段的有用特征,使得上一階段的特征能夠有選擇性地傳遞到下一階段,該模塊的計算如下:
圖5 有監(jiān)督注意力機制
F=SAM(X,I)=Att?C(X)+X,
(3)
Att=σ(C(C(X)+I)),
(4)
O=C(C(X)+I),
(5)
式中,F(xiàn)為傳到下一階段的有用特征;X為上一階段的輸出;Att為注意力圖;I為去雨前的圖片;O為該階段去雨后的圖片。
該模塊為每個階段提供了無雨圖片的監(jiān)督信息。在標簽圖像的局部監(jiān)督下,利用標簽圖像的信息和前一階段的輸出來計算注意力圖,進而調(diào)整輸出來抑制當前階段無用的信息特征,只允許有用的信息傳遞到下一個階段。
用于訓(xùn)練網(wǎng)絡(luò)的廣泛使用的損失函數(shù)是均方誤差(Mean Square Error,MSE)。然而,由于MSE平方項的過度懲罰,通常會產(chǎn)生過度平滑的結(jié)果,不利于恢復(fù)清晰的圖像細節(jié)。為了獲得擁有更多細節(jié)的視覺效果,本文使用結(jié)構(gòu)相似性(Structural Similarity,SSIM)作為損失函數(shù)。通過計算去雨輸出圖像和無雨標簽圖像的SSIM,對SSIM取負值作為網(wǎng)絡(luò)的損失函數(shù),計算如下:
(6)
式中,uX和uY分別表示去雨圖像X和標簽Y圖像的均值;σXY表示去雨圖像和標簽圖像的協(xié)方差;常數(shù)C1和C2是為了避免分母為零,本文根據(jù)經(jīng)驗取C1=0.01,C2=0.03[26]。SSIM用X和Y的均值作為亮度的估計,二者的方差作為對比度的估計、協(xié)方差作為整體圖像結(jié)構(gòu)相似程度的度量。
本文算法的總體損失函數(shù)定義如下:
(7)
式中,S為階段數(shù);XS為第S個階段經(jīng)過網(wǎng)絡(luò)去雨以后的圖像;Y為無雨標簽圖像。將3個階段輸出的SSIM求和后取負值得到損失值。
本文提出的網(wǎng)絡(luò)架構(gòu)基于Pytorch實現(xiàn),實驗所使用的環(huán)境為Windows10,處理器為Intel(R)Core(TM)i7-10700K CPU@5.1 GHz,32G RAM,顯卡為單個NVIDIA GeForce RTX 3090。訓(xùn)練時對圖像進行隨機剪裁的方式進行處理,輸入到模型的圖片大小為128 pixel×128 pixel。使用ADAM優(yōu)化器對模型進行訓(xùn)練,其中動量參數(shù)β1與β2分別為0.9和0.999,模型初始學(xué)習(xí)率為2×10-4,進行1 000次迭代,使用余弦衰減策略逐漸減少到1×10-6,Batch size為4。本文選擇最近的公開源代碼的去雨算法進行對比實驗,包括經(jīng)典的去雨算法GMM[5],DSC[8]和基于深度學(xué)習(xí)的去雨算法DerainNet[16],JORDER[17],SEMI[20],DuRN[28],PreNet[21],RCDNet[23],RLNet[24],DualGCN[25]。
本文算法在不同的數(shù)據(jù)集上使用相同的設(shè)置進行訓(xùn)練和測試,分別為Rain100L[17],Rain100H[17],Rain12[5]和Rain800[30]。Rain100L為小雨數(shù)據(jù)集,僅僅包含單一方向的雨線,數(shù)據(jù)集中共有1 800張訓(xùn)練圖片和100張測試圖片。Rain100H是大雨數(shù)據(jù)集,與Rain100L張數(shù)相同并在此基礎(chǔ)上增加了共5種方向的雨線。Rain800包含800張訓(xùn)練圖片和100張測試圖片,Rain12數(shù)據(jù)集包含12張測試圖片。
本文通過在Rain100H數(shù)據(jù)集上進行訓(xùn)練,在包括Rain100H的共4個合成數(shù)據(jù)集上進行測試,并通過峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)[31]和SSIM[32]指標來進行評估。與之前的工作相同,本文在所有方法中統(tǒng)一使用Y通道(YCbCr顏色空間)來計算圖像的PSNR和SSIM的數(shù)值。對于早期的方法以及未提供訓(xùn)練代碼的方法,本文直接采用提供的預(yù)訓(xùn)練模型進行測試,并將輸出的去雨圖片計算PSNR和SSIM。在所有的對比方法中,DSC為傳統(tǒng)去雨算法,其他為深度學(xué)習(xí)算法,在去雨算法JORDER中直接使用公布的測試結(jié)果進行測試,在方法GCN,RCDNet,JORDER,DerainNet,SEMI中直接使用了作者的預(yù)訓(xùn)練模型進行測試,對于方法RLNet,DuRN,PreNet,使用與本文算法相同的數(shù)據(jù)集并使用默認的設(shè)置重新進行訓(xùn)練,并將最終結(jié)果與本文提出的算法進行對比。
在不同數(shù)據(jù)集上的評估指標如表1所示。本文提出的算法在4個數(shù)據(jù)集上進行訓(xùn)練和測試,比較PSNR和SSIM。相比DualGCN方法,本文算法在Rain100L,Rain100H,Rain12和Rain800數(shù)據(jù)集上PSNR分別提高了1.46,1.01,0.02和5.92 dB,SSIM分別提高了0.026,0.003,0.003和0.079。從而說明,本文提出的算法在去除雨線和恢復(fù)被雨線損壞的背景圖片細節(jié)方面有更好的效果。除了對PSNR和SSIM量化指標的分析以外,本文還隨機選取Rain100H數(shù)據(jù)集中的6張測試結(jié)果和Rain800數(shù)據(jù)中的4張測試結(jié)果從主觀效果層面對去雨效果進行評價,結(jié)果如圖6~圖8所示。由圖6和圖7結(jié)果對比可知,其他算法在去雨時雨線殘留明顯,背景恢復(fù)細節(jié)較差,而本文恢復(fù)出來的圖片更加清晰。為了觀察圖片的細節(jié)表現(xiàn),如圖7所示對一張去雨后圖片進行放大展示細節(jié)。由圖7可以看出,本文算法的去雨效果在細節(jié)恢復(fù)上比其他方法要好,DuRN恢復(fù)出來的無雨圖像比較模糊,GCN和RLNet整體觀感比DuRN好但細節(jié)恢復(fù)比本文算法差,邊緣不夠銳利。因此,本文算法的細節(jié)恢復(fù)主觀上比其他方法更好。
表1 在不同數(shù)據(jù)集上的評估指標
圖6 Rain100H數(shù)據(jù)集上的測試結(jié)果
圖7 Rain100H數(shù)據(jù)集上的細節(jié)對比
圖8 Rain800數(shù)據(jù)集上的測試結(jié)果
為了測試真實環(huán)境下的去雨效果,本文在LPNet[33]收集整理的300張真實雨圖上進行測試,并從中隨機選取了3張進行對比,測試所用的模型為Rain100H上訓(xùn)練的模型,測試結(jié)果如圖9所示。由圖9可以看出,其他算法都存在去雨不徹底導(dǎo)致雨條紋殘留明顯以及去雨后的圖片不清晰、存在偽影以及細節(jié)部分丟失等問題。在雨條紋過大,對背景圖像造成嚴重遮擋的情況下,其他方法去雨效果大大降低,特別是傳統(tǒng)算法在真實雨圖上表現(xiàn)不佳。本文算法能解決上述問題,達到更好的去雨效果,有更好的應(yīng)用價值。
圖9 真實數(shù)據(jù)集上的測試結(jié)果
為了驗證本文算法中的各個模塊的有效性,在數(shù)據(jù)集Rain100H上進行消融實驗,其包括網(wǎng)絡(luò)的階段數(shù)以及不同模塊的組合與不同損失函數(shù)。
3.4.1 去雨階段數(shù)的討論
為了對本文所使用的多階段網(wǎng)絡(luò)結(jié)構(gòu)的有效性進行驗證,對網(wǎng)絡(luò)的去雨階段數(shù)進行了消融實驗,如表2所示。
表2 不同損失函數(shù)的消融實驗
由表2可以看出,隨著階段數(shù)的增加,訓(xùn)練的網(wǎng)絡(luò)能夠得到更好的效果。2階段去雨網(wǎng)絡(luò)的PSNR與SSIM相比1階段分別提升了1.11 dB和0.06,但4階段去雨網(wǎng)絡(luò)相比3階段PSNR與SSIM只提升了0.03 dB和0.01。不同階段數(shù)評估指標如圖10所示。由圖10可以看出,隨著階段數(shù)的增加,網(wǎng)絡(luò)效果提升越小,但過多的階段數(shù)占用了更多的計算資源,所以本文綜合考慮采用階段數(shù)量為3。
圖10 不同階段數(shù)評估指標
3.4.2 損失函數(shù)消融實驗
混合損失函數(shù)被廣泛地應(yīng)用于圖像恢復(fù)及各種視覺任務(wù)中,如SSIM+L2損失以及SSIM+L1損失等,但是混合損失函數(shù)的加入加重了網(wǎng)絡(luò)超參數(shù)調(diào)節(jié)的負擔。Ren等[21]的經(jīng)驗表明,單個損失函數(shù)已經(jīng)足以訓(xùn)練本文提出的網(wǎng)絡(luò)。本文對L1,L2損失、SSIM損失、PSNR損失和Charbonnier損失[34]進行了消融實驗。不同損失函數(shù)的消融實驗如表3所示。由表3可以看出,當使用SSIM損失的時候能夠得到最高的PSNR和SSIM。
表3 不同模塊組合的消融實驗
3.4.3 網(wǎng)絡(luò)組成消融實驗
為了驗證本文提出的網(wǎng)絡(luò)結(jié)構(gòu)的有效性,在Rain100H數(shù)據(jù)集上對不同模塊的組合進行消融實驗,如表4所示。
表4 不同階段數(shù)的消融實驗
由表4可以看出,當僅僅使用雙殘差模塊(DRM)時該網(wǎng)絡(luò)去雨效果一般,當加入一系列本文使用的網(wǎng)絡(luò)模塊以后PSNR和SSIM都得到了很大的提升。當將網(wǎng)絡(luò)模塊由DRM替換成密集殘差塊(RDB)以后效果下降,證明了本文所使用的DRM的有效性。同時,層數(shù)越深的深層特征提取模塊效果越好,證明深層特征提取在圖像去雨網(wǎng)絡(luò)中的重要性。所以本文提出的網(wǎng)絡(luò)最終使用表4中PSNR和SSIM指標最高的組合所對應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)。
為了驗證本文的去雨算法在后續(xù)高級計算機視覺任務(wù)上的應(yīng)用價值,利用Google API對去雨前后的圖片進行測試,如圖11所示。被暴雨的雨線所遮擋的圖像在目標檢測中的精度大幅下降,對車的檢測精度只有80%并且無法檢測出人物。而去除雨線以后的圖像對車的檢測精度達到了95%,能夠額外檢測到人物,準確率為73%。說明本文算法能夠?qū)⒃趷毫犹鞖庀虏杉降膱D像通過去除雨線來有效地提高后續(xù)計算機視覺任務(wù)的準確度。
圖11 對目標檢測性能提升的評估
本文基于多階段架構(gòu)提出了一種端到端的多階段去雨算法,使得雨線逐漸被去除的同時,背景圖像的細節(jié)紋路也能夠更好地恢復(fù)。另外,在不同階段之間加入特征融合模塊以及引入帶有標簽圖像進行監(jiān)督的注意力機制,使得有用的特征能夠更有效地傳播到下一個階段。本文算法在5個數(shù)據(jù)集上進行了測試,并采用PSNR和SSIM作為圖像質(zhì)量評價標準對本文的去雨效果進行評估,與現(xiàn)有的算法比較,本文的去雨效果突出。此外,本文對圖片在后續(xù)計算機視覺任務(wù)上進行了測試,去雨以后的圖片能達到更高的精度。
然而,本文提出的算法也存在不足,由于數(shù)據(jù)集的局限性使得該網(wǎng)絡(luò)針對雨線的去除效果較好,但是當有雨圖像中存在雨滴或者雨霧的時候,本文算法存在一定缺陷。收集真實的數(shù)據(jù)集或者合成更接近于真實的數(shù)據(jù)集供更多的研究者使用是本文接下來的研究方向。