李 耀,于 騰,楊國為,2+
(1.青島大學 電子信息學院,山東 青島 266071;2.南京審計大學 信息工程學院,江蘇 南京 211815)
水下圖像承載著重要的水下環境信息,被廣泛用于探索和監測水下世界。然而,受水下特殊環境的影響,水下圖像往往會出現細節模糊、色彩失真、對比度低等質量下降問題。低質量的水下圖像限制了它們在水下物體檢測,水下3D重建等方面的進一步應用。為了獲取高質量的水下圖像,文獻[1,2]提出基于暗通道先驗的水下圖像增強算法,以解決水下圖像對比度低和色彩偏差的問題。由于這類基與水下成像模型的傳統算法需要估計中間變量,并且適用場景較少,因此所報告的水下圖像增強結果不太具有競爭力。隨著卷積神經網絡(convolutional neural network,CNN)和生成對抗網絡(generative adversarial network,GAN)在許多視覺任務中的廣泛應用[3-5],文獻[6]提出基于CNN的水下圖像增強模型,利用端到端和數據驅動的機制直接重建清晰圖像。文獻[7]提出基于GAN的水下圖像增強模型,并引入組合損失函數來生成清晰圖像。文獻[8]提出基于條件生成對抗網絡(conditional generative adversarial network,cGAN)[9]的水下圖像增強模型,通過配置不同的組合損失函數進行水下圖像的成對訓練和不成對訓練。盡管這類深度學習算法的性能整體優于基于水下成像模型的算法,但是由于網絡結構的局限性,這類算法對水下圖像的增強并沒有達到理想效果,生成的圖像仍然存在一定程度的模糊不清晰現象。
針對上述問題,本文提出基于Boosting條件生成對抗網絡(Boosting conditional generative adversarial network,BcGAN)的水下圖像增強方法。SOS(strengthen-operate-subtract)boosting策略[10]是去噪任務中一種對圖像進行細化處理的技術。受其啟發,本文結合SOS boosting策略和編碼器-解碼器結構設計了一個增強生成器。并提出雙重判別器結構,使其聯合訓練從而提升增強生成器對圖像的細節生成能力。通過在合成水下數據集和真實水下數據集上進行實驗,驗證了本文方法的有效性。
Boosting算法被證明是有效的圖像去噪方法[10,11]。SOS boosting策略是將先前增強的圖像作為輸入來逐步完善結果,具體步驟如下所示。
(1)S:通過將先前去噪的圖像添加到有噪聲的輸入圖像中來增強信號。
(2)O:對增強后的圖像進行去噪處理。
(3)S:從恢復后的信號增強結果中減去先前的去噪圖像。
基于在相同場景的圖像上去噪方法可以獲得更好的信噪比結果這個原則,該算法已被證明可以進一步提高圖像的信噪比,因此可以有效去除噪聲。描述SOS boosting策略的核心公式如下所示
(1)

GAN是一個對抗性學習框架,由生成器和判別器組成。生成器和判別器的對抗訓練可以使生成器學習如何從隨機噪聲中生成逼真的圖像。然而,GAN的訓練并不穩定,生成的圖像會產生一些偽影和噪聲。而cGAN通過納入條件信息來解決此問題。增加信息的條件變量提高了GAN學習過程中的穩定性,并提高了生成器的表達能力。與原始GAN不同,cGAN的目標函數定義如下

(2)

