趙 揚,李 波
(武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,武漢 430065)
(?通信作者電子郵箱liberol@126.com)
霧霾是由于大氣中的粒子吸收散射光而引發(fā)的一種自然現(xiàn)象,易導(dǎo)致圖像質(zhì)量下降。霧圖像通常表現(xiàn)為喪失對比度、顏色衰退和邊緣信息缺失,降低人們的視覺感知場景信息的能力;同時,霧還能影響計算機視覺算法的相關(guān)應(yīng)用,比如分類任務(wù),尤其是自動駕駛。因此,圖像去霧是一項必需的預(yù)處理任務(wù)。
霧霾圖像的形成被廣泛近似參數(shù)化為大氣散射模型[1],其模型公式如下所示:
其中:x是圖像中的像素坐標(biāo)位置,I(x)代表觀測到的霧霾圖像,J(x)是對應(yīng)的無霧圖,t(x)是透射率,A是全球大氣光。透射率t(x)可以由如下公式表示:
其中:d(x)代表場景深度,β表示散射系數(shù)。僅僅通過給定的圖像I(x),要恢復(fù)無霧圖像是極其困難的。
近年來,單幅圖像去霧一直是一個富有挑戰(zhàn)力的問題。對于去霧的研究大致可分為基于先驗的方法以及基于學(xué)習(xí)的方法。在基于先驗的方法中,通過大氣散射模型利用相關(guān)霧霾特征進行透射率t(x)和大氣光A的估計,以恢復(fù)清晰無霧圖像;但這些方法的性能取決于其先驗的準(zhǔn)確性,在特殊的場景中這些方法往往會失效?,F(xiàn)在,部分基于學(xué)習(xí)的方法使用訓(xùn)練過的深度神經(jīng)網(wǎng)絡(luò)來預(yù)測中間參數(shù),盡管這些方法取得了較為顯著的結(jié)果,但由于缺乏真實的訓(xùn)練數(shù)據(jù)和有效的先驗,很難估計這些中間參數(shù),不準(zhǔn)確的估計也會進一步降低去霧的性能。此外,一些算法直接或間接基于深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)來恢復(fù)無霧圖像,以端到端的方式,忽略中間參數(shù)估計,直接從霧圖像恢復(fù)出無霧圖像。這些方法主要采用通用的網(wǎng)絡(luò)結(jié)構(gòu),如:U-Net[2]具有編碼器-解碼器體系結(jié)構(gòu),主要用于圖像分割;DenseNet[3]減緩了梯度消失問題,增強了特征傳播,但會產(chǎn)生特征冗余;Dilated Network[4]廣泛運用于聚合上下文信息的有效性,但去霧時容易產(chǎn)生網(wǎng)格偽影。與傳統(tǒng)的先驗方法相比,這些方法的去霧能力得到了提升,但這些結(jié)構(gòu)對于去霧沒有很好的優(yōu)化。
最近,基于生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)的單幅圖像去霧在去霧領(lǐng)域占據(jù)了一席之地。GAN 以其特殊的抵抗性訓(xùn)練的理念,在圖像轉(zhuǎn)換、圖像生成等領(lǐng)域已取得了顯著的成就。本文提出了一種完全端到端的增強生成器的GAN 去霧網(wǎng)絡(luò),它以模糊圖像作為輸入,直接生成無霧圖像,不需要中間參數(shù)的估計。不同于其他GAN 去霧網(wǎng)絡(luò),在生成器方面,使用了用于圖像去噪的增強策略(Strengthen-Operate-Subtract,SOS)模塊[5]和用于超分辨率細節(jié)恢復(fù)的密集特征融合(Dense Feature Fusion,DFF)模塊[5]作為生成器的一部分,增強圖像的特征恢復(fù),同時保存特征提取時的空間信息。實驗結(jié)果驗證了該方法在去霧任務(wù)上的優(yōu)越性。同時在傳統(tǒng)GAN 的損失函數(shù)基礎(chǔ)上,新引入了一個多尺度結(jié)構(gòu)相似性(Multi-Scale Structural SIMilarity,MS-SSIM)損失函數(shù),它是對圖像進行多個尺度下的結(jié)構(gòu)相似性(Structural SIMilarity,SSIM)的評估,很好地解決了邊緣噪聲的問題,對于生成的圖像,更貼近于地面真相。
近十年來,大量的去霧方法被提出,這些方法可粗略地劃分為兩類:基于先驗的方法以及基于學(xué)習(xí)的方法?;谙闰灥姆椒ㄊ褂玫氖鞘止ぴO(shè)計的先驗或猜想來進行圖像去霧。He 等[6]對無霧圖像進行大量統(tǒng)計發(fā)現(xiàn)了暗通道先驗(Dark Channel Prior,DCP),其工作原理是在戶外拍攝的干凈圖像中,至少一個RGB 顏色通道的強度值在某些像素上接近于0?;贒CP 的假設(shè),可以估計透射率和全球大氣光。目前在此假設(shè)下已經(jīng)出現(xiàn)各種改進方法,如Zhu 等[7]提出了一個將深度作為亮度和飽和度的線性函數(shù)模型,并通過訓(xùn)練學(xué)習(xí)了參數(shù)。總的來說,基于DCP 的方法一定條件下對去霧有很好的效果,但缺點是自然具有高亮度的區(qū)域(天空)中容易出錯。
為了解決這些問題,在基于學(xué)習(xí)的方法中,CNN在目標(biāo)檢測[8]和分類任務(wù)上取得了巨大的成功,并成功運用于除霧應(yīng)用中。Li 等[9]提出了一種一體化除霧網(wǎng)絡(luò)AOD-Net(All-in-One Dehazing Network),它是基于重新配置的大氣散射模型設(shè)計的,通過輕量級的CNN 以端到端的方式直接生成清晰圖像;Mei 等[10]介紹了一種通過漸進特征融合的U-Net 編碼器/解碼器深度網(wǎng)絡(luò)(Progressive Feature Fusion Network,PFFNet),以直接學(xué)習(xí)從觀察到的模糊圖像到無霧的地面真相的高度非線性變換函數(shù);Ebenezer 等[11]提出的圖像去霧網(wǎng)絡(luò)CWGAN(Conditional Wasserstein Generative Adversarial Network)是數(shù)據(jù)自適應(yīng)的,結(jié)合Wasserstein 損失函數(shù)[12],使用梯度懲罰來執(zhí)行拉普拉斯約束學(xué)習(xí)霧圖像為條件的清晰圖像的概率分布。但是,這些方法主要基于通用的網(wǎng)絡(luò)體系結(jié)構(gòu),對于圖像去霧問題效率不高。
Goodfellow 等[13]提出的GAN 是從隨機噪聲樣本中生成圖像或文本。一個GAN 中包含兩個相互競爭的神經(jīng)網(wǎng)絡(luò)模型:一個網(wǎng)絡(luò)稱為生成器,能將噪聲作為輸入并生成樣本;另一個網(wǎng)絡(luò)稱為鑒別器,能接收生成器數(shù)據(jù)和真實訓(xùn)練數(shù)據(jù),訓(xùn)練得到能正確區(qū)分?jǐn)?shù)據(jù)類型的分類器。這兩個網(wǎng)絡(luò)互相對抗。
其中,生成器通過學(xué)習(xí)來產(chǎn)生更逼近真實數(shù)據(jù)的新樣本,用于愚弄鑒別器,反之鑒別器也需要更好地區(qū)分生成數(shù)據(jù)與真實數(shù)據(jù)。GAN 的學(xué)習(xí)過程可能發(fā)生模式崩潰問題,生成器開始退化,總是生成同樣的樣本點,無法繼續(xù)學(xué)習(xí)。當(dāng)生成模型崩潰時,判別模型也會對相似的樣本點指向相似的方向,訓(xùn)練無法繼續(xù)進行。為了改善這個問題,通過給GAN 增加一些約束,條件生成對抗網(wǎng)絡(luò)(Conditional Generative Adversarial Network,CGAN)[14]便自然而然地誕生了。CGAN 在圖像生成領(lǐng)域有巨大的潛力,并且已被引入各種視覺任務(wù)中,例如超分辨率[15]、去雨[16]。
生成器需要從一張有霧圖像中生成一張清晰無霧的圖像。與傳統(tǒng)去霧的GAN 的生成器直接使用U-Net 不同,本文選擇基于U-Net 的增強生成器,它接受一個霧霾圖像作為輸入,訓(xùn)練以生成清晰的圖像。如圖1 所示,它由編碼器、增強解碼器和特征恢復(fù)模塊三部分組成。本文網(wǎng)絡(luò)包含四個階梯型的卷積層和四個階梯型反卷積層。殘差組[17]由三個殘差塊組成,在Gres模塊共有18 個殘差塊。編碼器中的殘差塊過濾器數(shù)目依次為16、32、64、256,相對應(yīng)的解碼器中的增強模塊過濾器數(shù)目為256、64、32、16。在編碼器中的第一個卷積層的卷積核大小被設(shè)定為11×11,其余所有的卷積和反卷積層相應(yīng)過濾器尺寸為3×3。為了逐步完善特征恢復(fù)模塊Gres模塊中的特征jL,將SOS 增強策略[18]嵌入網(wǎng)絡(luò)的解碼器中,且SOS 增強模塊的結(jié)構(gòu)如圖2 所示。在第n層的SOS 增強模塊中,從上一級上采樣的特征jn+1,用編碼器的潛在特征in來增強它,并且通過精化單元生成增強的特征jn,如下所示:
圖1 生成器的結(jié)構(gòu)Fig.1 Structure of generator
圖2 SOS增強模塊Fig.2 SOS boosted module
使用pix2pix 網(wǎng)絡(luò)[19]的中的鑒別器來判斷生成器的輸出是否為真實圖像,它是一個70×70的patchGAN,如圖3所示。
圖3 鑒別器的結(jié)構(gòu)Fig.3 Structure of discriminator
此網(wǎng)絡(luò)是對生成圖像和目標(biāo)圖像的逐塊比較,而不是像素級的比較。一般的鑒別器輸出的是一個正確或錯誤的矢量,但patchaGAN 輸出的是一個n×n的矩陣,其中的每一個元素,實際上代表著原圖中的一個比較大的感受野,也就是說對應(yīng)著原圖中的一個patch。
L1 loss:給定輸入模糊圖像I,生成器的輸出是G(I),地面真實圖像是J。目標(biāo)圖像J與生成的圖像G(I)之間的L1損失計算如下:
它測量了去霧圖像和地面真相在圖像像素空間中的保真度。
Perceptual loss:使用Ledig 等[15]定義的VGG 損失。VGG損失由ImageNet 上預(yù)先訓(xùn)練的VGG-19 網(wǎng)絡(luò)中的ReLU 激活層定義,當(dāng)對VGG 輸入I時,對應(yīng)于VGG 第11 層的特征映射由φ(I)表示,則該GAN的VGG損失函數(shù)可以定義為:
MS-SSIM loss:結(jié)構(gòu)相似性(SSIM)用來測量兩幅圖像之間的相似度。G(I)和兩幅圖像之間的SSIM可由下式給出:
其中:l(G(I),J)是亮度對比因子,c(G(I),J)是對比度因子,s(G(I),J)是結(jié)構(gòu)對比因子;α、β、γ為三個成分的相關(guān)重要參數(shù)。
單尺度的結(jié)構(gòu)相似性受限于圖像細節(jié)及觀測者距離的限制,多尺度結(jié)構(gòu)相似性方法[20]是在不同分辨率下融合圖像細節(jié)的一種方便的方法??梢员硎緸椋?/p>
其中:指數(shù)αM、βj、γj用于調(diào)整不同分量的相對重要性,并且αM=βj=γj。M表示縮放因子,圖像以寬高2M-1 為因子進行縮?。寒?dāng)M=1時,表示原始圖像大?。划?dāng)M=2時,表示圖像縮小一半;以此類推。
因此,MS-SSIM損失函數(shù)可以定義為:
Adversarial loss:定義標(biāo)準(zhǔn)的CGAN 的目標(biāo)函數(shù)來訓(xùn)練生成器和鑒別器為:
其中:D代表的是鑒別器,G表示的是生成器。當(dāng)訓(xùn)練CGAN時,生成器嘗試最小化結(jié)果,鑒別器嘗試最大化它。因此,綜合以上結(jié)果,對于生成器,總的損失函數(shù)為最小化:
其中:λ1、λ2、λ3分別為相應(yīng)損失函數(shù)的權(quán)重。另一方面,鑒別器被訓(xùn)練最大化以下目標(biāo)函數(shù):
訓(xùn)練集里包含了室內(nèi)和室外的圖像。對于室內(nèi)圖像,選擇了合成的NYU 數(shù)據(jù)集[21],包含1 449 幅室內(nèi)場景無霧圖像及相應(yīng)數(shù)量的合成朦朧圖像。對于室外圖像,使用了RESIDE[22]中的OTS 數(shù)據(jù)集,共包含500 張模糊/真實圖像對。最后,一共得到了1 949 對圖像。測試集選用了SOTS 室內(nèi)數(shù)據(jù)集和NTIRE18 的室內(nèi)外數(shù)據(jù)集來進行定量及定性的評價,同時還使用了一些來自AOD-Net中沒有參考圖像的真實朦朧圖像。
在本文實驗中,當(dāng)λ1、λ2、λ3分別設(shè)置為100、1 000、100時,對測試集的測試結(jié)果最好。在MS-SSIM 損失函數(shù)中,將M設(shè)為3,對應(yīng)的參數(shù)β1=γ1=0.044 8,β2=γ2=0.285 6,β3=γ3=0.300 1。網(wǎng)絡(luò)中,輸入圖片的尺寸為256×256×3。初始學(xué)習(xí)率為2 × 10-4,使用了Adam優(yōu)化器。訓(xùn)練過程中,在訓(xùn)練100 周期后,學(xué)習(xí)率以線性衰減率β=0.5 開始遞減。網(wǎng)絡(luò)在訓(xùn)練集上訓(xùn)練了250 個周期。生成器和判別器交替訓(xùn)練,并在pytorch上實現(xiàn)。
一個除霧算法的性能可以從幾個因素進行評估,其中兩個最常用的為峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和SSIM。PSNR 衡量算法從噪聲中去除噪聲的能力,SSIM 度量兩個圖像的相似程度,這兩個評價指標(biāo)的值越高,表示去霧算法的性能更好。為了驗證本文增強生成器及MS-SSIM損失函數(shù)的有效性,分別與原始U-Net 生成器及SSIM 損失函數(shù)進行了對比分析,同時和如今一些先進的方法進行了比較,包括DCP[6]、AOD-Net[9]、PFFNet[10]、CWGAN[11];同時運行了這些方法已發(fā)布代碼,在測試集上做了相關(guān)評價。相關(guān)結(jié)果見表1~2所示。
在合成數(shù)據(jù)集上,對測試集SOTS 和NTIRE18 進行測試,通過定量評估來比較各方法的性能。從表1 可看出:在其他條件不變的情況下,使用SOS 增強生成器的除霧網(wǎng)絡(luò)在SOTS及NTIRE18 上PSNR 與SSIM 均有提高,且在SOTS 上的PSNR值提高了約0.9。由于原始U-Net 編碼器下采樣操作后,無法進行有效的空間壓縮,且不同層之間只是進行簡單的級聯(lián)操作,容易造成特征丟失。而增強生成器通過建立非相鄰層的連接,利用去噪殘差塊融合不同層中的特征,減少特征丟失。同時,在使用全新的MS-SSIM損失函數(shù)后,本文方法在兩個數(shù)據(jù)集上的PSNR 和SSIM 均有細微增長,且在NTIRE18 數(shù)據(jù)集上的SSIM值增加了約0.04。跟SSIM損失函數(shù)相比,MS-SSIM損失函數(shù)是在不同尺度下對生成圖像與真實圖像對比,解決了邊緣噪聲問題,更多地保留了高頻信息,能在邊緣及細節(jié)上產(chǎn)生更好的無霧圖。
表1 在合成數(shù)據(jù)集改進前后U-Net以及損失函數(shù)的比較Tab.1 Comparison of U-Net and loss function before and after improvement on synthetic datasets
與其他方法的對比結(jié)果如表2 所示。顯而易見,本文方法在兩個指標(biāo)PSNR 和SSIM 都取得了最高的數(shù)值,在室內(nèi)數(shù)據(jù)集SOTS上分別為23.860 6及0.917 3,比傳統(tǒng)的DCP、AODNet利用大氣散射模型估計中間參數(shù)的方法在SSIM 上高了接近0.1。而以端到端模式的PFFNet 僅僅采用了簡單的U-Net結(jié)構(gòu),在對特征提取與恢復(fù)時有較大的信息損失。本文與同樣以GAN 來進行圖像去霧的CWGAN 相比,在生成器端通過增強的特征提取DFF 模塊以及特征恢復(fù)的SOS 模塊,使得訓(xùn)練時生成的圖像細節(jié)更為還原,同時選擇MS-SSIM 損失函數(shù)替代了SSIM 損失函數(shù),加強了對生成的無霧圖片邊緣的細化,SSIM 數(shù)值更高。由于室外光照等環(huán)境的影響,PSNR 和SSIM 的值普遍比較低,但該模型在NTIRE18 上同樣取得了最高的指標(biāo)值。這說明本文方法在不同環(huán)境下優(yōu)于對比方法。對其中部分圖片的定量及定性評價如圖4 所示。由圖4 可以看出,DCP沒有保留圖像的原始顏色和對比度,圖像變得更加灰暗。在霧比較濃的情況下,DCP、AOD-Net、PFFNet 仍有殘留的霧沒有完全去除,而CWGAN 在一些圖像的細節(jié)上恢復(fù)得比較低。相對而言,本文所方法不僅很好地去除了霧霾,且較大程度地保留了原圖像的細節(jié),恢復(fù)效果相對較好,在PSNR和SSIM上都獲得了最大的數(shù)據(jù)值。
圖4 合成數(shù)據(jù)集上本文方法與其他方法的定量對比結(jié)果圖Fig.4 Result images of quantitative comparison of the proposed method and other methods on synthetic datasets
在真實的數(shù)據(jù)集上,由于沒有相對應(yīng)的無霧場景圖像,因此僅對現(xiàn)實世界的霧圖像進行定性評價,結(jié)果可由圖5 所示,同時還選擇了一些常用的自然霧圖像進行比較。從圖5 可以明顯觀察到,AOD-Net 和PFFNet 有些許的煙霧殘留和顏色失真,DCP 留下了少許陰霾,圖像更傾向于變暗,而CWGAN 在霧濃度較大的室外圖像中會增大對比度。與上述方法相比,本文的模型不僅較徹底地去除了霧霾,在重度霧區(qū)也表現(xiàn)出了更多清晰的細節(jié)與更少的偽影。這是由于生成圖片時DFF模塊有效彌補了高分辨率特征中缺失的空間信息,并利用非相鄰的特征融合,特征損失較少,更易于在除霧的同時保留圖像細節(jié),訓(xùn)練也越快達到收斂。但是在霧濃度較深的室外環(huán)境下,仍然不能去除大量的煙霧。
圖5 真實數(shù)據(jù)集上本文方法與其他方法的定性對比結(jié)果圖Fig.5 Result images of qualitative comparison of the proposed method and other methods on real datasets
本文提出了一種端到端的增強型CGAN 進行單幅圖像去霧,其中,在生成器端采用了SOS增強解碼器以及DFF模塊進行特征融合,同時引進了MS-SSIM 損失函數(shù)與標(biāo)準(zhǔn)的CGAN去霧損失函數(shù)相結(jié)合,進行對抗訓(xùn)練,從有霧圖像中直接生成無霧圖像。分別在合成數(shù)據(jù)集和真實數(shù)據(jù)集上進行對比實驗,實驗結(jié)果表明,本文模型相比幾種最先進的方法,在評價指標(biāo)PSNR 和SSIM 上都取得了更優(yōu)的數(shù)據(jù)結(jié)果,且真實數(shù)據(jù)集上的視覺表現(xiàn)更好。在未來,這項工作可以擴展到其他計算機視覺任務(wù)中,如圖像去雨、圖像增強等。