陳 平
(徽商職業學院 電子信息系,合肥 230022)
在計算機視覺領域中,高質量的圖像對目標檢測和圖像識別等計算機視覺任務起著重要的作用.然而,在實際環境中,圖像的質量經常會受到空氣中懸浮物(霧霾、灰塵等)的影響,這些懸浮物遮擋了背景信息,使圖像變得模糊.因此,如何得到清晰的無霧圖像已成為計算機視覺的研究熱點.
為了消除空氣中霧霾對于圖像質量的影響,幾十年來,研究人員對此不懈努力,現有的去霧方法大致可分為3 類:第1 種方法是圖像增強算法.主要基于信號處理原理,如直方圖均衡化、同態濾波、對比度增強、多尺度Retinex 等[1].但是圖像增強方法可能會導致一些關鍵信息在處理過程中丟失,因此應用范圍相對較窄[2];第2 種方法是基于大氣散射模型的物理模型算法.根據估計景深的不同,將其進一步分為基于場景深度信息的三維建模方法[3],圖像去噪先驗理論方法以及深度學習方法[4].通過深度學習方法估計大氣散射模型參數的去霧效果非常好,可是由于無法獲得比較大的標準數據集,它僅限于實驗室環境,無法大規模推廣[5].第3 種方法是基于CycleGAN的圖像風格轉換去霧方法[6],CycleGAN 可以實現無配對訓練數據的模型訓練,解決了數據集的問題,具有很強的現實意義[7].然而,由于去霧效果相對一般,不能滿足人們的期望,去霧能力有待進一步提高.所以到目前為止,還沒有一種算法不僅擁有良好的去霧性能,而且具備較強的實用性.
為了解決這一問題,本文提出了一種基于明暗通道的循環GAN 網絡(bright and dark channel CycleGAN network,BDCCN)算法,以CycleGAN為基本框架,采用固定參數和訓練參數相結合方式,基于明暗通道先驗理論,改進循環感知損失,利用網絡完成無配對訓練數據的模型訓練,增強了CycleGAN 網絡對霧霾的敏感性.除此之外,本文基于CycleGAN 網絡中引用感知損失思想的經驗,在訓練中增加了改進的循環感知損失,約束了網絡的訓練方向,增強了去霧效果.
總的來說,本文的工作主要是在以下兩點:
(1)首次將明暗通道先驗理論引入到以CycleGAN為基本框架的去霧網絡中,通過提高明暗通道的損失函數,提高了網絡對訓練過程中霧霾特性的敏感性,得到了較好的去霧效果.
(2)增加了改進的循環感知損失,進一步增強了網絡的去霧能力.通過在RESIDE 數據集[8]上的實驗,驗證了本文網絡比CycleGAN 具有更好的去霧能力,恢復的效果更接近于背景圖像.
本文的以下章節是:第2 節介紹了與深度學習網絡相關的工作;第3 節介紹了BDCCN 網絡及其改進;第4 節介紹了仿真實驗的方法和結果,并與其他方法進行了比較;第5 節對本文進行了總結.
單幅圖像去霧算法主要分為3 類:基于信號處理原理的圖像增強算法、基于大氣散射模型的去霧算法和基于CycleGAN的風格轉移方法[9].其中,圖像增強算法容易出現信息丟失問題,應用場景經常受到限制;基于大氣散射模型的去霧視覺算法可以細分為三維建模方法,先驗理論方法以及深度學習方法.雖然三維建模方法的去霧效果不錯,但是該模型的建立成本過大,應用范圍非常有限;現有的先驗理論方法比較簡單易用,但對于圖像天空區域的處理能力較差,處理后的圖像容易產生過曝性,背景信息嚴重丟失;基于深度學習[10]的方法可以很好地進行圖像的區域分割和景深估計,但模型的訓練需要依賴于大的標準數據集,在實際環境中通常難以獲得此類數據集,導致基于標準數據集訓練的方法只能通過模擬數據實現,實用性差.基于CycleGAN的風格轉移方法解決了數據集依賴問題[11],但其無監督訓練方法的結果使得去霧效果不理想.目前,還缺乏一種不依賴于標準數據集且具有理想去霧效果的算法.本文的研究是基于CycleGAN和大氣物理散射模型理論,因此后文主要介紹基于大氣散射模型的主流去霧算法和基于CycleGAN 網絡的風格轉移去霧算法的研究現狀.
基于大氣散射模型的去霧方法通過建立大氣散射模型,研究模糊圖像的物理機制,可以得到懸浮顆粒對大氣光的散射效應及其對圖像的影響,從而得出更加真實的無霧圖像.該模型主要受2 個參數(大氣光值和大氣透射率)影響,大氣透射率與景深成正比,因此,基于大氣散射模型的去霧算法主要通過各種方法估計景深和大氣成分參數.估計參數的方法有3 種:三維建模方法、先驗理論方法和深度學習方法.三維建模方法可以直接讀取三維模型參數,但是其實用性并不高,本文主要介紹后兩種方法.
1)基于先驗理論的去霧方法
Fattal[12]提出了采用獨立元素分析估計恒定矢量的反反射率,并假設透射率與局部物體表面的色度不相關,推導出新的透射率圖.Ancuti 等[13]提出了一種通過分析原始圖像和半逆圖的色調差異來估計霧霾密度的方法.Tarel 等[14]假設大氣損失函數在一定的區域內近似于一個最大值,并使用改進的中值濾波來估計透射率.He 等[15]提出了暗通道先驗理論,首先找出圖像的局部暗通道,通過大氣光值推導透射率,消除邊緣塊效應,最后恢復無霧圖像,暗通道先驗理論可以很好地處理非天空區域部分,但是無法消除圖像中的天空區域的濃霧.Meng 等[16]在文獻[15]的基礎上做了進一步工作,提出通過正則化方法解決圖像邊緣平滑的問題,進而提高了圖像的分辨率.Fattal[17]最近提出了一種基于馬爾科夫隨機場(GMRF)原理完善初步傳輸圖的方法,GMRF 含有平滑的高斯項,可以平滑圖像中的細節信息.Zhu 等[18]最近提出了一個顏色衰減先驗模型(CAP)的框架,該方法認為無霧圖像中的飽和度和亮度之差通常接近于零,且假設場景的深度為飽和度和亮度的線性組合.與其他算法不同,該算法的先驗理論是全局性的,從而不必估計大氣光值和傳輸圖.為了消除粗略的透射率在景深中突然變化區域的光暈問題,He 等[19]提出了引導濾波算法來提高透射率的優化效率.Gibson 等[20]提出了一種基于中值濾波的去霧方法,有效地避免了圖像方法中容易產生偽影的缺點.Berman等[21]提出一種根據圖像的RGB 值分析有霧圖像特征的方法,該方法認為有霧圖像中的RGB 值通常分布為RGB 空間中的一條線,線的兩端分別是像素的原始輻射值和大氣光值.因此,可以通過這個屬性來估計每個像素的模型參數,而干凈圖像的RGB 值通常以簇的形式分布在RGB 空間中.
一般來說,基于先驗理論的去霧方法主要手段是尋求大氣物理散射模型的參數,這種方法簡單有效,但是并不能應用所有場景[22].比如,在實際應用中,暗通道先驗算法在處理圖像中的天空區域或者濃霧區域時會出現嚴重的過曝現象,處理后的圖像色彩嚴重失真.本文利用先驗理論知識,將霧的濃度轉化為損失函數來約束CycleGAN 網絡的訓練,通過CycleGAN 網絡完成圖像的去霧過程,可以有效利用先驗理論的優勢,避免了基于先驗的方法泛化能力不強等問題.
2)基于深度學習的去霧方法
近年來,研究人員將深度學習方法引入圖像去霧領域,通過CNN 網絡對輸入圖像進行特征提取和分析,估計每個圖像的透射率,然后利用大氣散射模型進行圖像去噪.Cai 等的DehazeNet[23]通過將模糊圖像輸入到網絡中,得到透射率矩陣,然后將其帶入大氣散射模型中,得到無霧圖像.Ren 等[24]提出了一種多尺度神經網絡去噪霧方法,用粗尺度估計場景深度,然后使用精細尺度網絡細化網格.Li 等的AOD-Net[25]對大氣散射模型進行了變形,用新的參數表示透射率和大氣成分,用簡化的U-NET 網絡直接將模糊的圖像轉化為無霧圖像[26–28].
基于深度學習的去霧算法可以很好地處理場景邊界的景深變化,準確地估計景深,所以去霧效果較好.然而,網絡的訓練需要依靠成熟的大規模標準數據集,在現實中建立數據集時,在同一場景中得到的有霧霾或無霧霾的圖像除了具有霧霾特征外,還受到光照和天氣變化的影響,很難做到單一因素的差異,所以很難建立標準數據集.因此,現有的方法通常使用仿真數據進行網絡訓練.雖然這種訓練方法在測試集上取得了很好的效果,但當處理數據集風格變化較大的圖像時,生成的圖像的真實性和可信度并不是很可靠,視覺效果往往不理想.
近年來,生成對抗性網絡(GAN)[29,30]的提出為圖像去噪的研究提供了一種新的思想,即GAN 網絡可以實現不同小數據集之間的數據轉換.Zhu 等[31]在2017年提出的CycleGAN 甚至可以通過未配對的訓練數據實現圖像風格轉換.
CycleGAN 由2 個鏡像對稱的GAN 網絡組成,并形成環網.兩個GAN 共享兩個生成器,分別設一個判別器,總共有兩個判別器和兩個生成器.CycleGAN 可以將一種類型的圖像轉換成另一種類型的圖像,并且由于它自身的環形結構,訓練時兩種類型的圖像可能不存在一一對應關系.訓練數據集不同于傳統的標準數據集,無需對應即可完成訓練,解決了因數據集過少而無法進行網絡訓練的問題.但是,由于網絡自身約束相對較弱,變換后的圖像可能存在一些異常,具有較大的隨機性,效果不是特別理想.
在此基礎上,2018年Engin 等[32]的Cycle-Dehaze網絡在CycleGAN的基礎上增加了拉普拉斯變換,利用拉普拉斯變換放大圖像,輸出圖像后得到干凈圖像.Cycle-Dehaze的循環感知損失是利用VGG16[33]對輸入圖像和重建圖像進行高維特征變換,然后計算高維向量的方差,得到另一種循環損失函數.但只是在周期一致性損失上略有加強的約束,雖然做了一些改進,仍存在轉換結果出現奇怪現象的問題,去霧效果仍不理想[34–37].
深度學習方法可以很好地解決圖像分割和場景深度估計的問題,但需要依靠大型標準數據集;而CycleGAN框架的深度學習方法,雖然擺脫了對數據集的依賴,但它與監督法相比,無監督訓練的去霧效果更差.因此,本文主要研究如何對CycleGAN 網絡進行進行優化,使其得到性能更好的去霧模型.基于明暗通道的循環GAN 網絡總體框架如圖1所示.

