毛青宇,楊曉敏
(四川大學電子信息學院,成都610065)
霧霾是一種常見的自然天氣狀況,由于大氣中存在著漂浮的塵土、顆粒和水滴,大氣光在通過這些懸浮顆粒物時導致觀測物體的反射光在到達成像設備前產生衰減與模糊,最終采集的圖像因色彩衰減嚴重、對比飽和度降低等質量問題,給人們的生活與各種計算機視覺系統應用帶來了嚴重的影響(如圖片識別、分類、無人駕駛和監控視頻分析等)。因此,圖像去霧作為恢復惡劣天氣下獲取的退化圖像的關鍵技術受到了人們的關注。
由于霧霾導致的圖像退化過程可以用經典大氣散射模型[1,2]表示:
I(x)=J(x)t(x)+A(1-t(x) )
(1)
式(1)中,I(x)表示成像設備獲取的霧霾圖像;J(x)表示真實場景圖像或稱理想的清晰圖像;t(x)表示大氣傳輸圖;A表示全球大氣光。在這里我們假設大氣光值是均勻的,此時大氣傳輸圖可以表示為t(x)=e(-βd(x)),其中β表示大氣散射系數,d表示景深。
現有的單幅圖像去霧方法可以簡要的分為兩類:基于傳統先驗知識的圖像去霧方法和基于深度學習的圖像去霧方法。在2016年以前,基于傳統先驗知識的圖像去霧算法占據主流。Fattal等人[3]根據先驗知識和主成分分析提出了一種估計場景反射率的物理模型方法;He等人[4]通過分析清晰圖像與霧霾圖像在顏色通道的不同表現,提出了暗通道先驗方法(Dark Channel Prior,DCP),取得了明顯的去霧效果提升,但對于天空、雪地等物體顏色與大氣光強度相似時的場景,恢復圖像會產生嚴重的顏色失真。為了解決暗通道方法存在的問題,許多基于DCP的改進算法[5]被提出并取得了良好的去霧效果。然而,基于傳統先驗知識的算法都強烈依賴于先驗知識的選擇,當成像環境發生變化時,此類方法往往不能很好地處理所有的霧霾圖像。隨著深度學習的發展以及大規模基準數據集的提出,越來越多的學者嘗試使用深度學習工具直接預測大氣傳輸圖或最終恢復圖像。DehazeNet[6]首先提出使用卷積神經網絡估計霧霾圖像的大氣傳輸圖,取得了一定的性能提升。Li等人[7]修改了經典的大氣散射模型,使用輕量級卷積神經網絡直接預測最終恢復圖像,而避免了錯誤估計大氣傳輸圖導致的性能下降。GCA-Net[10]使用平滑擴張獲取更多的上下文信息,并采用門控子網融合不同級別的特征,取得了明顯的性能提升。隨著近年來基于深度學習的圖像去霧算法性能的提升,網絡的規模與參數量也越來越大了。網絡計算量和存儲量的增加導致訓練難度劇增并降低了運算效率,這種存儲規模的圖像去霧網絡很難應用到實際的場景中。另外,由于霧霾圖像中的霧霾分布不均勻不規則,使用固定尺度的卷積核往往無法有效處理不同大小的霧霾信息,這會影響網絡的去霧性能。
基于以上問題,本文提出了多尺度的輕量級圖像去霧網絡(Multi-scale Lightweight Network,MLNet),這樣的模型能夠部署到諸多移動監控設備上實時處理霧霾圖像便于后續的計算機視覺系統應用,并且通過不同尺度的處理能夠得到優異的去霧性能。
在本節中,我們將詳細介紹我們的多尺度輕量級圖像去霧模型。整個模型的架構如圖1所示。輸入圖像首先經過一個3×3的64通道卷積層提出淺層信息。為了實現網絡的多尺度處理,我們的網絡結構在三個并行的支路分別對不同尺度下的特征進行處理,每個支路包含數量不等的基本模塊。

圖1 MLN整體框架圖
每個尺度下的特征空間存在著互補的信息,為了中間信息的相互流通,在每個基本模塊處理后都會將特征信息上下采樣后傳遞到其他尺度的特征中去。在三條支路處理完相應的尺度特征后,使用上采樣層逐層將多尺度信息進行結合。不同尺度特征疊加得到一個192通道的特征圖,再經過后續的64通道輸出的卷積層和3通道輸出的卷積層,最終得到的3通道特征圖以全局殘差的方式與輸入霧霾圖像疊加得到恢復的無霧圖像,使用全局殘差也能降低模型的訓練難度。在這里我們注明,除了上下采樣層以及基本模塊內的卷積層,其他卷積層的卷積核大小均為3×3。
通常來說,大尺寸的卷積核擁有更大的感受野,這樣能或者更多的特征信息,然而大尺寸的卷積核包含大量的參數,這會顯著影響模型的計算效率。因此,用一些小尺寸的卷積核擬合大尺寸卷積核得到與大卷積核相同的感受野并減小參數量是一個合理的方法。在此,我們采用GoogleNet[8]的部分結構作為我們的基本模塊,我們稱之為多尺度輕量塊(Multi-scale Lightweight Block,MLB),結構如圖2所示。該模塊含有四個支路、一個平均池化層和一個連接層,連接層用于連接四個支路的輸出特征。每個1×1的卷積層首先用于改變輸入維度,左邊的兩個3×3的卷積層用于替代一個5×5的卷積層,平均池化層的卷積核大小為3×3。通過這樣的方式能大大降低運算難度,并且在網絡的三個尺度通道內又分別構成了多尺度處理。最終,沿著四個分支的四個輸出被整合為一個特征圖,以便下一個階段可以同時提取不同的尺度提取特征。

