孫智文,秦志亮,彭若松,馬林偉,馬本俊,劉雪芹,趙杰臣
1. 青島哈爾濱工程大學創新發展中心,山東 青島 266000
2. 哈爾濱工程大學 青島創新發展基地,山東 青島 266000
霧是海上的一種自然天氣現象,是低層大氣中的水汽經過凝結而形成的。空氣對水分的容納有一定限度,當低層空氣溫度降低,且水汽總量超過了臨界溫度條件下的飽和水汽量,多余的水汽便凝結出來與空氣中的微小顆粒物相結合而形成霧[1]。霧具備極其多的反射面,光線無法穿透霧,只能被霧所反射回來,所以霧通常呈白色,大大降低了海面上的能見度,為海上交通帶來了不便,嚴重時會對國家和人民生命財產造成巨大損失。此外,由于海霧的存在,利用光學設備所采集到的海面船只圖像具有嚴重的模糊感,這使得計算機視覺識別工作受到極大影響,因此在對圖像進行目標檢測識別前,需要對船只圖像進行有無海霧影響判別,如果有海霧影響需要先對其進行圖像去霧處理,再送到目標檢測模型中進行船只識別。目前,圖像去霧算法根據處理方式不同,主要分為圖像增強去霧、圖像復原去霧和利用深度學習方法去霧3 類方式[2]。
通過在海島礁平臺安裝非合作光學目標安全感知系統,可以對海島礁周緣海域進行光學監控和實時識別。海上船只識別檢測主要有3 種方法:一是基于傳統船舶定位識別,主要依靠船舶交通服務(vessel traffic service,VTS)、自動雷達標繪儀(automatic radar plotting aid,ARPA)[3]以及船舶自動識別系統(automatic identification system,AIS)[4]等實現對船舶的識別;二是利用圖像特征提取算法提取數字圖像相關信息特征,運用機器學習中的分類器對圖像提取特征的深度和維度進行分類和識別檢測;第3 種是基于深度學習方法進行目標識別檢測,不同于前兩者,運用深度學習的方法提高了圖像特征提取的深度和維度,有著更好的分類效果,具有更高的船只識別率。
本文針對海上船只識別存在的海霧遮擋、目標識別困難等問題,采用優化改進后的數字圖像暗通道先驗去霧算法和YOLOv4 算法,對改進后的船只去霧和識別檢測算法進行了比對實驗驗證。通過對比實驗驗證,優化改進后的數字圖像暗通道先驗去霧算法結合YOLOv4 算法提高了船舶識別精度,達到了實時識別檢測的要求。
本文依托安裝在海島礁上的全景光學監控系統,采集海島礁周緣光學視頻圖像,結合基于圖像復原的暗通道先驗去霧算法對輸入圖像進行預先處理,再利用YOLOv4 等深度學習算法完成對海面非合作目標船只的識別檢測。
1.1.1 先驗知識
相比于晴天所拍攝的能見度較高的圖像而言,霧天所拍攝的圖像在一定程度上影響了人們的可視范圍,給海上船舶識別造成了不便。將霧天引入圖像處理的領域來看,有霧圖像相比于無霧圖像丟失了許多細節,導致圖像失真,為了進一步還原圖像的真實效果,在對有霧圖像進行特征分析后,可運用暗通道先驗去霧算法等方法對圖像進行去霧處理。
He 等[5]通過大量統計觀察得出一個結論,對于所有無霧圖像而言,圖像每個像素的紅綠藍三基色通道都存在某個通道的灰度值低于另外2 個通道情況。這說明在一個像素鄰域內很可能存在某個像素的紅綠藍三基色通道最小值趨近于0。則其數學式為
式中:?(x)為像素x的鄰域,y為該鄰域內的像素,表示取三通道最小值。基于這個結論,可以直接評估出霧霾的厚度,并恢復出高質量圖像,得到高質量的深度圖,用于后續圖像識別檢測。
遍歷原始有霧船舶圖像的紅綠藍三基色通道,選出所有的最小灰度值,組合成一幅暗通道圖像,選取一個大小合適的矩形窗,窗口的中心坐標為像素的坐標。然后求取矩形窗中灰度最小的那個值,將其視為中心像素點的灰度值,從而得到輸入圖像的暗通道圖像,如圖1 所示。圖1(a)為輸入的彩色圖像原圖,圖1(b)為圖1(a)經過上述處理后的圖像。

