楊傳棟, 陳 棟, 劉 楨,張曉龍,王昱翔
(陸軍炮兵防空兵學院 彈藥技術教研室, 合肥 230031)
受霧霾天氣的影響,無人機、圖像制導彈藥等偵察打擊裝備獲取景物圖像存在色彩衰減、對比度低、信息可辨識度低等現象,這些低質圖像嚴重影響偵察、目標識別及打擊任務的完成,因此圖像去霧十分重要,也是機器視覺領域熱門的研究方向。目前圖像去霧方法主要包括基于圖像增強的方法[1]和基于物理模型復原[2]的方法。近年來深度學習憑借強大的數據學習能力,在圖像去霧上取得了較好的效果[6]。
但由于室外場景范圍廣、景深大同時具有不同霧氣濃度,會造成傳播圖估計不準確、細節丟失、去霧效果較差。因此本文基于深度學習的算法,首先利用一種深度估計和天空區域分割的方法合成并修正不同霧級的室外數據集,然后增加跳層連接和感知損失函數提高霧圖生成網絡學習傳播圖的能力,最后利用判別網絡對結果進行精修。
在計算機視覺領域,大氣散射模型被廣泛應用于去霧技術研究,可用表示為[2]:
I(x)=J(x)t(x)+A(x)(1-t(x))
(1)
式(1)中,I是觀測到的有霧圖像;J是真實的復原圖像;A為大氣光值,表明環境光的強度;t為光路傳播圖;x是像素位置。當大氣光值均勻時,光路傳播圖可表示為t(x)=e-βd(x),其中β是大氣散射系數,d表示景深。
由式(1)可以看到,影響去霧效果的兩個重要因素為大氣傳播圖和大氣光值估計的準確性。通過卷積神經網絡(CNN)從訓練數據集中有效的學習大氣傳播圖和大氣光值[3],進而對帶霧圖像I進行復原,即:
(2)
GAN在計算機視覺領域得到廣泛應用[8],能夠產生高質量圖像并保持更好的細節。其包括生成網絡和判別網絡兩部分。生成網絡經過博弈能夠學習訓練圖像的分布進而生成更為真實的圖像,判別網絡用來區分真實數據分布和生成數據分布。通常使用CNN作為二者的基本結構,通過卷積操作(Conv)、池化操作(Pooling)、非線性激活函數映射(ReLU)和批標準化(BN)等一系列操作的層層堆疊構成特征提取網絡,具備更優越的特征表達和學習能力[9]。在去霧任務中,可轉化為最大最小優化問題,即:
EI~Pdata[log(1-D(Gd(I)))]+Et,J~Pdata(t,J)[logD(t,J)]
(3)
式(3)中,Gt(I)、Gd(I)表示網絡生成的傳播圖和去霧圖;t、J是對應的真值;Gt、Gd為對應的生成網絡。
基于深度學習的去霧方法分為訓練過程和預測過程,其框圖如圖1所示。
訓練過程中,用于估計大氣光值和大氣傳播圖的CNN首先在構建的合成數據集上進行有監督學習,更新CNN模型參數,隨后利用式(2)得到粗估計去霧圖,最后基于GAN的聯合判別器,利用估計的去霧圖和訓練集中對應的大氣傳播圖對CNN模型參數進行精修,經過多次迭代訓練獲取模型參數。預測過程中將有霧圖像輸入到訓練好的CNN模型中,分別計算其大氣光值和大氣傳播圖,通過式(2)輸出去霧圖像。整個過程實現了端到端的學習,給定特定輸入,即可得到對應輸出。

圖1 基于深度學習的去霧方法流程框圖
DenseNet[7]以密集塊(Dense Block,DB)和轉換層(Translation Layer)作為網絡的基本組成單元,選擇該結構作為基礎生成網絡能夠更準確、更有效地評估不同霧級霧圖的大氣傳播圖和大氣光值,其工作原理框圖如圖2所示。