圖1 明暗通道的循環GAN 網絡總體框架圖
本文提出的BDCCN 網絡是在CycleGAN 網絡的基礎上,結合了明暗通道的損失評估機制,擴展并增強了網絡的去霧功能.并且為了克服先驗方法的缺陷,本文采用了預先訓練好的FC-DenseNet 語義分割模型[37]對輸入的模糊圖像進行分割,將圖像中的天空部分和濃霧部分分離開,并進行單獨處理.此外,我們還在生成器損失中加入了明暗通道損失,使模型在訓練過程中更容易向正確的方向收斂.為了使模型更好地保留圖像的細節信息,本文參考了EnhanceNet,將改進后的周期損失函數添加到網絡中.本文算法流程如圖2.

圖2 本文算法流程圖
如圖2所示,本文提出的BDCCN 包含2 個完全相同的生成器(生成器A2B,生成器B2A),2 個相同判別器(判別器A、判別器B).與傳統的生成對抗網絡中的損失函數不同,本文不僅創新性地在生成器中添加明暗通道損失,還在周期一致性損失中增加了增強型循環感知損失,可以使網絡在完成去霧任務的同時,保留更多的圖像細節信息.明暗通道損失則在一定程度上定義了圖像中的霧濃度,并且,為了防止因明暗損失函數造成的圖像過暗的現象,本文提出的周期一致性損失和循環感知損失需要一起工作.前者起了主導作用,因此其權重也應大于后者.除此之外,BDCCN 中生成器B2A的作用是生成模糊圖像,所以本文只在生成器A2B 中添加了明暗通道損失,而生成器B2A 中依舊使用CycleGAN 損失函數.
He 等[15]的暗通道先驗理論(dark channel prior,DCP)將原來由3 個通道(RGB)的圖像轉換為只有一個通道的暗通道圖像,轉換過程如式(1)所示.Jdark(x)是暗通道圖像,Jc(x)為背景圖像,c表示像素點,用函數表示的過程是將原圖像中每個像素點的3 個通道的像素值進行比較,得到最小值,形成單通道暗圖像.其公式如式(1).