圖1 彩色圖像及其對應的暗通道圖像
1.1.2 計算透射率
在計算機視覺領域,對于有霧圖像的數學模型定義為
式中:I(x)為觀測到的有霧圖像;J(x)為需要恢復的無霧圖像;A為全局大氣光值;t(x)為透射率,描述了光通過介質投射到攝像頭過程中沒有被散射的部分。
假設大氣光值A是一個定值,利用大氣光對成像模型做歸一化處理,等式兩邊除以大氣光值,得
式中:c為彩色船舶圖像的三通道,t(x)為透射率。由于廣泛性認為在圖像局部區域的霧氣較為均衡,并結合前人研究設定透射率t(x)為常數,將透射率定義為t(x),求最小通道和最小值濾波,可得
結合公式
對式(1)變形可得
在現實生活中,無論怎樣的天氣情況,空氣中總是懸浮著一些細小顆粒影響視覺,看遠方仍然能感受到一定程度的霧的影響,因此為貼合實際情況,引入了參數 ω保留一些霧影響,此時的表達式為
1.1.3 估計和優化大氣光值
大氣光值的估計計算也是圖像去霧過程中的一個重要環節,其準確性將直接影響霧圖成像方程的結果,誤差過大將會導致圖像的去霧性能降低,如何更加準確地估計出大氣光值是去霧算法的一個重點研究內容。在許多場景中,存在類似大氣光的白色物體,想要精準地估計出大氣光值存在極大的困難,不準確的值會影響去霧的最終效果,出現去霧圖像亮度偏暗等現象。因此,針對處理過后的圖片出現色彩失真的現象,通過優化算法中大氣光值計算方法進行改進。本文改進的大氣光值優化方法為:
1)構建一個評價函數F(x),其滿足以下表達式:
2)當圖片初次進行4 等分后,選擇滿足評價函數條件的區域并且再次進行四等分,如此迭代,直到確定符合評價函數閾值的候選區域,圖像迭代過程如圖2 所示。