圖2 DenseNet基礎結構框圖
DB作為網絡的基本組成單元,將每層網絡以密集連接的方式連接到后續所有層中。x0是網絡輸入,Hl表示BN-ReLU-Conv(1*1)-BN-ReLU-Conv(3*3)復合操作,xl表示第l層輸出,有:
xl=Hl([x0,x1,…,xl-1])
(4)
[x0,x1,…,xl-1]表示將第0層到第l-1層輸出的各通道特征圖進行合并,能夠最大化特征信息的傳遞,保證了更好的收斂性,同時將DB內3×3卷積前增加1×1卷積降維,具有更小的參數量。下采樣轉換層(Transiton Down,TD)在DB之間增加1×1卷積和平均池化,即Conv(1×1)-Pooling(2×2),進一步減小通道數和尺度。
為了能夠恢復到原空間分辨率,設計上采樣部分,包括DB、采用上采樣卷積的轉換層(Transiton Up,TU)和跳層連接組成,生成網絡結構如圖3所示。
其中TU僅對上一個DB進行反卷積(1×1)-ReLU-BN-upsample操作,跳層連接引入下采樣轉換層中得到的特征圖,既能為各像素學習提供更豐富的上下文信息,同時能防止梯度彌散。最后通過tanh函數將數值限制在[0,1]之間,整個網絡具有更強的局部和全局特征表征能力。
判別網絡對1.2節中提出網絡生成的大氣傳播圖進行精修,結構如圖4所示。判別網絡對生成去霧圖像和訓練數據集中對應的深度圖進行判別,經過卷積、池化、非線性映射等操作,最后利用Sigmod激活函數將判別結果輸出,認為是真實圖像則為1,若判別為假則為0。

圖3 生成網絡結構

圖4 判別網絡結構
為了訓練提出的網絡,需要損失函數來衡量圖像去霧的效果。本文使用多任務損失函數,包含判別損失、圖像均方差損失和感知損失三部分。通常在GAN實際應用中將式(4)轉化為最小化判別損失LG,即:
LG=-log(D(Gt(I)))-log(D(Gd(I)))
(5)
同時使用均值平方差(MSE)LMSE度量輸入輸出的相似度,有:
其中N為總像素數。
僅使用MSE損失往往會模糊最終結果,丟失圖像細節。梯度特征能更好的保留邊界特征,同時,CNN結構淺層輸出能夠獲取圖像的紋理和輪廓特征,如圖5所示。

圖5 梯度和VGG淺層特征圖
因此通過引入了感知損失[6]Lp,生成網絡利用提取到的特征,能生成更加精細的目標圖像,此處感知損失由兩部分組成,即:
(6)
式(6)中,Lpg是水平和數值方向的梯度損失;Hx,Hy分別為計算圖像水平和豎直方向梯度;w,h表示輸出特征圖寬和高;Lpf表示特征損失;V1,V2是預訓練過的VGG16的conv1和conv2層進行卷積操作后的特征圖作為邊緣提取;λpg、λpf為權重常數。
為了平衡三者,判別損失增加了權重常數λG,三部分共同組成的損失函數L為:
L=λGLG+LMSE+Lp
(7)
相對于其他任務,霧圖與對應的無霧圖更難獲取,數據對深度學習的效果影響更為突出。室外場景景深更大,獲取深度信息尤其無窮遠處天空不夠準確,本文對此問題進行了改進。在RESIDES數據集[9]基礎上增加部分航拍圖像,首先利用深度估計模型[11]對2 200張室外圖片計算對應的深度信息d(x),隨后利用天空分割算法[12]識別天空區域進而修正d(x),通過設置β∈[0.6,1.8],A∈[0.7,1]利用式(1)生成合成數據集,如圖6所示,根據不同參數組合,每張原圖對應35張不同霧級的合成霧圖。可以看到通過修正訓練集的深度信息更加準確,邊緣尤其是天空區域得到改善。測試集從中隨機選擇20張作為合成數據測試集,并利用網絡航拍采集霧天圖像50張作為自然霧圖測試集。