本文提出的水下圖像增強方法BcGAN主要包括增強生成器結構的設計、雙重判別器結構的設計、目標函數的設計和模型訓練流程4個部分,在本章節中將進行詳細的介紹。
剛入行的時候我就發現,沒有必要融入進去。我倒不如做個村子里搜集信息的人,或者是來自火星、對一切都充滿好奇的人。幸好,這世界上到處都是傾訴欲泛濫的人,他們都想把自己的故事告訴你,想把你不知道的東西告訴你。
本文增強生成器的功能是從輸入的水下圖像中生成清晰的圖像。因此,它不僅要保留輸入水下圖像的結構和細節信息,而且應盡可能矯正色偏和消除霧度。增強生成器結構如圖1所示。本文以殘差密集塊(residual dense block,RDB)[12]為基礎塊構建了一個編碼器-解碼器結構的生成器。并且受ResNet[13]和U-Net 的啟發,在對稱層中引入了可以增加信息含量的跳躍連接。本文不是簡單地將對稱層特征的所有通道拼接在一起,而是采用SOS boosting策略來增強和細化特征。其有效性在3.4節進行詳述。SOS boosting策略的原則是基于先前估計的圖像對增強圖像進行細化處理。本文將編碼部分的特征看作輸入未處理的特征,將解碼部分的特征看作輸出處理過的特征,在解碼階段集成SOS boosting策略,以逐步細化編碼階段提取的特征i5(i5=j5)。

圖1 增強生成器結構
在解碼階段的第n級,對上一級的特征jn+1進行上采樣后,遵循“Strengthen-Operate-Subtract”操作。首先利用同一級別編碼階段提取的特征in對其進行增強,然后通過一個RDB,最后減去先前上采樣過的特征jn+1得到細化后的特征jn。 公式如下
jn=?n(in+(jn+1)↑2)-(jn+1)↑2
(3)
式中: ?n表示第n級可訓練的RDB,↑2為比例系數為2的上采樣, (in+(jn+1)↑2) 表示增強的特征。式(3)以信號增強的方式細化了特征 (jn+1)↑2。
本文在增強生成器中沒有引入批量歸一化(batch normalization,BN)層,移除BN層有利于提升網絡的泛化能力。同時也被實踐證明了在GAN框架下訓練時,移除BN層有利于減少偽影和降低訓練的不穩定性[14]。增強生成器中除第一層和最后一層的卷積步長為1外,其余卷積層和反卷積層步長均為2。
判別器用于區分圖像的真假,即判別圖像是真實的還是由生成器生成的,本文提出雙重判別器,其結構如圖2所示。

圖2 雙重判別器結構
雙重判別器由兩個子判別器構成,它們具有相同的網絡結構,但權重不同。雙重判別器的目的是使判別器能夠引導生成器生成全局語義級別和局部細節級別的圖像。這種設計背后的原因是現有的判別器在引導生成器生成逼真的細節方面受到限制。因此,本文將不同分辨率的輸入提供給不同的子判別器,以提高生成結果的視覺質量。子判別器采用全卷積結構[15],可在圖像的一小塊區域中進行鑒別,其輸出的是N×N的特征矩陣,總體決策是通過平均所有小塊區域的真實性來實現的。本文將增強生成器生成的圖像和真實圖像反饋給第一個子判別器D1, 然后對生成圖像和真實圖像進行比例系數為2的下采樣,并將尺寸減半的輸入反饋給第二個子判別器D2。 以此來實現對輸入圖像的多尺度判別。兩個子判別器輸出的特征矩陣為高頻提供了度量,將聯合推動增強生成器更多地聚焦于圖像中的細節。其有效性在3.4節進行詳述。子判別器中除最后一層卷積層步長為1外,其余卷積層步長均為2。
由于原始GAN等價優化的距離衡量(KL散度、JS散度)不合理,導致GAN訓練不穩定。WGAN(Wasserstein GAN)[16]利用Earth-Mover距離代替KL散度和JS散度從而解決了生成數據與真實數據之間的距離衡量問題。然后給定了一組近似為Earth-Mover距離且建模為神經網絡的k-Lipschitz函數f。為了確保函數f滿足k-Lipschitz限制條件,判別器的權重被裁剪到某個范圍 [-c,c]。 而WGAN-GP(Wasserstein GAN with gradient penalty)[17]提出gradient penalty來對判別器的梯度實施軟約束,即設置一個損失項來實現梯度與常數k之間的聯系來確保函數f滿足Lipschitz約束,從而解決了WGAN中權重裁剪會帶來的梯度消失或爆炸等問題。因此,本文采用WGAN-GP損失作為對抗訓練損失并結合cGAN損失進行修改得到如下對抗訓練損失

