由于陸地資源的匱乏,海洋資源的開發利用越來越受到人們的重視[1].獲取水下圖像也成為海洋資源開發利用的關鍵.水下圖像與普通圖像成像不同,不同波長的光在傳輸過程中有不同的能量衰減率.波長越長,衰減速度越快.波長最長的紅光衰減速度較快,而藍光和綠光的衰減速度相對較慢,因此水下圖像大多呈現藍綠色偏.水下環境中微弱的暗光導致水下圖像對比度低,水中懸浮物的散射導致水下圖像細節模糊[2].如何解決水下圖像的顏色失真、對比度低、細節模糊等問題是當前科研人員面臨的主要挑戰[3].
這些水下圖像的解決方案可以分為兩類,一類是基于傳統的增強方法,另一類是基于深度學習的方法[4].
傳統方法可分為兩類,即基于非物理模型的增強方法[5]和基于物理模型的增強方法[6].非物理模型方法不需要考慮成像過程,這種方法主要包括直方圖均衡化、灰度世界算法、Retinex算法等.直方圖均衡化方法[7]能夠均勻分布圖像像素,在一定程度上提高了圖像質量和清晰度.灰度世界算法[8],可以從圖像中消除環境光的影響,增強水下圖像.Fu等[9]提出基于Retinex的水下圖像增強方法,在校正水下圖像顏色的基礎上,采用Retinex方法獲得反射和照射分量,最終得到增強的水下圖像.Ghani等[10]提出瑞利拉伸有限對比度自適應直方圖,對全局和局部對比度增強圖進行歸一化處理,以增強低質量的水下圖像.Zhang等[11]利用Retinex、雙邊濾波和三邊濾波在CIELAB顏色空間對水下圖像增強.Li等[12]采用最小化信息丟失和直方圖分布的策略來消除水霧,增強水下圖像的對比度和亮度.非物理模型的這類算法,算法簡單實現速度快,但存在過度增強、人工噪聲等問題.物理模型法的目標是建立退化模型,估計包含水下光和透射率的模型參數,進而反演退化過程對圖像進行增強.最為經典的暗通道先驗(DCP)算法[13],研究人員根據霧圖像和成像模型之間的關系,得到光透射率和大氣光估計值,進而對霧圖像實現增強.水下圖像一定程度上類似于有霧圖像,因此DCP算法也被用于水下圖像增強,但是此算法的應用場景非常有限.因此研究者提出專門針對水下環境的水下暗通道(UDCP)算法[14],它考慮了光在水下的衰減特性,能更準確地估計出光波在水中的透射率,實現水下圖像增強.Peng等[15]提出一種水下圖像復原方法,來處理水下圖像的模糊和光吸收問題,該方法在大氣散射模型中引入景深,采用暗通道先驗的方法求解更準確的透射率,實現水下圖像增強.基于物理模型的這類方法主要依賴于成像模型和暗通道先驗知識[16],但由于水下環境的特殊性,導致這類方法存在局限性.
近年來,深度學習引起了廣泛的關注,它的出現彌補了傳統方法的不足[17].深度學習的方法可以減少水下復雜環境對圖像的影響,達到更好的增強效果.基于卷積神經網絡(CNN)[18]的模型和生成對抗網絡(GAN)[19]的模型都需要大量成對或不成對的數據集.陳學磊等[20]提出了一種融合深度學習與成像模型的水下圖像增強方法,通過對背景散射光估計,并結合成像模型進行卷積運算得到增強后的水下圖像.Islam等[21]提出了一種快速水下圖像增強模型(FUnIE-GAN),該模型建立了一個新的損失函數來評估圖像的感知質量.Fabbri等[22]提出了一種基于生成對抗網絡(UGAN)的方法,該方法增強了水下圖像的細節,但UGAN使用歐氏距離損失,從而產生了模糊的實驗結果.上述基于深度學習的水下圖像增強算法,提升了算法的整體性能.由于水下圖像嚴重的色偏,在算法訓練穩定性,增強后圖像細節、清晰度和對比度方面,仍有待進一步深入研究.
針對現有算法增強的水下圖像存在顏色失真、細節特征丟失和關鍵信息模糊的問題,本文在生成對抗網絡基礎上,改進了生成器結構,引入了殘差模塊和SK(Selective Kernel)注意力機制.殘差模塊能夠減少編碼器和解碼器之間的特征丟失,提取更多的圖形細節特征,增強圖像細節和校正圖像顏色.SK注意力機制能夠使網絡動態融合不同尺度大小的特征圖,從而增強圖像的關鍵信息.采用參數修正線性單元(PReLU)來提高網絡在訓練過程中的擬合能力.通過對比實驗、消融實驗、細節實驗和應用測試實驗表明,本算法在主觀視覺和客觀評價指標層面均有良好表現.
生成對抗網絡是一種深度學習模型[19].本文在此基礎上進行改進,實現了水下圖像增強.生成對抗網絡包含兩個模型:生成器模型G和判別器模型D.生成器將生成的虛假圖像發送到判別器,而真實圖像也發送到判別器.判別器判斷輸入的虛假圖像和真實圖像,將真實圖像判斷為“1”,將虛假圖像判斷為“0”[19].GAN的數學模型可表示為
Eh~Ph[log(1-D(G(h)))],
(1)
式中:V(G,D)為GAN的最終優化目標;E為數學期望;f為真實的圖像;h為失真的圖像;Pf為真實的數據分布;Ph為失真圖像h下的數據分布;G(h)為生成器增強得到的圖像;D(f)為判別器對真實圖像和生成圖像的判定.GAN模型框架如圖1所示.