圖2 四分法分割示意
式中n是該區域內像素點的個數。
3)計算候選區域中的差值,對各差值進行比較,最大的作為候選區域,認為候選區域內的像素平均值是大氣光值的估計值[6],定義S(x)是該區域中所有像素值的累加結果,則大氣光值A的表達式為
1.1.4 圖像復原
當透射率值較低時,會導致J的值偏大,可通過設置閾值T0來忽略透射率最小值,當t(x) 1.2.1 YOLOv4 目標檢測算法及優化 Joseph Redmon 于2015 年發表了一步走策略端到端的實時目標檢測算法YOLO(you only look once)。YOLO 系列算法是基于一個單獨神經網絡達到了由輸入的采集圖像到輸出圖像目標類別位置的目的,沒有單獨的求取感興趣區域的過程,而是把目標檢測過程中識別、定位類比為一個回歸過程進行求解[7]。YOLOv 系列目標檢測算法是和單步多框目標檢測算法(single shot multibox detector,SSD)同為單階段目標檢測算法,具有運算速度快的特點,在經過一系列改進后,除了運算速度的進一步提升,其識別準確率也有了極大提高[8]。 YOLOv4 是在YOLOv3 基礎[9]上對其網絡模型結構和訓練技巧等方面進行了一些改進,使得檢測性能得到進一步的提升,其總體檢測思路沒有發生太大變化。YOLOv4 完整網絡框架如圖3 所示,主要包含CBM、CBL、Res unit、CSPX、空間金字塔池化網絡(spatial pyramid pooling,SPP)共5 個基本組件。CBM 為Yolov4 網絡結構中的最小組件,由Conv+Bn+Mish 激活函數三者組成;CBL 由Conv+Bn+Leaky_relu 激活函數三者組成;Res unit 借鑒了Resnet 網絡中的殘差結構,讓網絡可以構建的更深;CSPX 借鑒了CSPNet 網絡結構,由3 個卷積層和X個Res unint 模塊Concate 組成;SPP 部分采用池化核大小分別為1×1、5×5、9×9、13×13 的最大池化的方式,進行多尺度融合。 圖3 YOLOv4 網絡模型 相比于YOLOv3 算法,YOLOv4 實現了算法上守正出奇的創新和各種先進算法的集成創新。在結構方面,YOLOv4 主干特征提取網絡由Darknet-53 改為了CSPDarknet-53,將resblock_body的結構進行修改,使用了CSPnet 結構。同時在對CSPdarknet53 的最后一個特征層進行3 次卷積后新增了SPP[10]結構,分別利用4 個不同尺度的最大池化進行處理,極大地增加感受野,分離出最顯著的上下文特征。YOLOv4 在訓練方面,還引入了Mosaic、DropBlock 正則化[11]、類標簽平滑[12]、Mish 激活函數[13]、CIoU-loss[14]等技巧。總的來說,YOLOv4 通過引入各類前人的研究技術并且將其組合,使YOLOv4 實現了速度和精度的平衡,具有更強的泛化性,更適合于工程應用。 本文檢測目標為海上非合作目標船只,在檢測識別的過程中容易受到海面復雜氣象條件、復雜背景、光學圖像船只尺度大小不一、圖像分辨率不高和海浪遮擋等不利因素的干擾,影響船只整體信息的獲取。鑒于此,針對特定船只檢測識別的場景,本文在YOLOv4 算法的基礎上進行進一步的優化,首先在YOLOv4 主干特征提取網絡中引入了混合空洞卷積方法[15],以獲得更多尺度的信息,增大特征圖的感受野;其次根據本文船只數據集的中實際船只的尺寸大小,利用K-means++聚類計算先驗框[16]提前確定合適大小的先驗框,節省了大量計算資源。在進行計算驗證過程中,采用64 位windows10 操作系統,深度學習框架為Tensorflow。 1.2.2 混合空洞卷積方法 淺層的特征圖有利于獲取更加豐富的位置信息,同時也有利于對細小的目標進行檢測識別,而深層的特征圖往往擁有更多的語義信息和更廣的感受野[17]。為了獲取更大的感受野,通常通過池化層和卷積層來達到目的,但這樣在提供更大感受野的同時,其分辨率會進一步降低,容易導致空間信息和數據丟失。 為了進一步增加感受野,并且保證原特征圖的大小恒定,從而代替原有的上采樣和下采樣操作,本文引入了空洞卷積方法。相比于普通卷積的不同,空洞卷積(dilated convolution)引入了擴張率[18](dilation rate),擴張率不同,其感受野大小也不同,普通卷積方法和空洞卷積方法對比如圖4 所示。 圖4 普通卷積和空洞卷積的對比 由圖4 可知,卷積核大小同為3×3,但分別起到了5×5和7×7的卷積效果,所以感受野有所增大,并且值得肯定的是參數量并沒有增多。具體的計算公式為 式中:k為空洞卷積的卷積核,k′為等效卷積核,d為空洞數,RFi+1為第i+1層的感受野,RFi為第i層的感受野,Si為前面總層數的步長之積。圖5 為連續做3 次空洞率為2 的空洞卷積結果,圖6 為做3 次空洞率分別為1、2、3 的空洞卷積結果。 圖5 連續做空洞率為2 的空洞卷積示意 圖6 空洞率分別為1、2、3 的空洞卷積示意 在空洞卷積過程中,輸入的采樣變得十分稀疏,感受野不連續從而導致局部信息丟失,較遠距離上的一些信息可能并無關聯。空洞卷積通過少數幾次的連續卷積后就能生成較大的感受野(如圖5 所示),不利于對小尺度目標的檢測,使得在檢測目標時不能同時兼顧大小目標。基于此,改進的YOLOv4 運用了混合卷積模塊,將不同空洞率的空洞卷積(如圖6 所示)進行融合,增加特征層的感受野并且不改變特征圖分辨率。改進的YOLOv4 主干特征提取網絡如圖7所示。 圖7 改進YOLOv4 的主干特征提取網絡 1.2.3 K-means++聚類計算先驗框 在YOLOv2 到YOLOv4 算法中,為了提高檢測模型的精度,利用K-means 聚類的方法來確定先驗框,但是也存在一些問題,例如:K 值是人為事先給定,許多時候難以確定具體應該分為幾類;初始聚類的中心坐標選擇存在一定難度,好的初始值有利于得到有效的聚類結果,反之則無法得到;K-means 聚類算法需要對樣本不斷地進行分類調整,聚類中心也在不斷更新,所以耗費了大量的計算資源。 針對K-means 存在的問題,本文在改進的模型當中采用了K-means++聚類算法,具體實現流程及2 個算法流程間對比如圖8 所示。Kmeans 聚類算法中利用歐幾里得公式計算真實框和先驗框的距離,在本模型中為了適應船只數據集中船只多尺度的特點,采用先驗框和聚類中心的交并比(intersection over union,IOU)作為Kmeans 聚類的參數。 圖8 K-means 和K-means++聚類算法對比 具體計算公式為 式中:b為樣本數據集的先驗框,c為船只聚類中心。 經過計算,得到改進YOLOv4 算法的候選框初始尺寸為[(21 11),(37 16),(51 32),(66 20),(81 56),(108 32),(176 51),(214 91),(445 152)]。 本文對同一組有霧圖片分別運用直方圖均衡去霧算法、Retinex 去霧算法、AODNet 去霧算法、暗通道先驗算法和改進的暗通道先驗算法進行去霧處理,針對實驗結果進行了分析和對比,不同算法去霧效果對比如圖9 所示。通過圖9 從視覺效果角度對去霧效果進行分析得到: 圖9 去霧效果視覺對比 1)基于直方圖均衡的去霧算法在一定程度上改善了圖像去霧的視覺效果,增強了圖片的信息特征,但圖像色彩失真較為嚴重,具有明顯的塊效應。 2)基于Retinex 去霧算法相比于直方圖均衡去霧算法有了明顯的效果改善,但仔細觀察可以看出,Retinex 去霧算法對色彩的還原較差,并且存在圖像降質的現象。 3)基于深度學習的AODNet 使用的數據集中,許多有霧場景是通過合成得來,其去霧效果的適應性一般,很多圖像去霧還原不夠準確,部分圖像去霧不明顯。 4)暗通道先驗去霧算法對大部分的有霧圖像有著較好的去霧效果,但是在包含大區域天空的圖像去霧后會存在光暈現象,并且處理過后的圖片亮度經常偏暗。 5)改進后的暗通道先驗去霧算法無論是在去霧效果還是在色彩還原上都表現出了最佳的效果,但是針對濃度過大的霧無法實現完全去霧。 由于視覺分析可能帶有主觀性,因此引入圖像質量評價指標,用客觀的數據評價各圖像去霧算法的實際效果。具體客觀評價指標為圖像信息熵、標準差、灰度均值、平均梯度。計算過程中,利用信息熵來表示圖像所包含的信息量,圖像信息熵越大,圖像所包含的細節信息就越豐富;圖像標準差是用來反映圖像的像素平均值和該圖像像素值的離散程度,標準差越大,圖像的對比度就有所增加;灰度代表圖像在各像素點的亮度,反映圖像色彩深淺,灰度均值代表某一灰度圖中各像素點灰度值的平均值,灰度均值越大,圖像就越亮;平均梯度是用來描述圖像清晰度的一個指標,通常認為平均梯度值越大,圖像的清晰度就越高,包含更多的圖像信息。 分別選取A、B、C 共3 個圖作為對比實驗對象進行計算,相關評價指標樣圖和結果見圖10 和表1~3。 表1 圖A 客觀評價指標 表2 圖B 客觀評價指標 表3 圖C 客觀評價指標 圖10 評價指標樣圖 相較于原圖而言,經過去霧算法處理過后的圖片從整體上來說,信息熵有所增加,說明圖像中包含更多的細節信息;標準差也有所增加,說明圖像質量在一定程度上有了提升;平均梯度也是呈上升趨勢,提高了圖像的清晰度。由于樣本圖像數量受限,不能完全保證經過改進的暗通道先驗算法處理過后的圖像在各個參數都處于最佳,但仍能看出一定趨勢,改進的暗通道先驗去霧算法處理過后的圖像,在參數方面表現優異。 通過網上下載、現場實拍以及部分開源船只數據集,收集篩選了船只圖像1 200 張,利用labeling 軟件對船只進行標注,得到VOC2007 格式的數據集。其中,選取0.8 比例的圖片作為訓練集,0.2 比例的圖片作為驗證集。 為了橫向對比Faster-RCNN、YOLOv4 以及改進YOLOv4 算法的有效性,本次對比實驗利用平均檢測精度(average precision,AP)、均值平均檢測精度(mean average precision,mAP)對檢測結果進行識別效果評價,測試圖片主要包含漁船、快艇、貨船以及客輪共4 類。同時通過訓練好的Faster-RCNN(faster regions with CNN features)算法、YOLOv4 和改進的YOLOv4 模型對其進行檢測識別,并且將閾值設定為0.5,其結果如表4 所示。 從表4 可以看出,改進后的YOLOv4 算法具有最高的mAP,總體上AP 值高于其余2 種模型,船只檢測性能優于Faster-RCNN 算法和YOLOv4算法。其中改進YOLOv4 算法的mAP 為93.18%,比原YOLOv4 算法高出0.33%,比Faster-RCNN 算法高出28.38%。分析對比4 種船只的檢測結果,對快艇的檢測精度最高,考慮到快艇的形狀特征以及顏色特征較為明顯,并且在數據集中快艇的數量最多,因此具有較好檢測識別效果;而客輪的樣本最少,并且其形狀特征不如另外3 種船只分明,因此其識別率最低,從此可以看出樣本均衡性對模型檢測性能具有重要的影響。 將Faster-RCNN、YOLOv4 以及改進YOLOv4船只檢測模型運用到實際場景中,分別選取單一船只場景和多船只場景進行對比,其檢測結果如圖11 所示。 圖11 3 種算法檢測效果對比 對圖11 進行分析可以看出,改進后的YOLOv4船只檢測模型具有最佳的檢測性能,具有最高的船只識別率,Faster-RCNN 船只檢測模型的漏檢率最高。改進后的YOLOv4 算法在小尺度目標船只識別方面有所進步,但是更小尺度的船只以及遮擋較為嚴重的船只仍然難以識別,出現了漏檢的情況。 為了進一步驗證海霧對船只檢測識別的影響,利用改進后的YOLOv4 算法對其進行了實驗,分別對有霧圖像和去霧圖像進行船只檢測識別。從圖12 中可看出,去霧前部分船只未能被識別,但去霧后識別到的船只數量增加;對單一船只的識別準確率也有所提升。但是在實驗中發現,海霧濃度過大對船只檢測識別的影響是不可逆的,經過去霧處理后仍然無法實現對船只的檢測識別。 圖12 圖像去霧前后船只檢測識別效果對比 在實驗過程中,對Faster-RCNN、YOLOv4 以及改進YOLOv4 的算法檢測時間進行了統計分析,結果如表5 所示。Faster-RCNN 算法的平均運行時間最長,平均每張圖片需要花費1.21 s,YOLOv4 平均每張圖片需要花費0.385 s,改進的YOLOv4 算法平均每張圖片需要花費0.316 s。 表5 3 種模型的平均檢測時間s 針對海上非合作目標船只檢測識別的場景來看,Faster-RCNN 船只檢測模型的識別速率較慢,難以滿足本場景下的實施目標檢測要求,并且其精度相比于本文算法也有所不足。而基于改進YOLOv4 的目標檢測算法可以做到實時檢測的同時兼顧了檢測精度,具有良好的工程應用性。 經過大量實驗后發現,改進后的YOLOv4 算法能夠基本滿足對海上非合作目標船只進行識別的功能,但若是海上天氣過于極端,例如海霧較大、可視距離極近,那么圖像去霧無法完成,同時也無法完成對船只的識別,后續需要對其繼續進行研究,提出新的解決方案。 1)本文對基于圖像復原的海上圖像去霧算法進行了研究,對暗通道先驗算法進行了優化改進。通過和幾種主流去霧算法的去霧效果進行計算對比,在薄霧情況下,改進后的暗通道去霧算法的去霧效果和圖像色彩還原均表現出了極佳效果。 2)本文對YOLOv4 檢測算法進行了優化改進。改進YOLOv4 算法中運用空洞卷積代替普通卷積,引入了K-means++聚類算法,節省了大量的計算資源。將Faster-RCNN 模型、YOLOv4 模型和改進YOLOv4 模型進行計算對比,比較其mAP值。改進后的YOLOv4 算法具有較高的檢測精度和較好的實時性,為海面船只實時識別提供了一定的技術支持。在計算過程中,改進YOLOv4 算法對數據集中4 種類型船只的檢測精度存在一定差異,說明樣本均衡性對改進算法的船只識別檢測精度具有一定影響,數據集需要注意樣本均衡。1.2 改進后的YOLOv4 目標檢測算法






2 實驗結果分析
2.1 去霧算法對比及結果分析





2.2 船只識別算法對比及結果分析



3 結論