(4)


(5)

(6)
(7)
結合了上述損失之后,得到了本文網絡的最終目標函數

(8)
本文方法的訓練流程如圖3所示。增強生成器的輸入為3.2節描述的合成水下圖像,其目標是生成足夠接近于真實圖像的清晰圖像。雙重判別器的輸入為合成水下圖像分別與生成圖像和真實圖像組成的圖像對,其目標是判別出這兩組圖像對的真假。訓練時,增強生成器和雙重判別器交替訓練從而形成一個動態博弈的過程。當雙重判別器無法判別出輸入圖像對的真假時,增強生成器達到最好效果。

圖3 BcGAN訓練流程框架
本文方法基于Pytorch深度學習框架實現,并在Ubuntu 18.04下完成實驗。硬件設備為Intel(R) Core(TM) i9-10940X@3.30 GHz處理器,64 GB運行內存,NVIDIA GeForce GTX 2080 Ti (11 GB)顯卡。在訓練過程中,輸入圖像的尺寸設置為256×256,并根據經驗設置參數λGP=10,λ1=10。 本文采用Adam優化器進行參數優化,學習率設為0.0001,batch_size設為8。網絡訓練100個epoch。
由于真實成對水下圖像數據集的匱乏,本文遵循文獻[18]提出的方法,并基于NYU-V2 RGB-D數據集來生成具有多種水類型的合成水下圖像。該方法是基于文獻[6]中合成方法的改進。它為了更好利用數據驅動的方式訓練模型,對數據集中的每個圖像生成6種不同水類型的圖像,并且通過隨機改變每種水類型圖像的背景光系數和相機到物體的距離參數來額外生成6張圖像,以此來擴充數據集。采用此方法合成的水下圖像數據集包含52 164幅圖像,本文采用其中的30 000張作為訓練集,3000張作為驗證集,3000張作為測試集。訓練集、驗證集、測試集之間沒有交集。
為了驗證所提方法在真實世界水下圖像上的有效性,本文從互聯網上收集了60張真實水下圖像用于評估。在收集圖像時,本文盡可能確保所收集的圖像在內容、場景等多個方面的不同。所有圖像的尺寸均調整為256×256。
為了評估本文方法,本文與一些最新的水下圖像增強方法在合成和真實水下圖像上進行了定性和定量比較,這些方法包括UDCP(underwater dark channel prior)、UGAN(underwater generative adversarial network)[7]、FUnIE-GAN(fast underwater image enhancement GAN)[8]和UIE-DAL(underwater image enhancement using domain-adversarial learning)[18]。本文使用作者提供的源代碼或預訓練模型進行測試,以產生最佳結果,從而進行客觀評估。對于定量比較,本文采用峰值信噪比(PSNR)和結構相似性(SSIM)作為圖像增強質量優劣的評價指標。PSNR值越大,表明增強后的圖像失真越小;SSIM值越大,表明增強后的圖像與真實圖像結構越相似。
3.3.1 合成數據集上的比較和分析
在第一組實驗中,將本文方法與幾種最新的水下圖像增強方法在合成數據集的測試集上進行了定性和定量比較。由于這些測試圖像都具有地面真實圖像,因此可以計算定量指標PSNR和SSIM。表1顯示了基于這些指標的結果比較。該表清楚地表明,與其它水下圖像增強方法相比,本文提出的方法在PSNR和SSIM值上達到了最優,能夠實現出色的定量性能。

