李莎,柯文馳,李科,程鵬
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065;2.四川大學(xué)空天科學(xué)與工程學(xué)院,成都610065)
圖像去霧作為一種自適應(yīng)恢復(fù)問題,是一項(xiàng)非常具有挑戰(zhàn)性的任務(wù)。早期的圖像去霧方法假設(shè)同一場景中有多個(gè)圖像可用。而在實(shí)際情況中,單幅圖像的去霧更加真實(shí)、流行[1]。因此,本文主要研究單圖像去霧問題。已有很多圖像去霧方法基于大氣散射模型,該模型可以描述為:
其中I(x)表示霧天的成像圖像,J(x)表示清晰圖像,t(x)表示傳播介質(zhì)透射率,α 為大氣光值,其中大氣光值反應(yīng)了全局大氣光的散射導(dǎo)致場景顏色的偏移。傳播介質(zhì)透射率描述的是光線通過大氣媒介傳播到達(dá)成像設(shè)備的過程中沒有被散射的部分,它能反映圖像上目標(biāo)場景的遠(yuǎn)近層次。當(dāng)大氣同質(zhì)時(shí),傳播介質(zhì)透射率可以定義為t(x)=e-βd(x),0 ≤t(x)≤1 其中,β 表示散射率,當(dāng)大氣均勻時(shí),在一定時(shí)刻對于整幅圖像來說散射率是一個(gè)定值,d(x)為場景對象到傳感器的距離,即場景深度。去霧的關(guān)鍵是估計(jì)大氣光值α 和傳播介質(zhì)透射率t(x)。除了一些專注于估計(jì)大氣光[2]的方法,大多數(shù)算法更側(cè)重于精確估計(jì)傳輸函數(shù)t(x)。Fattal[1]提出了一種場景反射率的估計(jì)方法。Tan[3]利用最大化復(fù)原圖像的局部對比度來去霧,He 等人[4]提出了基于暗原色先驗(yàn)(DCP)去霧算法,Zhu 等人[5]提出了一個(gè)可訓(xùn)練的線性模型,稱為顏色衰減先驗(yàn)(CAP),在監(jiān)督的方式下學(xué)習(xí)模型參數(shù)。Berman 等人[12]利用全局像素的霧線來估計(jì)透射率圖(NCP)。隨著深度學(xué)習(xí)理論的完善和發(fā)展,一些研究者將深度學(xué)習(xí)引入到去霧中,并取得了良好的效果。Cai 等人[6]提出了DehazeNet,從霧天圖像中訓(xùn)練預(yù)測的介質(zhì)傳輸圖。Ren W 等人[7]利用多尺度卷積神經(jīng)網(wǎng)絡(luò)(MSCNN)生成了粗略的場景透射率。Zhang H 等人[8]提出了DCPDN,能夠級聯(lián)地學(xué)習(xí)傳輸圖、大氣光、去霧圖像之間的關(guān)系。這些方法已取得了巨大的進(jìn)步,然而仍有一些因素影響了其去霧效果,一方面,對傳輸圖的估計(jì)不準(zhǔn)確,另一方面,非端到端的方法無法捕捉到介質(zhì)傳輸圖,大氣光和去霧圖像之間的內(nèi)在關(guān)系。Li 等人提出的AOD-Net[9]是第一個(gè)可訓(xùn)練的端到端的去霧模型。它基于大氣散射模型,做了改進(jìn),描述如下:
K(x)為與輸入無關(guān)的傳輸函數(shù),其用一個(gè)輕量級的卷積網(wǎng)絡(luò)去評估K(x),然后級聯(lián)的訓(xùn)練網(wǎng)絡(luò)以最小化輸出圖像與清晰圖像之間的重構(gòu)誤差??紤]觀測到的霧天圖像與清晰圖像之間的關(guān)系為J(x)=Φ(I(x);θ),Φ(*)即是潛在的高度非線性變換函數(shù),θ 為參數(shù),AOD-Net 所代表的關(guān)系可以看作是一個(gè)具體的關(guān)系Φ的通用函數(shù)?;谠撍枷?,本文構(gòu)建了一個(gè)完全基于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)其非線性關(guān)系的端到端的算法。并引入判別網(wǎng)絡(luò)進(jìn)一步提高所恢復(fù)圖像的質(zhì)量。
自編碼器在數(shù)據(jù)去噪,和可視化降維方面已得到廣泛的應(yīng)用。文中采用上下文自編碼網(wǎng)絡(luò)學(xué)習(xí)霧霾圖像與清晰圖像之間的函數(shù)關(guān)系。網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,參數(shù)設(shè)置如表1-3。
編碼器主要功能是輸入霧天圖像通過生成網(wǎng)絡(luò)盡可能恢復(fù)出清晰無霧圖像,本文先使用了4 個(gè)卷積層作為編碼部分,提取圖像特征信息。由于擴(kuò)張卷積支持感知域的指數(shù)擴(kuò)展,并且能夠不丟失分辨率和覆蓋范圍。本文使用了擴(kuò)張卷積模塊增加圖像的感知域,聚合多尺度上下文信息,增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力。解碼器部分使用兩個(gè)ConvTranspose2d-Average Pooling 結(jié)構(gòu)對圖像執(zhí)行與下采樣相反的兩次上采樣操作,并在其間使用3×3 的卷積恢復(fù)圖像,加入2 個(gè)跳躍連接,將淺層特征信息傳遞給解碼器,加快網(wǎng)絡(luò)訓(xùn)練過程。
表1 Encoding Layer
圖1 生成網(wǎng)絡(luò)結(jié)構(gòu)
表2 Dilation Convolutions Module
表3 Decoding Layer
判別網(wǎng)絡(luò)為一個(gè)全卷積網(wǎng)絡(luò),由5 個(gè)卷積層構(gòu)成,網(wǎng)絡(luò)結(jié)構(gòu)如圖2,卷積層參數(shù)設(shè)置如表4,這里除了最后一個(gè)卷積層,每層都采用Conv-Relu 的方式,并在網(wǎng)絡(luò)最后加入了Sigmoid,將判別結(jié)果歸一化到[0,1]之間。輸入生成器生成的圖,判斷真假。
表4 Structure and parameter setting of discriminator
圖2 判別網(wǎng)絡(luò)結(jié)構(gòu)
基于生成對抗網(wǎng)絡(luò)的思想,給定一個(gè)霧天圖像,生成器嘗試產(chǎn)生盡可能真實(shí)的無霧圖像,判別器驗(yàn)證生成的圖像看起來是否真實(shí)。設(shè)H 為霧天模糊圖像集的一個(gè)樣本,R 為清晰圖像集中相應(yīng)的清晰圖像。文中的生成對抗網(wǎng)絡(luò)的損失使用原始Gan 的損失,描述如式(3)。其中D 表示判別網(wǎng)絡(luò),G 表示生成網(wǎng)絡(luò)。判別器從全局的角度,驗(yàn)證圖像,找到生成效果最好的那個(gè)。在生成網(wǎng)絡(luò)中,使用L2 損失,在像素級別學(xué)習(xí)生成清晰圖像。并引入感知損失的思想,使用在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練的VGG16 模型的relu1_1,relu1_2,relu2_1,relu2_1 層提取特征,描述如式(4)。為了利用圖像的多尺度信息,在生成網(wǎng)絡(luò)的解碼器中使用卷積塊提取不同尺度的特征。描述如式(5),其中Di是解碼器提取的不同尺度的特征,Gi是不同尺度的對應(yīng)清晰圖像。αi表示各個(gè)尺度代表的權(quán)重。從解碼器提取的特征分別對應(yīng)1/4,1/2,1 倍原尺度,越接近原始分辨率的圖像,在恢復(fù)中所占權(quán)重越大。本文的權(quán)重取值分別為1/4,1/2,1,通過使用多尺度損失,可以更好地捕獲圖像特征,恢復(fù)圖像的細(xì)節(jié)信息。
由于光照等條件的變化,分別記錄霧天圖像和其對應(yīng)的清晰圖像,是難以做到的。因此本文選用去霧公開數(shù)據(jù)集D-HAZY[10],該數(shù)據(jù)是通過合成復(fù)雜場景的真實(shí)圖像中的霧度而建立的。其包含NYU-Depth和Middelbury 兩個(gè)部分。NYU-Depth 數(shù)據(jù)集由1449對相同場景下的合成的有霧圖像和對應(yīng)清晰圖像組成。也包含每個(gè)場景下的深度圖,文中并沒有使用深度圖。Middelbury 包含23 個(gè)相同場景下的清晰和合成的有霧圖像。
從NYU-Depth 里取1000 張圖片,將其裁取為128×128 尺寸的小塊,每隔64 個(gè)像素截取一張,并將截取的圖像采用隨機(jī)翻轉(zhuǎn),旋轉(zhuǎn)90 度的方式,增加訓(xùn)練的數(shù)據(jù)量,以提高模型的泛化性,裁取后共得到54000對有霧與對應(yīng)清晰的訓(xùn)練圖像。并取與訓(xùn)練集不同的400 張圖像作為測試集C。為和其他一些算法相比較,文中分別在NYU-Depth 與Middelbury 數(shù)據(jù)上做了測試,記為測試集A、測試集B。為了測試算法的實(shí)用性,在一些真實(shí)霧天圖像上也做了測試。
有霧圖像作為生成網(wǎng)絡(luò)的輸入,生成網(wǎng)絡(luò)輸出的圖像送入判別網(wǎng)絡(luò),判斷真假。網(wǎng)絡(luò)學(xué)習(xí)率使用兩個(gè)時(shí)間尺度更新規(guī)則,生成器和判別器的學(xué)習(xí)率分別設(shè)置為0.0001,0.0004,更新比例為1。采用Adam 優(yōu)化,優(yōu)化器參數(shù)的設(shè)置采取默認(rèn)值,批大小為8。算法運(yùn)行在GeForce GTX 1080 GPU 計(jì)算機(jī)的PyTorch 上。
本文采用PSNR、SSIM 評估去霧后的圖像質(zhì)量,PSNR 表示峰值信噪比?;谙袼攸c(diǎn)間的誤差評價(jià)圖像質(zhì)量,能夠在像素級別評估圖像,顯示去霧的有效性。SSIM 表示結(jié)構(gòu)相似性,與人類感知一致,它分別從亮度、對比度、結(jié)構(gòu)三方面度量圖像相似性。測試結(jié)果如表5。
表5 測試結(jié)果
取其中的一張圖片,去霧效果如圖3。為了證明生成對抗網(wǎng)絡(luò)結(jié)構(gòu)的有效性,在僅僅使用自編碼結(jié)構(gòu)的網(wǎng)絡(luò)上也做了實(shí)驗(yàn),在相同的訓(xùn)練測試集上,測試結(jié)果如表6。可看出,判別網(wǎng)絡(luò)的引入,顯著提高了相關(guān)指標(biāo)的值。實(shí)驗(yàn)也比較了損失函數(shù)的影響,在相同的參數(shù)設(shè)置下,加入感知損失可以加快網(wǎng)絡(luò)的訓(xùn)練,使得網(wǎng)絡(luò)收斂速度更快。并在結(jié)構(gòu)相似性SSIM 上有細(xì)微的提高。
表6 自編碼網(wǎng)絡(luò)上測試結(jié)果
圖3 測試集B、測試集C、真實(shí)霧天圖像的去霧效果
為評估本文算法,將其與一些先進(jìn)的單幅圖像去霧算法比較,一方面在PSNR、SSIM 上分析,另一方面在一些真實(shí)霧天圖像的去霧效果上做了對比。結(jié)果見表7-8,圖4。
表7 在測試集A 上的量化結(jié)果
表8 在測試集B 上的量化結(jié)果
表7 和表8 的部分?jǐn)?shù)據(jù)來源于參考文獻(xiàn)[11]。
可以看出本文的算法在PSNR、SSIM 上取得了更高的值,在對真實(shí)自然圖像去霧上也有一定的效果,對于近處的圖,算法恢復(fù)的細(xì)節(jié),清晰度較好。對于較遠(yuǎn)處的景色,仍有一定的霧殘留。其他算法中,都取得了較好的視覺效果。然而,仔細(xì)觀察會發(fā)現(xiàn),NCP 恢復(fù)的圖像細(xì)節(jié)最清晰,而亮度與色彩上增強(qiáng)了。CAP 有時(shí)會模糊圖像的紋理,如第2 幅圖中綠色樹葉部分,DehazeNet 使一些區(qū)域變暗,MSCNN 引入了過度增強(qiáng)的圖像偽影,如第4 幅圖球場場景中。
本文提出了一個(gè)有效的可訓(xùn)練的端到端的網(wǎng)絡(luò),該網(wǎng)絡(luò)不需要評估大氣散射模型里的參數(shù),利用生成對抗網(wǎng)絡(luò)生成更加清晰逼真的圖像,并訓(xùn)練和評估了所提出的算法,取得了較好的效果。雖然算法基于合成室內(nèi)圖像訓(xùn)練的,但在對真實(shí)場景下的圖像去霧有一定的效果,對于高級計(jì)算機(jī)視覺任務(wù)中的霧天圖像預(yù)處理有一定的參考作用。然而文中對于場景深度較大,霧濃度較高處,去霧效果不夠明顯,后續(xù)需改進(jìn)。并且實(shí)驗(yàn)在合成數(shù)據(jù)集上進(jìn)行,而真實(shí)情況可能場景更復(fù)雜,應(yīng)該進(jìn)一步探索在真實(shí)去霧數(shù)據(jù)集上去霧,使得去霧更加適用,效果更好。