根據觀察,沒有霧霾的暗圖像幾乎是全黑的,暗通道值為0;在圖像中的天空區域或霧霾區域,暗圖像會比較亮,霧霾濃度越大,暗圖像的亮度越大,其通道值為1,本文稱為明通道.所以明暗通道理論(bright and dark channel prior,BDCP)可以在一定程度上描述圖像霧霾的密度,因此根據BDCP 理論,本文將圖像轉換為明暗通道圖像,然后歸一化得到BDCP 損失.以 λ進行歸一化處理.因為像素的范圍是0–255,所以在訓練過程中 λ被取為255.
根據BDCP 理論,霧霾濃度與BDCP 損失呈正相關,因此BDCP 損失可作為評價圖像去霧效果的指標.然而,由于DCP 理論的一個缺陷,即在圖像的天空區域或白色區域,DCP 理論將失去有效性.為了克服這個缺點,在計算BDCP 損失之前,本文先通過預先訓練好的FC-DenseNet 語義分割模型識別出天空部分,然后用[200,200,200]作為閾值來分離圖像中的白色區域(根據觀察,一般模糊區域不超過[200,200,200],只有當霧的濃度極度密集或原背景接近白色時才會超過這個閾值).式(2)表示BDCP 損失,首先分別計算輸入的模糊圖像的暗通道圖和亮通道圖平均像素值,然后除