圖1 生成對抗網絡框架Fig.1 GAN framework
生成器和判別器交替迭代訓練,相互博弈,最終達到納什均衡狀態.此時,將失真的水下圖像輸入生成器,就可獲得增強的水下圖像.針對水下圖像顏色失真、細節特征丟失和關鍵信息模糊的問題,本文在GAN基礎上改進網絡.
本文算法的生成器結構如圖2所示,整體類似于U-Net[23].主要包括編碼器、解碼器、殘差模塊[24]和SK(Selective Kernel)注意力機制[25]4個部分.為了緩解編碼器的低層特征和解碼器的高層特征之間的細節特征丟失,采用殘差模塊,從而使增強后的圖像細節紋理特征更清晰.為了更好地增強圖像關鍵信息,動態融合不同尺度的特征圖,引入了SK注意力機制,在每個殘差模塊間加入SK注意力機制.首先,輸入水下圖像到編碼器,編碼器的前3層由卷積層、BN層和PReLU層組成,對圖像進行下采樣操作,減小特征圖的大小.接著輸入到殘差模塊和SK注意力機制,提取更多的細節特征信息和關鍵信息.然后解碼器對圖像進行上采樣操作,恢復真實圖像大小.

圖2 生成器網絡結構Fig.2 Generator network
在卷積層的設計中,采用參數修正線性單元(PReLU)[26]來代替修正線性單元(ReLU)[27].
參數修正線性單元可以提高網絡在訓練過程中的擬合能力.參數修正線性單元和修正線性單元在式(2)中表示.

(2)
其中x是神經網絡圖中上每個位置的特征值,a是可變參數.與修正線性單元(ReLU)相比,參數修正線性單元(PReLU)避免了x為負時梯度變為零權重不再更新的現象,使得網絡訓練更加穩定.
水下圖像在下采樣過程中可以縮小特征圖的大小,減少參數的數量和計算量,但是會丟失圖像的空間位置和細節.為了減少下采樣過程中的圖像細節損失,引入了殘差模塊[24].編碼器特征是低級特征,解碼器特征是高級特征,2個不相融的特征直接融合會存在語義差異,因此添加殘差模塊,可以在2個特征融合前達到相同的深度,以便平衡編碼器和解碼器之間的語義差異,達到增強水下圖像細節特征的效果.
殘差模塊(ResPath)包含2個卷積(Conv)和2個激活(PReLU)操作.原來的3×3卷積不會直接傳輸到第2層卷積,而是通過一個1×1卷積添加到連接中,引入了更多的非線性,減少了細節特征丟失.殘差模塊的具體結構如圖3所示.