表1 本文方法與其它方法在合成水下圖像上的定量結果
在圖4中,本文展示了來自測試集的4個示例以進行定性比較。UDCP會產生嚴重的色彩失真,這主要是由于背景光系數和傳輸圖的不正確估計造成的。UGAN和FUnIEGAN是基于深度學習的端到端方法,在一定程度上克服了UDCP的局限性,但是它們的去霧效果較差,增強過的水下圖像仍然會存在一定程度的霧化模糊現象。其中,FUnIEGAN還是會有色彩失真的現象。UIE-DAL可以很好校正水下圖像的色偏,去霧效果優于UGAN和FUnIEGAN,但是UIE-DAL增強的水下圖像會存在偽影,破壞了圖像的結構信息。相比之下,本文方法生成的圖像更加清晰,這歸因于SOS boosting策略對于特征細化的有效性。同時增強生成器中引入的RDB充分提取了圖像的特征,在雙重判別器的激勵下能夠促使網絡學習更有效地映射,因此不會出現色偏和產生偽影的現象。

圖4 本文方法與其它方法在合成水下圖像上的定性結果
3.3.2 真實數據集上的比較和分析
盡管所提網絡是在合成水下圖像數據集上訓練的,但本文表明可以將其推廣到處理真實世界的水下圖像。在第二組實驗中,將本文方法與幾種最新的水下圖像增強方法在真實水下圖像上進行性能比較,其結果如圖5所示。UDCP會使圖像整體變暗,看不到太大的增強效果。UGAN可以糾正色偏,但是增強結果仍然包含嚴重的霧度殘留。FUnIEGAN也存霧化模糊的問題,并且仍然存在色彩失真的現象。UIE-DAL則會產生噪聲和偽影,且色彩恢復不自然。相反,本文方法完全不受水下特殊環境的影響,可以有效校正色偏和去除霧度,并且不會引入噪聲和偽影,能夠生成視覺上更具吸引力的圖像。

圖5 本文方法與其它方法在真實水下圖像上的定性結果
綜上所述,本文提出的水下圖像增強方法BcGAN無論是在合成數據集還是在真實數據集上,都取得了遠優于其它方法的增強效果,并且具有很好的魯棒性。這也歸因于本文提出的增強生成器和雙重判別器結構的有效性。
為了進一步驗證本文提出的增強生成器和雙重判別器對于水下圖像增強的有效性,本文設計了以下消融實驗。
(1)DcGAN:將增強生成器中的SOS boosting策略替換為U-Net中的跳躍連接,并使用單判別器。
(2)ScGAN:使用增強生成器和單判別器。
以上兩種變體,均使用與本文方法相同的參數進行訓練。表2和圖6顯示了兩種消融變體的相應配置和實驗結果。

表2 消融設置和在合成水下圖像上的定量結果

圖6 消融實驗在真實水下圖像上的定性結果
從表2中可以看出,本文結構的平均PSNR和SSIM值最高,性能優于其它變體。相比于DcGAN的跳躍連接,ScGAN的SOS boosting策略可以取得更好的定量得分。SOS boosting策略在不引入任何外層的情況下提高了網絡的性能。對比本文結構與ScGAN,可以發現雙重判別器結構是有效的,性能優于單判別器結構。圖6更是在視覺上表明了本文結構與其它變體的性能差異,SOS boosting策略能夠有效消除水下圖像的霧度部分,并逐步提高圖像的清晰度。而雙重判別器可以進一步促使增強生成器生成細節更加精細的圖像。以上實驗結果表明了SOS boosting策略有助于水下圖像增強任務,本文提出的增強生成器和雙重判別器是非常有效的。
本文提出全新的條件生成對抗網絡(BcGAN)實現對水下圖像的端到端增強,通過在生成器中集成SOS boosting策略和聯合訓練雙重判別器的方法,大大改善了現有方法對水下圖像的增強效果不甚理想,容易出現霧度殘留和細節模糊的現象。對比實驗結果表明本文方法具有更好的水下圖像增強結果,能夠生成更清晰的圖像。消融實驗也進一步表明所提出的增強生成器可以生成霧度更少的圖像,SOS boosting策略能夠細化特征;同時雙重判別器也會促使生成器更加關注圖像細節。由于合成數據集不能很好地模擬水下環境,未來將研究如何使本文方法適應真實水下圖像的不成對訓練。