受Durugkar 擴展的GANS 多判別器結構的啟發,在生成器損失后增加了明暗通道損失,可以提高模型訓練的效果.損失函數改進為式(3):

其中,L(G,F)為原CycleGAN的生成器損失,LBDCP(G)為去霧圖像的明暗通道損失,并且本文為了防止明暗通道損失值過大,導致圖像整體顏色變暗,加入權重系數 λ1.在實際訓練中,λ1取為0.1.由于明暗通道損失更適合約束網絡的訓練方向,而我們只關注去霧效率,所以明暗通道損失只加到去霧方向的生成器損失上,因此判別器部分仍是原來的損失函數.
周期一致性損失是通過計算原始圖像和恢復后的干凈圖像之間的L1 范數來定義的,在CycleGAN 網絡中通常使用周期一致性損失函數以保持映射的唯一性.但是,周期一致性損失函數通常只考慮了輸入圖像與輸出圖像之間的映射關系,無法做到清晰地描述圖像細節信息,使其恢復后的無霧圖像清晰度低.
針對這種現象,Cycle-Dehaze 網絡提出循環感知損失約束周期一致性損失,循環感知損失是利用VGG16提取的圖像高維和低維特征向量而進行的MSE 計算,然后描述輸入圖像與恢復后的無霧圖像在高維空間的差異.然而,循環感知損失在約束周期一致性損失的同時也約束了自己,在實驗中當網絡進行訓練時,生成的圖像與原始圖像相差甚遠.因此,本文提出增強型的循環感知損失,通過將中間生成的圖像加入到損失函數計算中來緩解這一現象.本文提出的增強循環感知損失使用方差的計算方法來描述輸入圖像和重建圖像之間的區別,同時也限制了生成的圖像和輸入的圖像在高維空間的差距,使輸出后的無霧圖像更加清晰.如果沒有這種限制,在BDCP 損失函數的作用下,會造成去霧過度的現象發生,影響圖像的正常景深.具體公式為如式(4)所示.

