王高峰,張 賽,張亞南,邵 倩,高 濤
1(貴州宇鵬科技有限公司,貴陽 550014)
2(長安大學(xué) 信息工程學(xué)院,西安 710072)
霧霾天氣是一種常見的天氣現(xiàn)象,霧霾天氣中包含的粒子使得大氣光散射,從而造成拍攝的圖像質(zhì)量嚴重降低.在伴隨有沙塵的霧霾天氣情況下,甚至?xí)乐馗蓴_人們的視覺問題[1].因此,對于去霧圖像處理對圖像研究領(lǐng)域以及社會發(fā)展有著重要的積極作用,并且許多優(yōu)秀的去霧算法已經(jīng)孕育而生.
目前對于圖像的處理方法主要分為兩類:圖像增強和圖像復(fù)原[2].圖像增強算法不考慮圖像降質(zhì)的本質(zhì)原由,僅從增加圖像對比度和凸顯有用細節(jié)入手,雖然在一定程度上有去霧的效果,但丟失了很多圖像細節(jié),對于霧天車輛檢測圖像,其本身由于光照,雜質(zhì)影響,圖像細節(jié)不夠明顯,車輛特征不夠突出,因此不采用圖像增強算法.圖像復(fù)原算法基于物理模型,是當(dāng)前去霧算法研究被廣為使用的一種方法.2011年,He 等[3]提出了一種暗原色先驗的去霧理論假設(shè),利用引導(dǎo)濾波細化透射率恢復(fù)圖像,在物體對象亮度接近天空光亮度時候,這種基于統(tǒng)計規(guī)律得出的先驗去霧方法將不能夠取得較好的去霧效果;Zhu 等[4]提出一種顏色衰減先驗去霧算法,通過建立有霧圖像的線性模型并利用監(jiān)督學(xué)習(xí)方法來恢復(fù)出場景深度信息,該方法可以復(fù)原出較多的細節(jié)信息,但仍存在一定程度殘霧;Wang等[5]提出一種基于線性傳輸?shù)娜レF算法,該算法運行速度較快,但存在去霧越徹底,復(fù)原圖像整體越暗的現(xiàn)象.近年來,深度學(xué)習(xí)憑借其強大的學(xué)習(xí)能力,在圖像去霧領(lǐng)域已經(jīng)取得了較好的效果,最常見的如Cai 等[6]提出的DehazeNet,該網(wǎng)絡(luò)是一種端到端的訓(xùn)練模型,通過網(wǎng)絡(luò)訓(xùn)練對透射率值進行學(xué)習(xí),從而實現(xiàn)圖像去霧,但是該網(wǎng)絡(luò)只估計出透射率圖部分并沒有得出大氣光值部分.受到DehazeNet 以及Zhang 等[7]的深度學(xué)習(xí)去霧啟發(fā),本文提出一種改進的對抗性神經(jīng)網(wǎng)絡(luò)來估計大氣照度和透射率,提出了解決這個問題的方案.在這種方法中,使用獨立的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)來建立大氣散射模型中的未知變量.
通常情況下,在計算機視覺中,式(1)被廣泛認為是霧圖像形成模型.
其中,x代表像素點,I(x)是待去霧圖像,J(x)是需要恢復(fù)的無霧圖像,A是全球大氣光成分,t(x)是透射率.因此,無霧圖像可以通過結(jié)合全球大氣光照估計值和透射率來獲得,從上式顯然可得,如果我們不加任何限制的話是有無窮多個解的,因此,合適的透射率是去霧問題的關(guān)鍵.許多成功的去霧理論算法以式(1)作為研究基礎(chǔ)來估計圖像的透射率值,但是其中傳統(tǒng)方法占據(jù)大多數(shù).近年來,CNN 在圖像處理領(lǐng)域方面取得重大進展,已經(jīng)實現(xiàn)了很多優(yōu)秀的算法成果.2017年,Li 等[8]提出大氣散射模型可以通過具有單變量和偏差的非線性變化所描述,并將其用式(1)變化得式(2)、式(3).
式(2)、式(3)中,x代表圖像像素點,I(x)是待去霧圖像,J(x)是需要恢復(fù)的無霧圖像,A是全球大氣光成分,t(x)是透射率,參數(shù)k最終會被消掉.符合深度學(xué)習(xí)工作原理,并且顯示了卷積方法的有效性,因此,本文使用深度學(xué)習(xí)方法進行圖像去霧.
Cai 等[6]提出的DehazeNet是一種端到端的深度學(xué)習(xí)去霧網(wǎng)絡(luò).該網(wǎng)絡(luò)將有霧圖像作為輸入,并輸出對應(yīng)的透射率圖,隨后通過大氣散射模型恢復(fù)無霧圖像.DehazeNet 采用基于卷積神經(jīng)網(wǎng)絡(luò)的深層架構(gòu),其網(wǎng)絡(luò)層專門設(shè)計用于體現(xiàn)圖像去霧中已建立的先驗假設(shè).其結(jié)構(gòu)圖如圖1所示.
圖1 DehazeNet 網(wǎng)絡(luò)架構(gòu)圖
圖1中,與傳統(tǒng)的卷積層不同的是,DehazeNet 采取了Conv+Maxout[9]結(jié)構(gòu),該網(wǎng)絡(luò)層根據(jù)不同的假設(shè)與先驗設(shè)計不同的濾波器.對于16 個卷積濾波器時,其中每4 個是上述一種先驗特征濾波器,之后,通過Maxout unint 激活函數(shù),每4 個輸入一張圖,當(dāng)輸入圖像為3×16×16,輸出為16×12×12.上一層的輸出作為多尺度平行卷積操作的輸入,由于多尺度特征被證明有利于去霧并在inception[10]模型中使用,即同一張圖使用不同尺度的卷積核進行卷積操作.DehazeNet 中分別使用16 個3×3、16 個5×5 以及16 個7×7的卷積核,每一種尺度對應(yīng)輸出16 個特征圖,并且通過padding 操作使得輸出尺寸相同,輸出為48×10×10.隨后,局部極值部分中對多尺度輸出進行最大值池化操作,最大池化對局部數(shù)據(jù)敏感,另外根據(jù)透射率具有局部不變性,所以使用文中使用了7×7 局部最大值濾波替代最大池化,輸出為48×6×6.最后,因為ReLU[11]抑制了小于0的數(shù),只適用于圖像分類等方面,并不適合圖像復(fù)原.因為最后的透射率圖允許高于1 或者低于0,所以作者提出了一種新的雙邊線性整流函數(shù)BReLU,如圖2所示,該函數(shù)既保持了局部線性,有保持了雙邊的限制.線性回歸部分中,上層局部極值的輸出通過1 個4×4的卷積核,產(chǎn)生1×1的標量,并且使用BReLU 進行激活,最終,輸出的是一個標量,即輸入塊中心點的透射率值.
圖2 BReLU 激活函數(shù)
2.3.1 提出的深度學(xué)習(xí)去霧網(wǎng)絡(luò)
DehazeNet 算法很好的實現(xiàn)了去霧效果,但該方法只估計了去霧要求的透射率圖.為了解決徹底去霧的問題,本文設(shè)計了一種深度學(xué)習(xí)網(wǎng)絡(luò),在估計透射率部分之外,同時準確輸出大氣光值,最后通過圖像復(fù)原公式,恢復(fù)出無霧圖像.網(wǎng)絡(luò)架構(gòu)如圖3所示.
圖3 去霧網(wǎng)絡(luò)架構(gòu)
如圖3所示,網(wǎng)絡(luò)架構(gòu)可分為估計透射率部分和估計大氣光值部分.在Zhang 等[7]提出的一種端到端的去霧網(wǎng)絡(luò)中,作者在使用了卷積層池化層和上采樣層,取得了較好的效果,但由于使用卷積核較大,導(dǎo)致運行時間緩慢,這對我們進行圖像去霧造成阻礙.為了解決這一問題,本文在估計透射率部分用深度可分離(DS卷積)來取代原有常規(guī)卷積層.2018年,Sandler 等[12]提出了MobileNet v2 這一架構(gòu),該卷積層可分為深度卷積(depthwise convolution)和逐點卷積(pointwise convolution)兩部分,前者針對每個輸入通道采用不同的卷積核,即一個卷積核對應(yīng)一個輸入通道,后者采用1×1 卷積核的普通卷積操作,兩者結(jié)合,效果等同于普通卷積,但會大幅度的減少計算量和模型參數(shù),進而提升運算時間.
2.3.2 透射率圖估計
圖1左側(cè)部分中,是對透射率圖的估計.輸入有霧分別經(jīng)過DS 卷積和池化層,與傳統(tǒng)的卷積層+池化層相比,DS 卷積可分解為深度卷積(depthwise convolution)和逐點卷積(pointwise convolution),兩者結(jié)合,效果等同于常規(guī)卷積,但是參數(shù)數(shù)量和復(fù)雜度大大減少.為了使輸出結(jié)果非線性,我們使用ReLU 激活函數(shù).在最后一層卷積中,由于輸出的透射率圖是灰度圖,所以我們采取了一個1×1的卷積核,這樣可以將前面的深度為10的特征圖轉(zhuǎn)為深度為1.1×1 卷積核不僅可以保留前層的平面架構(gòu)信息,也可以起到將低深度的作用.考慮到透射率的值在0 到1 之間,所以我們在這一層的激活函數(shù)使用Sigmoid 以保證輸出的值在該范圍內(nèi).池化層我們選取的是最大池化層,最大池化層方法可以很好地維持特征圖的平移和旋轉(zhuǎn)不變性,然而這樣做會縮小特征圖,但我們所需的透射率圖和輸入圖大小相同,所以在池化層后我們添加了上采樣層來保證特征圖大小不變.
2.3.3 大氣光值估計
下層部分中,即估計大氣光值部分,考慮到該值是和整幅圖像相關(guān),所以我們應(yīng)采取較大的卷積核,這樣感受野較大,有利于這部分的工作,同時綜合計算量,我們采取膨脹卷積的方法,這樣做的好處是在不丟失太多信息的情況下,加大了感受野,讓卷積層輸出包含較大范圍的圖片特征信息.該部分特征提取相對簡單,所以我們設(shè)置了兩層卷積層.同時,最大池化層也是我們的選擇,這樣可以在保持不變形的基礎(chǔ)上起到降維的作用.最后,我們采用了全連接層,依次降到256、10和1,最后將大氣光值輸出.
式(1)可變換為式(4):
式中,x代表圖像像素點,I(x)是待去霧圖像,J(x)是需要恢復(fù)的無霧圖像,A是全球大氣光成分,t(x)是透射率,t0作為閾值通常設(shè)置為0.1,其目的是為了避免當(dāng)t(x)很小的時候,導(dǎo)致J(x)值很大,從而造成圖片的某些地方會受到強烈的噪聲影響.隨后,通過上述神經(jīng)網(wǎng)絡(luò)獲得透射率和大氣光值之后,根據(jù)式(2),我們可以得到恢復(fù)的無霧圖像.
本文使用RESIDE 中的公開數(shù)據(jù)集ITS 以及搜集霧天圖像對網(wǎng)絡(luò)進行訓(xùn)練,在深度學(xué)習(xí)網(wǎng)絡(luò)框架PyTorch 進行實現(xiàn),該框架是在深度學(xué)習(xí)領(lǐng)域具有熱門的流行程度.在本文訓(xùn)練方法中,使用Adam 優(yōu)化損失函數(shù),調(diào)整Batch Size 值為16,設(shè)定初始學(xué)習(xí)率的值為0.01,當(dāng)訓(xùn)練為20 000 步后,設(shè)定學(xué)習(xí)率為0.0001,并且當(dāng)損失函數(shù)不再下降停止訓(xùn)練.其中,對比算法有DCP 算法、Retinex 算法、CAP 算法以及深度學(xué)習(xí)AOD-Net和DehazeNet 算法.
為了對網(wǎng)絡(luò)架構(gòu)進行定量分析,對數(shù)據(jù)集進行人工加霧處理.將ITS 數(shù)據(jù)集進行人工加霧處理,并且搜集霧天圖像,最終包含8410 張訓(xùn)練圖像數(shù)據(jù)集,部分圖片如圖4展示.由于部分數(shù)據(jù)集原始圖像中本身包含有一定量的霧程度,會對試驗造成一定的影響,所以本文對部分數(shù)據(jù)集進行定性評價.
圖4 數(shù)據(jù)集構(gòu)建
該試驗部分我們使用在圖像去霧中被廣泛使用的以結(jié)構(gòu)相似性SSIM (Structural SIMilarity)及峰值信噪比PSNR (Peak Signal-to-Noise Ratio)兩個指標來衡量我們試驗結(jié)果的標準,實驗結(jié)果如表1所示.
表1 數(shù)據(jù)集圖像去霧結(jié)果指標
圖5為數(shù)據(jù)集去霧結(jié)果對比圖.其中,DCP、CAP以及AODNet 兩者去霧算法自身設(shè)計導(dǎo)致不能夠?qū)⒃紵o霧圖像和有霧圖像的映射關(guān)系很好的表達出來,從而導(dǎo)致去霧效果不夠理想.而Retinex 去霧效果造成圖像整體偏向灰色,DehazeNet 結(jié)構(gòu)中也同樣采用一定的手工特征,造成圖像去霧不整潔.本文提出的深度學(xué)習(xí)算法網(wǎng)絡(luò),去霧效果好,細節(jié)恢復(fù)更多,具有更強的魯棒性.
該部分實驗我們將本文提出的方法與上述幾種方法仍在相同的條件下進行對比實驗.結(jié)果如圖6所示.其中DCP 算法去霧后圖像出現(xiàn)光暈,其原因是因為大氣模型估計值偏差較大.CAP 算法經(jīng)去霧后,圖像丟失了部分原始顏色,效果較差.同樣,AOD-Net 算法由于本身結(jié)構(gòu)的問題,導(dǎo)致去霧效果較差.Retinex 去霧后圖像呈灰色.DehazeNet 圖像發(fā)黑,丟失了原有圖像的信息.而本文提出的深度學(xué)習(xí)網(wǎng)絡(luò)去霧效果較好,不僅恢復(fù)了更多原始圖像信息,而且具有較強的魯棒性.
本文受到現(xiàn)有深度學(xué)習(xí)去霧方法的理論指導(dǎo),在原有的網(wǎng)絡(luò)上進行改進,提出一種改進后的端到端的深度學(xué)習(xí)去霧網(wǎng)絡(luò).該網(wǎng)絡(luò)可分為兩部分,即估計透射率圖部分和大氣光值部分.通過與當(dāng)前流行的去霧算法相比,包括傳統(tǒng)算法與深度學(xué)習(xí)算法,實驗表明,本文提出的新的深度學(xué)習(xí)去霧網(wǎng)絡(luò)能保留更多的原始圖像信息,去霧效果干凈,具有較強的魯棒性.但在部分霧度較濃的情況下,去霧效果不太理想,結(jié)合圖像數(shù)據(jù)集的制作以及原始有霧圖像與人工加霧圖像的占比不同,相信經(jīng)過對數(shù)據(jù)集的調(diào)節(jié)和訓(xùn)練方式的改善,會對本文算法去霧效果提供幫助.
圖5 去霧結(jié)果對比圖
圖6 去霧結(jié)果對比圖