圖6 生成及修正數據集
實驗環境為NVIDIA1070GPU,處理器為Intel(R) Core(TM) i5-8400CPU,內存16 GB,編程使用pytorch框架進行訓練和測試。網絡輸入尺寸為512×512,因此訓練集中圖像被隨機裁剪為固定尺寸。通過最小化式(7)的損失L,對生成網絡和判別網絡進行端到端的交替迭代訓練,二者批大小均設置為1,并采用Adam優化算法,學習率均設為2×10-3,β設為0.999,權重衰減設為0.000 05,進行500 000次迭代訓練達到0.002,達到了較好的結果。
為驗證本文算法對霧圖的去霧效果,本文選擇經典的基于圖像增強的Retinex算法[1]、基于復原的DCP算法[2]及基于深度學習的DehazeNet[3]、AODNet[4]、DCPDN[5]算法作為對比算法,分別在合成數據集和自然霧天圖像數據集上進行比較。部分圖像去霧效果如圖7、圖8所示。
圖7為大景深的合成霧圖去霧效果。Retinex算法對不同場景需要手動調節參數,在水面部分出現色彩扭曲;DCP算法由于對顏色信息過于依賴,容易造成顏色的過飽和,如天空、建筑物顏色失真;基于深度學習的AODnet、DCPDN等算法由于在訓練過程中使用了大量室內訓練集,造成處理強度不夠,仍然留有少量霧氣,整體偏暗。本文提出算法能夠較好地估計大景深霧圖的霧氣分布及程度,去霧后的遠處和近處建筑物、艦船邊緣特征和細節豐富,信息更為完整,同時整體色調更接近真實圖像,去霧效果更好。
圖8為對實際航拍濃霧場景圖像的去霧效果。Retinex算法整體色調過亮,導致前景處顏色失真;DCP對遠處建筑去霧效果較好,但仍存在色調過飽和的問題,樹木道路顏色失真;AOPNet、DehazeNet能在一定程度去除濃霧,但仍然有一定的霧氣殘留,并且對車輛和遠處建筑物細節有所丟失。本文提出算法去霧整體色調真實自然,對車輛和遠處建筑物的細節能有效保留,對遠處天空區域能明確區分,整體上效果優于其他算法。

圖7 不同算法對合成霧圖的去霧結果

圖8 不同算法對自然霧圖的去霧結果
為了從定量角度進行對比,選擇峰值信噪比(PSNR/dB)、結構相似度(SSIM) 作為有參考的評價指標,選擇平均梯度(Average gradient)、信息熵(Entropy)作為無參考評價指標,去霧效果評價指標均為取值越大,結果越好。在所有測試集圖像上進行測試并計算指標均值。同時基于本實驗環境對算法運行時間進行比較。結果如表1、表2所示。

表1 不同算法對合成霧圖去霧效果評價指標

表2 自然霧圖去霧效果評價指標及運行時間
從去霧效果指標看,本文算法在合成霧圖測試集上,PSNR和SSIM均為最高,表明去霧結果與真實圖像更接近;平均梯度和信息熵均有更高的值,表明算法結果邊緣信息得到更好的保留,對比度、清晰度及細節信息均優于其他方法。同時從算法速度看,在基于深度學習的同類方法中有較短的處理時間,并快于傳統的基于復原的DCP算法。綜上所述,本文算法能較快地對不同霧級圖像處理得到高質量、噪聲少的去霧圖像。
本文提出了一種基于深度學習的圖像去霧方法,利用一種深度估計和天空區域分割的方法合成并修正了不同霧級的室外數據集,利用跳層連接和增加感知損失函數,提高了霧圖生成網絡學習傳播圖的能力,通過判別網絡對參數進行更新。實驗結果表明,在不同霧級的合成霧圖和自然航拍霧圖上,本文提出算法能較快地得到更加自然清晰的去霧圖像,主客觀指標優于其他算法。為在惡劣環境中完成偵察打擊等軍事任務提供了一個可參考的圖像處理方案。