邵羅仡, 陳清江, 尹樂璇
(西安建筑科技大學,西安 710000)
雨天、霧天及雪天等各種天氣條件會導致圖像或視頻的視覺質量下降[1-2]。其中,雨天是較為常見的一種天氣條件,會造成圖像模糊、可視性差,從而影響戶外計算機視覺系統如視頻監控[3]、目標跟蹤[4]、目標檢測[5]等的性能,近年來,深度學習逐漸成為計算機視覺領域中最流行的方法[6-8]。現有單幅圖像去雨算法主要分為基于傳統的去雨法和基于深度學習的去雨法兩類。
基于傳統的方法:在沒有時間信息支持的情況下,早期的研究人員首先將其表述為基于形態學成分分析的圖像分解問題[9]。為了解決這一問題,提出了通過稀疏編碼引導的字典學習來學習雨和非雨兩個字典,從而通過基于稀疏編碼的信號分解去除雨紋[10];CHEN等[11]提出了一個從矩陣到張量結構的低秩模型來捕捉雨紋,從而在文獻[12]中提出了一種基于字典學習的雨條紋去除算法,該算法基于雨條紋的非線性生成模型;LI等[13]提出了利用高斯混合模型對單幅圖像的背景層和雨紋層進行處理的方法。
基于深度學習的方法:FU等[14]首先將CNN用于去雨,直接學習雨天和干凈圖像細節層之間的映射關系,在細節層上進行訓練,還引入了殘差網絡進行去雨;YANG等[15]提出了一種周期性的雨檢測和去除雨紋的遞歸網絡;ZHANG等[16]提出了一種協同估計降雨密度和去除雨紋的網絡,該網絡可以自動確定降雨密度,并去除相應的雨紋;WANG等[17]提出了一種遞進遞歸網絡,該網絡通過遞歸層來利用深度特征在各個階段的相關性。然而,現有的去雨算法只關注擴大CNN的寬度和深度或者使用更為復雜的結構來提高性能,而忽略了通道和空間的信息及多尺度之間的內在聯系。
文獻[7]提出了一種通道注意力機制,通過考慮通道間的相互依賴性來自適應調整不同通道的權重,因此,本文提出了一種結合通道和空間的雙注意力殘差群網絡,通道注意力機制通過考慮通道間的依賴關系自適應地調節不同通道間的聯系。由于一般的膨脹卷積會造成網格偽影的情況,因此本文在空間注意力模塊中引入了平滑膨脹卷積。受ResNet[18]和DenseNet[19]的啟發,本文設計了一種用于提取淺層特征的RDB模塊。根據文獻[20],為了更好地利用更多的特征來恢復圖像細節,本文設計了一種多尺度雙分支的細節恢復(MDR)模塊,主要貢獻如下:
1) 提出了一種多尺度殘差群網絡的圖像去雨算法,包括去雨子網絡和恢復細節子網絡,利用細節恢復模塊實現圖像細節的恢復,并且兩個子網絡共享參數;
2) 在雙注意力模塊中,為了避免網格偽影的問題,利用更小卷積核的平滑膨脹卷積來提取不同尺度特征,進而采用逐步融合的方式來融合不同尺度的特征,更好地利用其余尺度的特征信息;
3) 為了更好地恢復圖像細節,提出了一種基于卷積的包含全局分支和局部分支的雙分支細節恢復模塊,同時提取圖像的全局信息和局部信息。
在圖像去雨算法中,常用的雨圖像模型可以表示為
R=B+S
(1)
式中:R表示雨圖;S表示雨紋;B表示背景。
然而在現實生活中,雨的出現不僅是由雨條聚集而成,還具有不同的形狀和重疊的方向。因此根據文獻[8,15],提出了一種基于大氣散射模型的新雨圖像模型
(2)

自從AlexNet[21]贏得ImageNet挑戰賽以來,注意力機制在自然語言處理領域得到了廣泛的關注和應用。很多人通過制作更深、更復雜的網絡以提高計算機視覺的準確度。然而,提高準確度并不能增加速度方面的優勢,在實際應用中,很多視覺任務需要在計算能力有限的平臺上及時進行。文獻[22]提出了深度可分離卷積,其具有參數量與運算成本較低的優勢。不同于常規卷積操作,深度卷積的一個卷積核負責一個通道,每個通道只被對應卷積核卷積,由于這種運算是對每個通道單獨進行卷積,沒有有效利用不同通道在相同空間位置上的特征信息,因此,需要通過逐點卷積將這些特征圖在通道方向上進行加權組合生成新的如圖1所示的特征圖。深度可分離卷積是一種廣泛應用在卷積神經網絡中的模塊,其可以滿足輕量化參數和計算量的需求,因此常用于一些輕量級網絡,如MobileNets[23]。