圖3 殘差模塊Fig.3 Residual path module
SK注意力機制[25]中的SK是Selective Kernel的縮寫,表示選擇性融合不同尺度大小的卷積核.SK注意力機制結構如圖4所示,由Split、Fuse和Select 3部分組成.在Split部分分別對輸入圖像進行3×3和5×5的卷積操作,得到U1和U22個特征圖.Fuse是計算2個卷積核權重的部分,將兩者的特征圖按元素求和,然后沿著H和W維度求平均值,得到一個C×1×1的一維向量,權重信息表示了各個通道信息的重要性.其公式為

圖4 SK注意力機制結構Fig.4 SK attention structure
U=U1+U2,
(3)
其中U是通過全局平均池化(AvgPool)生成的通道統計信息.接著采用一個線性變換,將原來的C維信息映射成Z維信息,然后分別使用2個線性變換,從Z維變成原來的C維,這樣就完成了信息通道維度的提取.Select部分通過softmax函數進行歸一化,計算出每一個channel對應的權重分數,并將權重應用到特征圖上,最后將2個新的特征圖進行信息融合得到最終的輸出圖像.輸出圖像對比于輸入圖像,經過信息通道的提煉,融合了更多的關鍵信息,增強了圖像關鍵信息.
該算法中使用是馬爾可夫判別器[22].判別器網絡中,前4層都使用3×3的卷積核,通過4層卷積核實現下采樣,減小特征圖大小.D網絡的前4層卷積層之后是BN層和LeakyReLU激活層.使用4個卷積層將256×256×6的輸入(真實和生成的圖像),轉換為16×16×1的輸出,最后取輸出矩陣的均值作為真或假的輸出.判別器網絡如圖5所示.

圖5 判別器網絡Fig.5 Discriminator network
生成器通過判別器輸出的判別數據連續反向傳播,并在兩者之間交替優化.損失函數是卷積神經網絡的優化準則,根據不同的優化目標設置不同的損失函數.根據優化目標,本文算法定義了3個損失函數.
1)對抗損失:
Ladv(G,D)=EX~Y[logD(y)]+
EX~Y[log(1-D(x,G(x)))],
(4)
式中:Ladv(G,D)是生成器和判別器的最終優化目標;x為輸入數據;y為參考數據;E表示期望;G表示生成器;D表示判別器;X表示真實數據的概率;Y表示偽數據的概率,它為生成器提供泛化功能.
2)L1損失:除了對抗性損失外,本文算法還引入了L1損失,保證了生成圖像與真實圖像內容的一致性.損失如下:
L1=E[‖IC-G(ID)‖1],
(5)
其中:IC為真實圖像;ID是水下失真的圖像.如果L1損失是唯一的優化目標,那么像素空間中像素的平均值將導致生成的圖像中出現模糊偽像.
3)針對L1損失導致生成圖像中模糊的問題,本文還引入了感知損失函數[28].感知損失基于卷積神經網絡提取生成圖像的特征映射和目標圖像的特征映射之間的差異[28].使用感知損失可以減少高頻特征丟失造成的損失.增強的圖像細節紋理更接近真實圖像.感知損失的定義如下:

(6)
其中,Cj表示網絡的第j層,CjHjWj表示第j層特征映射的大小,φ是預訓練VGG19網絡的最后一個卷積層提取的高級特征[28].
Ltotal=Ladv+αL1+βLper,
(7)
其中α和β分別是L1損失函數和Lper感知損失函數的權重.
本文的實驗配置環境是Intel i5 10400F處理器,2.4 GHz主頻,16 GB內存空間和GTX3060 GPU.采用Pytorch編程框架.本文選擇Adam作為優化器[29],并將學習速率設置為0.000 2,批大小為1,式6中L1損失的權重α為100,感知損失的權重β為100.采用EUVP[21]數據集對網絡進行訓練.EUVP是一個大規模數據集,由underwater_dark、underwater_imageNet和underwater_scenes 3部分組成.其中underwater_dark是一個包含成對的灰度圖像和彩色圖像的水下圖像數據集,Underwater _imageNet和underwater_scenes都是包含成對的彩色低質量圖像和高質量圖像的水下圖像數據集.從EUVP數據集中隨機選取5 000對圖像進行算法訓練,8對圖像進行算法測試.
為了更好地驗證算法的有效性,本文分別對合成數據集和真實數據集進行驗證,采用應用測試實驗、細節對比實驗和消融實驗進一步驗證網絡的增強效果,并從主觀和客觀指標評價2個方面進行效果分析.各種對比算法包括:3種傳統方法(文獻[8,14-15]);3種深度學習方法(文獻[20-21,30]).
3.2.1 水下合成數據集增強效果分析
水下合成圖像的測試數據集選自EUVP[21]數據集中的部分,本文算法與其他方法的比較如圖6所示.圖6顯示了通過幾種方法增強的水下圖像,這些合成圖像來自不同的場景.文獻8算法(GW)是最常用的顏色平衡算法,顏色平衡算法可以在一定程度上消除環境光的影響獲得原始圖像,同時也帶來了顏色的變化.文獻[8]算法處理后的圖像存在一定程度的紅移現象.文獻[14]為水下暗通道先驗算法(UDCP),雖然該方法保留了圖像的紋理特征,但由于大氣光成分的存在,增強后的圖像比原圖像有更嚴重的藍綠色偏.文獻[15]算法(IBLA)處理的圖像顏色飽和度過高,加重了顏色色偏.與傳統方法相比,深度學習的方法增強的圖像清晰度更好.文獻[20]算法(Combining Deep Learning and Image Formation model)是一種融合圖像成像模型和卷積神經網絡的方法,在一定程度上提高了圖像的亮度和清晰度,但同時產生了綠色色偏,且在圖像邊緣產生綠色偽影.文獻[21]算法(Funie-GAN)增強了圖像的真實色彩和清晰度,圖像亮度也有了很大的提高,但一定程度上出現了紅色偏差.文獻[30]算法(CycleGAN)是一個無監督的網絡,不需要成對的數據集,但增強的圖像顏色背景較暗圖像模糊,并且圖像中存在藍綠色偏差.與其他方法相比,本文提供的算法明顯提高了圖像的顏色、對比度和關鍵細節信息,在各種場景中的表現比較穩定.

圖6 各算法在合成數據集上的增強效果對比Fig.6 Comparison of enhancement effect between various algorithms on synthetic datasets
本文選擇結構相似性指數(SSIM)[31]、水下圖像質量評價指標(UIQM)[32]、水下彩色圖像評價指標(UCIQE)[33]和信息熵(IE)[34]4種指標進行客觀評價.SSIM可以判斷增強的圖像和參考圖像的相似度,SSIM值越接近于1表示增強后的圖像與參考圖像更接近[31].UIQM是專門針對無參考圖像的水下圖像評價指標,指標越大增強效果越好[32];UCIQE是水下色彩圖像評價指標,主要包括圖像顏色色度、飽和度和對比度,其值是圖像顏色色度、飽和度和對比度的線性組合,值越大表示圖像的清晰度、飽和度和對比度越好.從表1中可知本文算法增強后的圖像在UIQM、UCIQE、IE和SSIM上指標均優于其他算法,說明本文算法增強的圖像清晰度、對比度和細節特征更好.傳統的水下圖像增強方法與深度學習的方法相比效果略差.

