薛子豪,王忠美,伍宣衡,李 敏,龍永紅
(湖南工業(yè)大學 軌道交通學院,湖南 株洲 412007)
電子設(shè)備在室外采集圖像的過程中,經(jīng)常會遇到霧霾天氣,導(dǎo)致采集到的圖像存在顏色偏移、模糊和失真等問題,限制了目標識別、視頻監(jiān)控、自動駕駛等技術(shù)的發(fā)展。因此,研究圖像去霧技術(shù)具有重要的現(xiàn)實意義。
近年來,涌現(xiàn)出許多圖像去霧算法,大致可以分為基于圖像增強的去霧算法、基于大氣散射模型的去霧算法和基于深度學習的去霧算法。
基于圖像增強的去霧算法主要是從人眼視覺出發(fā),增強圖像的色彩、亮度和對比度,以改善圖像的整體效果[1]。當前典型的基于圖像增強的算法有直方圖均衡化[2]、Retinex 理論算法[3]、同態(tài)濾波[4]和小波變換[5]等。
基于大氣散射模型的去霧算法主要是研究霧霾圖像成像過程和去霧的本質(zhì),從霧霾圖中推導(dǎo)出對應(yīng)的無霧圖像,該類算法包括暗通道先驗算法及基于偏微分方程的算法。其中,He K. M.等[6]提出了暗通道先驗的去霧算法,即先依據(jù)大氣散射模型求出暗原色圖像后粗略估計透射率,再細化透射率,最后估計出大氣光值逆向復(fù)原無霧圖像。由于暗通道先驗算法無須借助額外的信息約束,所以后續(xù)大量研究人員[7-9]在此基礎(chǔ)上進行改進。
隨著卷積神經(jīng)網(wǎng)絡(luò)取得了較為明顯的進展,許多學者開始研究基于深度學習的去霧算法。如Cai B. C. 等[10]提出了端到端的網(wǎng)絡(luò)DehazeNet,它基于傳統(tǒng)的大氣散射模型,但是首次利用卷積神經(jīng)網(wǎng)絡(luò)估計透射率。Li B. Y.等[11]設(shè)計的AOD-Net(all-in-one network)通過一個輕量級的神經(jīng)網(wǎng)絡(luò)聯(lián)合估算透光率和大氣光。Chen D. D.等[12]在網(wǎng)絡(luò)中采用了平滑擴張技術(shù),消除了由膨脹卷積引起的網(wǎng)格偽影,無需先驗,建立了GCANet(gated context aggregation network) 模 型 去 霧。I. J. Goodfellow等[13]提出的生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)被用于圖像生成中,取得了很大的突破,在GAN 的基礎(chǔ)上涌現(xiàn)了一些端到端的去霧算法[14-15]。但這些去霧算法存在去霧不完全、去霧圖像和真實圖像色差較大,以及存在偽影等問題。
基于上述研究,本文提出一種基于條件生成對抗網(wǎng)絡(luò)(conditional GAN,CGAN)的去霧算法。首先,設(shè)計了新的生成器結(jié)構(gòu),主要采用含對稱層跳躍連接的深度卷積網(wǎng)絡(luò),實現(xiàn)了輸入輸出圖像特征的共享,同時保留了圖像的底層紋理信息和高級語義信息,并用卷積層和反卷積層代替池化層,實現(xiàn)降采樣和上采樣操作;其次,引入了L1 損失函數(shù)和感知損失函數(shù)對網(wǎng)絡(luò)加以約束,減少了生成圖像的色差,使生成圖像更加接近真實圖像。
條件生成對抗網(wǎng)絡(luò)(CGAN)[16]是GAN 的擴展,是在原始GAN 上添加條件變量來生成想要的特定數(shù)據(jù),使得網(wǎng)絡(luò)能夠更好地被應(yīng)用于跨模態(tài)問題。所添加的條件變量可以是任何信息,比如圖像、類別信息,以及其他模態(tài)的數(shù)據(jù)。
利用CGAN 進行去霧處理時,先將霧霾圖像輸入生成器,生成器處理后輸出去霧圖像,之后將霧霾圖像與去霧圖像一起輸入判別器,得到一組判斷結(jié)果。判別結(jié)果中只包含0~1 的值,表示判別器認為去霧圖像是真實的無霧圖像的概率。然后將有霧圖像與真實的無霧圖像一起輸入判別器,輸出另一組結(jié)果。將前后兩組結(jié)果進行比較,用它們的差優(yōu)化生成器與判別器的參數(shù),幫助網(wǎng)絡(luò)訓(xùn)練。
本文在CGAN 網(wǎng)絡(luò)的基礎(chǔ)上進行了改進,引入了含對稱層跳躍連接結(jié)構(gòu)的生成器,并且設(shè)計了新的損失函數(shù),以解決現(xiàn)有圖像去霧方法存在的信息失真和去霧效果不自然等問題,圖1 為本文設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
生成器的功能是從輸入的有霧圖像中直接生成一個清晰圖像,而無需估計中間參數(shù)。為了實現(xiàn)這一目標,生成器應(yīng)該保存圖像內(nèi)容,并盡可能多地恢復(fù)細節(jié),同時消除霧霾。本文設(shè)計的生成器中,引入了含對稱層的跳躍連接打破解碼過程中的信息瓶頸。
生成器的結(jié)構(gòu)如圖1 所示,其包含一個編碼過程和一個解碼過程,編碼過程利用卷積實現(xiàn)降采樣操作,圖像尺寸不斷變小,可以使訓(xùn)練速度加快,但是仍然保留了大部分信息。解碼過程主要基于反卷積操作,在解碼過程中圖像的尺寸不斷恢復(fù)。每一個卷積和反卷積操作后還有批量歸一化(batch normalization,BN)和LeakyReLU 激活函數(shù)。
另外,為了能更好地保留輸入圖像的結(jié)構(gòu),并且能夠在淺層和深層特征之間共享信息,在編解碼過程中引入了跳躍連接,向解碼過程的對稱層提供特征映射,兩層特征信息做相加運算。跳躍連接一般在深層CNN 中使用,主要解決反向傳播中梯度消失的問題,本文設(shè)計的生成器有11 層,加入跳躍連接可以使梯度傳播更方便。編解碼過程中每層卷積核的大小為4×4,padding 為0,步長為2。
判別器用于判斷輸入圖像的真假。本文判別器的結(jié)構(gòu)一共5 層,前4 層中每層的基礎(chǔ)操作是卷積、BN 和LeakyReLU 激活函數(shù)。加入BN 層可以避免梯度消失和爆炸,為了增加網(wǎng)絡(luò)的非線性,強化學習能力,在BN 層后加入了LeakyReLU 激活函數(shù)。圖像輸入后先經(jīng)過4 次卷積提取特征,在最后一層將提取的特征輸入Sigmoid 函數(shù),使結(jié)果可以映射到0~1 之間。前4 層中每個卷積核的大小為4×4,步長為2。
本文的損失函數(shù)由原始CGAN 損失、L1 損失和VGG(visual geometry group)感知損失組成。LCGAN為原始CGAN 損失,可寫為
式中:y為有霧圖像;G(y,z)為生成圖像。
CGAN 是學習將輸入的y和噪聲z映射到輸出G(y,z),每次迭代都會更新生成器和判別器。
L1 損失能捕捉圖像的低頻信息,減少圖像模糊,因此為了減少生成圖像上產(chǎn)生的偽影和顏色失真,在原始CGAN 損失的基礎(chǔ)上引入了L1 回歸損失,目標圖像x和生成圖像G(y,z)之間的L1 損失為
J. Johnson 等[17]發(fā)現(xiàn)CNN 深層特征之間的差異最小化可以使輸出圖像更加接近真實圖像,有助于保留生成圖像的細節(jié)和語義信息,這種損失被稱為感知損失。VGG 的網(wǎng)絡(luò)結(jié)構(gòu)較深,可以提取更加豐富的細節(jié)與高級特征,為了幫助恢復(fù)生成圖像的細節(jié)信息,引入了基于預(yù)訓(xùn)練VGG 網(wǎng)絡(luò)的感知損失:
式中φ(x)為預(yù)訓(xùn)練VGG 網(wǎng)絡(luò)的第19 層特征圖。
綜上所述,本文網(wǎng)絡(luò)的總體損失函數(shù)為
式中a、b、c分別為各個損失的權(quán)重。
真實單圖像去霧(real single image defogging,RESIDE)[18]數(shù)據(jù)集由合成霧圖和真實霧霾圖像組成,包括室內(nèi)訓(xùn)練集(indoor training set,ITS)、混合主觀測試集(hybrid subjective testing set,HSTS)、綜合目標測試集(synthetic objective testing set,SOTS)、戶外訓(xùn)練集(outdoor training set,OTS)和現(xiàn)實世界任務(wù)驅(qū)動測試集(Real-world task-driven testing set,RTTS)5 個子集,本實驗選擇ITS 作為訓(xùn)練集,ITS 包含1 399 張清晰圖像和13 990 張霧圖,霧圖由相應(yīng)的清晰圖像利用大氣散射模型合成。測試集選擇HSTS 和SOTS。SOTS 從NYU2 數(shù)據(jù)集中選擇了500 張室內(nèi)圖像,同樣通過大氣散射模型合成有霧圖像,大氣光A從[0.7, 1.0]之間均勻地選擇,beta從[0.6, 1.8]之間均勻地選擇。HSTS 采用同樣的方式合成了10 張室外霧圖,同時包含10 張真實世界的霧霾圖像,兩者結(jié)合進行主觀評價。
本實驗的軟件和硬件詳細配置信息如表1 所示。實驗參數(shù)設(shè)置:學習率設(shè)為1e-3,batchsize設(shè)為4,采用Adam 優(yōu)化器,epoch設(shè)為100。根據(jù)損失函數(shù)權(quán)重,對比試驗設(shè)置a為2、b為100、c為10。
表1 軟硬件版本配置信息Table 1 Hardware and software version configuration information
本文選擇峰值信噪比(peak signal to noise ratio,PSNR) 和結(jié)構(gòu)相似性指數(shù)(structure similarity index,SSIM)作為去霧效果的有參評價指標,以及A. Mittal 等[19]提出的自然圖像質(zhì)量評估器(natural image quality evaluator,NIQE)作為無參評價指標。PSNR 是目前使用最普遍的一種圖像客觀評價指標,值越大代表圖像質(zhì)量越好,其計算公式為
式中:MSE為圖像的均方差;MAX1為圖像的最大像素值。
SSIM 用于判斷圖像之間的相似度,值越大說明圖像保留了越多的細節(jié)信息,其計算公式為
式中:L為圖像之間的亮度比較;C為圖像之間的對比度比較;S為圖像之間的結(jié)構(gòu)比較。
NIQE 的值越低,去霧圖像的生成質(zhì)量越好。
首先通過實驗選擇出損失函數(shù)的權(quán)重,其次為了驗證本文算法的有效性,設(shè)計了3 組實驗,選擇暗通道先驗去霧(dark channel prior,DCP)、多尺度視網(wǎng)膜增強算法(multi-scale retinex with color restoration,MSRCR)、GCANet 和AOD-Net 作為對比算法,在SOTS 和HSTS 數(shù)據(jù)集上進行測試,從主觀評價和客觀評價兩個角度分析;再次針對提出的損失函數(shù)做消融實驗,分為3 組驗證損失函數(shù)的有效性;最后通過YOLOv3(you only look once)驗證去霧前后的檢測精度是否有提升。
3.3.1 損失函數(shù)權(quán)重對比
為了選擇合適的損失函數(shù)權(quán)重,針對不同權(quán)重做對比實驗,所得結(jié)果如表2 所示。由此可以設(shè)置權(quán)重a為2、b為100、c為10。
表2 損失函數(shù)權(quán)重對比Table 2 Loss function weight comparison
3.3.2 主觀評價和客觀評價結(jié)果對比
表3 和表4 為不同算法對合成霧圖的去霧結(jié)果,由兩表中圖片可以看到,經(jīng)過MSRCR 算法處理后,圖像的顏色存在嚴重的偏移現(xiàn)象,同原圖相比,是所有算法中去霧效果最差的。
表3 合成室外霧圖的去霧結(jié)果Table 3 Results of synthetic outdoor haze images
從表3 中的第二行可以看出,當場景對象與大氣光相似時,DCP 算法處理的結(jié)果會存在一些顏色畸變和偽影現(xiàn)象。同時該算法依賴顏色信息,容易造成圖像整體偏暗、局部飽和度過高等現(xiàn)象。從表4中第二行可以看出,AOD-Net 去霧后還是會殘留薄霧,并且顏色發(fā)生了一定的偏移。在室內(nèi)場景下,GCANet 的去霧效果比前3 種都要好,和原圖非常接近,但是在室外場景下還是有一些顏色異常,對天空的處理有些過曝。相比之下,本文提出的算法可以產(chǎn)生更自然的結(jié)果,同時具有更清晰的紋理和更好的顏色保真度,在視覺上更接近原圖。
圖2 是真實霧圖及不同算法處理后的實驗結(jié)果,由圖可見:DCP 對天空的處理最差,圖像上產(chǎn)生了網(wǎng)格和偽影,并且物體邊緣會有光暈;MSRCR 處理植物時會出現(xiàn)顏色失真;GCANet 去霧后的圖像會殘留一些薄霧;AOD-Net 去霧后植物整體顏色偏暗。綜合來看本文所提出算法的效果最好。
不同算法去霧結(jié)果的客觀評價如表5 所示。
表5 PSNR 和SSIM 結(jié)果對比Table 5 Comparison between PSNR and SSIM results
可以看出MSRCR 和DCP 在兩個數(shù)據(jù)集上的所有指標都表現(xiàn)較差,AOD-Net 的結(jié)果略好于GCANet的,相比之下,本文提出算法不論是有參評價指標(PSNR、SSIM)還是無參評價指標(NIQE)都優(yōu)于其他算法的對應(yīng)值,在SOTS 和HSTS 數(shù)據(jù)集上都有較好的表現(xiàn),從而驗證了所提出算法的有效性。
3.3.3 損失函數(shù)消融結(jié)果對比
為了證明所提出損失函數(shù)的有效性,對涉及的損失函數(shù)進行消融實驗,在CGAN 損失的基礎(chǔ)上逐步添加L1 損失和感知損失,并比較其性能,為了進行公平地比較,除了對損失函數(shù)進行修改,其余都保持了相同的網(wǎng)絡(luò)架構(gòu)和訓(xùn)練設(shè)置。不同損失函數(shù)的消融結(jié)果對比如表6 所示,從表中數(shù)據(jù)可以得出,加入L1 損失后可以產(chǎn)生更高的PSNR值,感知損失可以改善圖像的SSIM值,從NIQE值也可以看出,采用復(fù)合損失函數(shù)可以使3 個指標均有所提升。
表6 不同損失函數(shù)的消融結(jié)果對比Table 6 Comparison of ablation results of different loss functions
3.3.4 去霧前后對目標檢測的影響
為了判斷本文所提出的算法是否可以提升霧天環(huán)境下目標檢測的精度,在RTTS 數(shù)據(jù)集上進行了檢測實驗,RTTS 是一個已經(jīng)標注的真實霧天數(shù)據(jù)集,包含4 322 幅自然霧天圖像,標注了5 個類別,分別是人、自行車、汽車、公共汽車和摩托車。采用提出算法進行去霧后,基于YOLOv3 算法進行檢測,驗證提出算法的有效性。
去霧前后檢測的mAP和召回率對比結(jié)果如表7所示,可知經(jīng)過去霧預(yù)處理后,YOLOv3 的mAP提升了2.51%,召回率提升了4.31%,從而驗證了提出算法在霧天環(huán)境下目標檢測的有效性。
表7 去霧前后目標檢測結(jié)果對比Table 7 Comparison of the target detection results before and after defogging
為了解決現(xiàn)有去霧算法效果不好的問題,提出了一種帶跳躍連接的CGAN 網(wǎng)絡(luò)去霧算法。首先設(shè)計了含對稱層跳躍連接結(jié)構(gòu)的生成器,可以在特征圖中更好地保留結(jié)構(gòu)和紋理信息,實現(xiàn)特征共享;其次引入VGG 感知損失和L1 損失對網(wǎng)絡(luò)進行約束,改善了生成圖像顏色偏移和細節(jié)丟失的問題。最后通過實驗,主觀和客觀地比較了提出算法和現(xiàn)有去霧算法的處理結(jié)果,并采用YOLOv3 驗證了提出算法在提升霧天環(huán)境下目標檢測精度上的有效性。實驗結(jié)果表明:相比其他算法,提出算法在合成有霧圖像和真實霧霾圖像上均有較為優(yōu)秀的結(jié)果,生成的圖像具有更好的視覺效果和更少的顏色失真。但是,生成器采用了深度神經(jīng)網(wǎng)絡(luò),在訓(xùn)練上耗費時間較多,如何設(shè)計出參數(shù)量少并且高效的網(wǎng)絡(luò)是下一步要思考的問題。