圖1 深度可分離卷積Fig.1 Depthwise seperable convolution
近年來,注意力機制廣泛應用于物體識別[24]、圖像超分辨率[25]等各種不同類型的視覺任務,其被證明有利于提高模型的性能。QIAN等[26]提出了一種注意力生成網絡用于對抗訓練去除雨紋;LI等[27]提出了一種通過squeeze-and-excitation block為不同的雨紋層分配不同的α值,然后通過多個階段去除雨紋;WANG等[28]提出了一種通過空間注意力殘差塊從局部到全局去除雨紋。目前現有的大多去雨算法[16,29]忽視了不同尺度下雨紋的聯系,只有少數研究者利用多尺度學習[30-31]。由于在高尺度中可以注意精細的細節,在低尺度中可以更好地理解背景,因此本文提出了一種新的多尺度空間注意力模塊,為了解決網格偽影問題,用平滑膨脹卷積代替一般的膨脹卷積,并通過逐步融合的方式將不同尺度特征相融合。
本文所提網絡結構及其模塊構成如圖2所示,其中,PReLU代表激活函數。

圖2 所提網絡結構及其模塊Fig.2 The architecture of proposed network and the modules
本文將此網絡分為去雨網絡和細節恢復網絡兩個子網絡,其中,去雨網絡分為淺層圖像去雨和深層圖像去雨兩部分。為了更好地恢復圖像的細節信息,本文設計了細節恢復網絡,其中,去雨網絡和細節恢復網絡共享參數。此外,為了避免網絡較深會丟失一些細節信息,本文增添了全局跳躍連接用于傳輸淺層信息,即
F0=CConv(R)
(3)
Fi-1=CRG(CRDB(F0))+F0
(4)
F2=CConv(CRDB(Fi-1))
(5)
Fd-1=CMDR(CRDB(F0))+F0
(6)
F4=CConv(CRDB(Fd-1))
(7)
B′=F2+F4
(8)
其中:CConv(·)為卷積運算;F0為用于全局殘差學習的特征;CRDB(·)表示由殘差密集塊提取的特征提取函數;CRG(·)表示由殘差群網絡提取的特征提取函數;CMDR(·)表示多尺度細節恢復函數;B′為無雨圖像。
在本文提出的網絡結構中,殘差群主要用來提取圖像的特征。殘差密集模塊如圖3所示。

圖3 殘差密集模塊Fig.3 Residual dense module
圖3(a)中,ResNet通過躍層連接可以解決梯度消失的問題,然而使用加法操作可能會阻擋網絡中的信息流。圖3(b)中,由于DenseNet將每一層生成的特征圖傳遞給隨后的所有層,從而需要消耗大量的內存。如圖2(b)所示,選取2個卷積層和2個雙注意力模塊作為殘差塊,接著結合多個殘差塊作為殘差群(RG)模塊。
本文將詳細介紹的雙注意力模塊包括空間注意力和通道注意力,可以將空間信息和通道信息聯系起來,定義為
CDA(Fi)=CSA(Fi-1)?CCA(Fi-1)
(9)
式中:CSA(·)和CCA(·)分別為空間注意力函數和通道注意力函數;?表示像素點相乘。同時,為了解決網格偽影問題,用平滑膨脹卷積代替一般的膨脹卷積。雙注意力模塊如圖4所示。

圖4 雙注意力模塊Fig.4 Dual-attention module
在現有圖像去雨算法中,大多關注對無雨圖像的重建,而忽略了在去雨后恢復圖像的細節信息。因此,本文在去雨后設計了一個細節恢復模塊,其中包括去雨后的全局特征和局部特征。雖然全局特征可以獲得更多的全局信息,然而局部特征對于圖像的細節和顏色更加有利。如圖5所示,MDR模塊將去雨后的模糊圖像分別送到全局分支、局部分支。由于膨脹卷積在保持參數個數不變的前提下增大了卷積核的感受野,同時,它可以保證輸出的特征映射大小跟輸入的保持一致。因此在全局分支中,本文設計了擴張因子分別為1、3、5的膨脹卷積對去雨后的特征圖進行處理,并通過Concat連接,最后通過1×1的卷積層對通道數進行整合。在局部分支中,采用3×3的卷積層并通過加法操作將信息歸并到全局分支中,使全局分支的信息更為完善。最后將合并好的特征圖輸入到卷積層,進一步調整通道和融合信息,得到最終的無雨圖像。

圖5 細節恢復模塊Fig.5 Details restoration module
根據文獻[32],廣泛使用的L2損失函數由于平方懲罰在圖像中處理效果不佳,可能產生局部斑點偽影。文獻[30]證明,LSSIM和L1損失函數在去雨任務中對結構和邊緣具有更好的效果,LSSIM得到的效果會比L1、L2的結果更具有細節。因此本文選取L1+LSSIM作為損失函數對網絡進行優化,具體定義為
(10)
(11)
Ltotal=L1(YNR,YGT)+(1-LSSIM(YNR,YGT))
(12)