其中,?代表VGG16 提取的第2 層和第5 層外高維特征向量,在這兩組中,x∈X,y∈Y,x,y分別代表輸入的有霧圖和無霧圖,生成器G代表X→Y,生成器F代表Y→X.首先計算輸入圖像x、y的高維向量? (x)、? (y),然后計算對應生成圖像G(x)、G(y)的高維向量? (G(x))、?(F(y)),再計算高維向量之間的L1 范數.得出? (G(x))、?(F(y))和重構圖像F(G(x))、G(F(y))的高維向量?(F(G(x)),以及計算? (G(x))、? (F(y)) 與重構圖像F(G(x))、G(F(y))之間高維向量? (F(G(x))、? (G(F(y))的L1 范數.最后,我們進行方差計算,得到增強的感知損失.
與CycleGAN 相比,BDCCN的損失函數只增加了增強的循環感知損失和BDCP 損失,其余的保持不變.BDCCN的周期一致性損失如式(5)所示,在CycleGAN(G,F,Dx,Dy)的基礎上,增加增強循環感知損失Lperceptual,并設權重系數 λ2,平衡增強循環感知損失和周期一致性損失.由于增強循環感知損失與周期一致性損失相比非常大,λ2在訓練中被設置為0.5×10?7.BDCCN 對CycleGAN和Cycle-Dehaze 網絡進行優化,通過式(6)得到生成器的生成結果G*、F*如式(6)所示.

其中,G*是本文重點關注的去霧后圖像,Dx,Dy為判別器,并在第4 節用于和其他算法進行測試和比較.
在本節中,我們將對實驗方法和結果進行介紹和分析.首先,本文的實驗是在RESIDE 數據集(室外數據集(OTS)和室內數據集(ITS))進行訓練和測試的,并在真實數據上進行了實驗,并將結果與其他算法進行了比較.
RESIDE 訓練集包含1 399 張清晰圖像和13 990張由相應清晰圖像生成的有霧圖像.全球大氣光的范圍從0.8 到1.0,散射參數從0.04 變為0.2.為了與當前的最新方法進行比較,本文采用了PSNR和SSIM 指標,并在綜合目標測試集(SOTS)中進行了全面的比較測試,該測試集包含500 張室內圖像和500 張室外圖像.最后在真實數據集上,本文的網絡依舊表現出良好的去霧能力,本文方法在圖像細節和顏色保真度方面表現良好,其結果如圖3所示.

圖3 圖像去霧的細節對比圖
本部分在RESIDE 室外數據集(OTS)上進行訓練和測試,并將實驗結果與當前先進的算法進行對比,實驗結果如圖4所示.我們可以看到DCP 算法在處理圖像的過程中可以很好的去除圖像的朦朧感,具有很強的去霧能力,但是DCP 算法無法處理濃霧或者圖像中亮度比較大的地方,會使圖像出現明顯的失真.AODNet 算法無法有效的去除圖像的霧霾部分,去霧效果不是很明顯,并且傾向于輸出低亮度圖像.相比之下,PyTorch算法可以恢復某些相對于背景真實情況而言亮度過高的圖像,但是對于濃霧圖像效果依舊不是很理想.FFA算法輸出的結果中大部分圖像只出現局部去霧,無法完全的去除圖像霧霾效果,且出現圖像色彩偏暗現象.相反,本文算法在去霧同時能很大程度的保留圖像本身的紋理和色彩,去霧效果接近背景圖像.

圖4 室外合成圖像去霧效果對比圖
本部分在RESIDE 室外數據集(ITS)上進行訓練和測試,并將實驗結果與當前先進的算法進行對比,實驗結果如圖5所示.各算法在室內數據集中表現良好,但是DCP 算法依舊出現局部亮度過高問題,AOD-Net和PyTorch 算法出現去霧不徹底現象.FFA-Net 在室內數據集中表現優秀,復原效果接近真實圖像.本文算法在完成去霧任務的同時,仍舊保留了圖像細節特征.

圖5 室內合成圖像去霧效果對比圖
本部分選取部分真實圖像,將本文算法與各算法對比.實驗結果如圖6所示,DCP 算法依舊有良好的去霧能力,但是不可避免的出現局部區域亮度過高情況.AOD-Net 很好的完成了去霧任務,也沒有出現圖像色彩失真狀況.FFA-Net 去霧能力一直不穩定,與室外合成數據集表現一樣,始終出現圖像部分去霧現象.本文算法一如既往表現良好,在完成去霧任務的同時,最大程度的保留了圖像的紋理細節.

圖6 真實圖像去霧效果對比圖
不同方法的PSNR和SSIM 對比結果如表1所示.

表1 不同方法的PSNR和SSIM 對比結果
為了進一步展示特征融合注意網絡體系結構的優越性,本文通過考慮提出的明暗通道的循環GAN 網絡的不同模塊來進行消融研究.本文通過增減了部分殘差塊以及卷積層來對比一下最終的測試集結果.增減不同模塊的室內圖像測試集比較結果如表2.
如表2所示,在本文的框架中,PSNR 達到31.76 dB,SSIM為0.942 6.由此可知,本文所考慮的每個因素在網絡性能中都起著重要作用,尤其是明暗通道的循環GAN 網絡.我們還可以清楚地看到,在增減部分結構的時候,輸出的結果往往不是很令人滿意,維持本文的現有模塊使網絡訓練穩定,同時也能提高了網絡性能明暗通道的結合也使我們的結果達到了很高的水平.

表2 增減不同模塊的室內圖像測試集比較
本文提出了BDCCN 單幅圖像去霧網絡,可以直接將模糊圖像轉換為干凈圖像,而不需要大氣散射模式參數.而且,我們的模型在訓練過程中也不需要配對訓練.為了獲得更真實、更清晰的去無陰影圖像,我們提出了基于明暗通道理論的損失函數,并將其添加到生成器損失函數上,同時增加了改進的循環感知損失對循環一致損失的影響.實驗結果表明,本文的方法相對于CycleGAN 及其變體在SSIM和PSNR 上有很大的提高,相對于其他最先進的算法在室外實像上也有更好的效果.