圖2 所使用的網絡基本模塊MLB
整個網絡模型是一個基于卷積神經網絡的端到端模型。以RGB霧霾圖像作為輸入,直接生成相應的恢復清晰圖像。該模型包含一個預處理卷積層,三個含有不同數目MLB的支路,兩個后續卷積層和一個全局跳躍鏈接。MLB和多尺度支路設計使網絡從不同尺度獲取特征信息。小尺寸卷積核的疊加大大降低了運算規模。最后經過兩次卷積使輸出維度(殘差圖像)與輸入圖像相同,全局鏈接進一步保證了輸出圖像的細節。
在所提出的網絡模型中,除了MLB內部的卷積層外,所有的卷積層后都連接著批處理歸一化層(Batch Normalization,BN)和ReLU激活函數,每個連接層后連接ReLU激活函數。BN層有助于防止網絡過擬合以及加速收斂,激活函數也是連接層后所必需的。
為了訓練本文所提出的網絡,我們采用了一個雙分量損失函數,第一項采用L1像素損失度量恢復圖像和真實圖像的相似性,第二項采用L1梯度損失幫助構建具有更加豐富邊緣信息的圖像。像素損失如下:

(2)
其中,Iin表示輸入霧霾圖像,Igt表示真實圖像,MLN(Iin)表示為將霧霾圖像輸入網絡得到的最終恢復圖像。梯度損失可以表示為:

(3)
其中,φ(·)表示梯度運算,在本文中我們使用Sobel算子計算梯度圖像。由此我們的總損失可以表示為:
Ltotal=LPix+αLGra
(4)
式中,α用來平衡兩個損失項。在訓練過程中,我們根據實驗經驗將其設為0.5。
本文使用大規模基準數據集RESIDE[9]對網絡進行訓練,RESIDE數據集包含室內訓練集ITS(13990對圖像),室外訓練集OTS(60246對圖像)和綜合目標測試集SOTS(500張室內圖像和492張室外圖像)。在訓練過程中,我們分別對ITS和OTS進行訓練并在SOTS數據集上測試,在本文中我們采用峰值信噪比PSNR和結構相似性SSIM兩個客觀指標再RGB通道上驗證所提出模型的去霧效果。
所有訓練集內的圖片會首先進行水平垂直隨機翻轉,然后裁剪為240×240的圖像塊送入MLNet中。訓練時,我們使用Adam優化器并將其參數設為默認值。對于ITS和OTS訓練集,我們分別訓練3×105和5×105次迭代,學習率分別初始化為1×10-4和5×10-5,并采用余弦退火策略使學習率漸變至0。三個多尺度分支的MLB數量分別設置為3,4,5。所有的實驗均在PyTorch框架下進行,使用的GPU型號為GTX 2080Ti。
為了充分驗證所提出模型的有效性,我們比較了幾個先進的傳統圖像去霧算法和基于深度學習的圖像去霧算法,其中包括DCP[4]、AOD-Net[7]、DehazeNet[6]、GCANet[10]和PFFNet[11]。在SOTS測試集上的測試結果如表1所示。

表1 客觀指標對比結果
表1是各個算法在SOTS測試集下的客觀指標所取得的值。其中PSNR和SSIM的數值越大表示圖像效果越好,算法越優越。從表1可以看出,所提出的MLNet在兩個客觀指標上都取得了較為明顯的優勢,這也證明了文中所提的MLNet由于其他的對比算法。下圖展示了幾種算法與所提出算法在SOTS測試集上的一些測試結果,我們可以看到DCP,DehazeNet和GCANet在室外圖像測試中導致圖像整體發生色彩畸變,這是錯誤估計大氣傳輸圖像導致的,AOD-Net與PFFNet對于室內圖像的去霧效果非常差,并且造成整體背景偏白偏亮。我們所提出的MLNet在室內室外都取得了優異的去霧效果,在整體上去霧程度明顯,并且對于室外條件下的近景霧霾能夠進行有效去除。

圖3 不同方法在SOTS測試集上的表現
本文提出了一種多尺度的輕量級圖像去霧算法,該算法采用小尺寸卷積核以及多尺度支路并行的設計,使網絡不僅能在多尺度內部進行特征傳遞并且能跨尺度傳遞特征信息,而小尺寸卷積核使整個網絡的參數量以及運算量大大減少,能夠高效快速地完成圖像去霧任務。我們的網絡結構仍有很多改進空間,在保證網絡性能的前提下可以進一步通過減少支路或更改卷積形式,繼續降低參數使用量提高運算速度。