本文實驗環境為PyTorch1.11.0深度學習框架,在Windows11,Intel i7-12700H,2.3 GHz,16 GiB RAM,Nvidia GeForce RTX 3060 GPU平臺上完成。采用Adam優化器對模型進行優化,patch size為100×100,batch size為8,初始學習率為1×10-3,epoch到達40后,每隔20,學習率為原來的20%。
在Rain100H[15]、Rain100L[15]數據集中進行訓練,在Rain100H[15]、Rain100L[15]、Rain800[33]和Rain1200[34]等4個數據集上進行測試。
為保證實驗的準確性,本文將所有對比算法都設置成與本文相同的參數進行測試,并選擇PSNR、SSIM的平均值來表現算法的性能,首先在4個數據集上,將本文算法與其他算法進行比較,見表1,加粗數據表示效果最好。

表1 PSNR和SSIM 指標的定量評估結果
從表1可以看出,本文提出的算法在Rain100H、Rain100L、Rain800數據集上的PSNR和SSIM都優于其他算法,在Rain1200數據集上位于第二。
圖6所示為合成數據集上的恢復結果。

圖6 合成數據集上的恢復結果Fig.6 Restoration results on synthetic datasets
從圖6可以看出,本文算法的主觀視覺效果在合成數據集上優于其他算法,本文的模型不僅去除了雨紋,還保留了圖像的細節信息。PSNR、SSIM在數據集Rain100H中分別為30.42 dB、0.919,在數據集Rain100L中分別為40.41 dB、0.989,在數據集Rain800中分別為31.07 dB、0.902。
為了進一步證明本文所提算法具有較強的泛化能力,選取了幾幅真實雨圖與較為先進的算法進行比較,如圖7所示。

圖7 真實數據集上的恢復結果Fig.7 Restoration results on real datasets
由圖7可以看出,DDN、PReNet不能有效地去除雨紋,而UMRL、RESCAN也有輕微的雨紋痕跡,JORDER和DIDMDN會丟失一些細節信息。實驗結果表明,本文所提算法更接近真實無雨圖像。
為了證明所提算法的有效性,本文進行了3部分消融實驗,并通過客觀評價指標對比驗證使網絡達到最佳性能。
3.4.1 關于模塊數量的實驗
本文將RG數量分別設置為2、3、4、5、6,MDR數量分別設置為1、2、3、4、5,分別在Rain100H和Rain100L上進行訓練,見表2。

表2 不同模塊數量的PSNR/SSIM定量評估結果
通過表2列出的PSNR和SSIM可以看出,增加RG和MDR數量可以提高模型的性能。然而當RG數量到達6時,模型在Rain100H和Rain100L上達到飽和狀態,沒有顯著差異。但是當RG數量設置為6時,在Rain100L上SSIM值保持不變,PSNR值反而降低。同時,更多的RG模塊會減緩網絡訓練速度并增加內存消耗。通過表2可以證明,當MDR數量為5時,Rain100H和Rain100L所對應的PSNR值和SSIM值全部降低。因此,本文選取RG數量為5,MDR的數量為4。
3.4.2 針對模塊有效性的實驗
本文分析了所提網絡的主要模塊RDB、DA、RG、MDR。在保持網絡框架不變的情況下,通過在Rain100L上進行實驗,不同的模塊效果如表3所示,其中,M1代表只有RDB,M2代表只有RDB和DA,M3代表只有RDB、DA和RG,Ours代表本文含有的4個模塊,√和×分別代表有、無這個模塊。

表3 不同模塊的評估結果
3.4.3 關于損失函數的實驗
為了驗證網絡損失函數的有效性,本文對不同的損失函數進行了消融實驗。本文將損失函數替換為幾種常用于去雨任務的損失函數,包括L1損失函數、L2損失函數和LSSIM損失函數,結果如表4所示。

表4 不同損失函數的評估結果
由表4可知,單獨使用L1和L2損失函數,PSNR/SSIM分別為36.84 dB/0.983和36.89 dB/0.984。SSIM損失函數考慮了人的視覺感知,SSIM得到的結果會比L1和L2得到的結果更細致,因此,本文選擇它們的線性組合L1+LSSIM作為損失函數。
本文提出了一種多尺度殘差群網絡的圖像去雨算法,該算法可以有效解決現有去雨算法存留雨紋和去雨后圖像細節信息丟失的問題。具體來說,將去雨任務分成去雨子網絡和恢復細節子網絡進行,在兩個子網絡中實現參數共享,使有用的特征傳遞到下一個網絡中。大量的實驗結果表明,本文算法在多個數據集上具有優異的結果,可以有效地提高計算機視覺任務的性能,在自動化駕駛、無人機航拍等領域均具有重要的應用價值。