表1 合成水下數據集參考指標的評價結果
3.2.2 水下真實數據集增強效果分析
本文算法在真實水下圖像上的增強效果如圖7所示,真實水下測試圖像分別選自模糊場景和藍綠色場景.傳統方法(文獻[8,14-15])在增強模糊場景
和藍綠色場景時,圖像的清晰度有所提高,但圖像分別出現了紅色、綠色和藍色色偏.深度學習方法(文獻[20-21,30])一定程度上去除了霧感影響,但是都出現了顏色色偏,只有本文算法增強后的圖像清晰度、色彩飽和度高,在模糊場景、藍色場景和綠色場景中都能清晰地修復圖像細節特征信息,圖像顏色得到校正.
為了對水下真實圖像增強效果的質量進行客觀評價,本文選取UIQM、UCIQE和IE 3個指標進行分析.由于水下真實圖像沒有參考圖像,所以沒有選取SSIM等評價指標.如表2所示,本文算法增強后的圖像在清晰度、色彩飽和度和信息熵含量上都優于其他算法,其中本文算法中的UCIQE指標遠高于其他算法,并且得分均勻.從得分上看,深度學習的方法比傳統方法增強的效果更好.綜上所述,本文算法能夠實現多種場景的增強任務,有著出色的泛化性能.

表2 真實水下數據集非參考指標的評估結果
為了更好地驗證殘差模塊和SK注意力機制對增強效果的影響,進行了消融實驗,分別驗證去除殘差模塊(ResPath)和SK注意力機制對評價指標的影響.實驗結果如表3所示.

表3 去除各個模塊對增強效果的影響
從表3可以看出,去除殘差模塊的圖像UIQM、UCIQE和IE指標得分比去除SK注意力機制的圖像指標分別低0.126、0.033和0.024.同時去除殘差模塊和SK注意力機制的指標得分是最低的.采用殘差模塊和SK注意力機制的算法指標得分是最高的.
為了驗證SK注意力機制對圖像關鍵信息的增強效果,進行了細節對比實驗.
圖8a是原始圖像,圖8b是去除SK注意力機制增強后的圖像,圖8c是本文算法增強后的圖像.通過對圖像中細節部分放大分析,發現去除SK注意力機制的圖像,細節增強效果較差,細節模糊.采用了SK注意力機制的本文算法,增強后的細節效果優于沒有SK注意力機制的算法,關鍵細節信息更清晰.說明SK注意力機制能夠動態融合不同尺度的特征圖,提取圖像的關鍵信息,增強圖像關鍵信息.

圖8 細節對比Fig.8 Detail comparisons
本文采用Canny邊緣檢測[35]和SIFT特征點檢測與匹配[36]來檢驗本文算法的增強效果.如圖9所示,通過本文方法恢復的圖像比原始圖像檢測到更多的邊緣信息,邊緣信息越多代表著細節特征越多.說明殘差模塊能夠減少特征圖在下采樣過程中的特征丟失,增強了圖像細節特征,校正了圖像顏色,更好地保留了圖像內容.通過SIFT特征點匹配實驗可以發現,原始圖像匹配到的特征點是5個,增強后圖像匹配到的特征點38個,多于原圖33個,說明了SK注意力機制能夠動態融合不同尺度的特征圖,提取圖像關鍵信息.從這兩組應用測試中,進一步驗證了殘差模塊和SK注意力機制在水下圖像增強上的作用.

圖9 應用測試實驗Fig.9 Application tests
本文提出了一種基于SK注意力殘差網絡的水下圖像增強算法.為了減少編碼器與解碼器的細節特征丟失,在編碼器和解碼器間加入殘差模塊.為了使網絡可以動態融合不同尺度的特征圖,產生更好的關鍵信息增強效果,在每個殘差模塊后加入SK注意力機制.采用參數修正線性單元,避免了梯度為零的現象,提高了網絡的擬合能力.在合成數據集上的實驗結果,本文算法指標均高于其他算法指標,其中UIQM、UCIQE、IE和SSIM分別至少提高0.352、0.011、0.088和0.059.在真實水下圖像數據上其指標UIQM、UCIQE和IE分別至少提高0.262、0.043和0.014.本文算法在兩種數據集上均高于其他算法,說明算法的有效性.在真實水下圖像數據集上對殘差模塊和SK注意力機制分別進行消融實驗,本文算法比去除殘差模塊和SK注意力機制的算法,在UIQM、UCIQE和IE指標上分別提高了0.556、0.091和0.213.采用合成數據集訓練網絡,沒有考慮真實水下環境的特殊因素,生成的圖像在一定程度上與真實水下圖像是有誤差的.