段敬雅,李 彬+,董 超,田聯房
(1.華南理工大學 自動化科學與工程學院,廣東 廣州 510641;2.國家海洋局南海調查技術中心, 廣東 廣州 510300)
傳統的船舶目標檢測通常包含目標分割、候選區域生成、特征提取、分類器分類等步驟[1-4],此類算法的局限性在于人工設計的特征泛化能力較差,在復雜多變的實際海域場景中檢出率較低。近年來,深度學習在目標檢測和識別領域表現突出。Girshick等提出了R-CNN模型[5],將卷積神經網絡應用到目標檢測領域,隨后改進的Fast R-CNN[6]、Faster R-CNN[7]模型不斷提高檢測精度。YOLO[8]實現了端到端的實時目標檢測,缺陷在于檢測精度較低。YOLOv2[9]改進了YOLO結構,保證實時檢測的同時大幅提高了檢測精度。
將卷積神經網絡應用到船舶檢測識別領域是目前的發展趨勢。王新立等[10]基于殘差網絡設計CNN模型完成帆船、運輸船和小型船的檢測。Sui Tingting等[11]結合CNN模型、Itti模型與多特征融合實現船舶識別;楊亞東等[12]基于顯著性檢測算法將船舶目標從背景中分離,結合改進的CNN識別船舶。但這兩種識別方法僅適用于背景簡單的單一船舶目標,無法直接應用到多船舶目標場景中。
上述研究的局限性在于:無法利用單一的CNN模型在實現船舶檢測的基礎上,完成特定類別的船舶分類任務。針對這一問題,本文提出基于YOLOv2結合SVM的船舶檢測分類算法,實現了復雜背景下多船舶目標的有效檢測與識別,具有實用意義。
傳統船舶檢測方法提取的特征泛化能力差, 在光照變化劇烈、背景復雜、目標尺寸多樣的船舶檢測任務中檢出率較低。為克服這一問題、實現復雜背景下多船舶目標的有效檢測與識別,本文提出一種基于YOLOv2和SVM分類器的船舶檢測分類算法,算法框架如圖1所示。首先基于YOLOv2網絡進行船舶目標檢測,然后提取所檢測船舶區域的深度特征,最后對特征進行全局平均池化和PCA降維,通過SVM分類器實現分類。

圖1 基于YOLOv2和SVM分類器的船舶檢測分類算法流程
為了完成船舶檢測和3類船舶分類的工作,本實驗采用的數據集來源于海上實拍圖像數據和網絡圖像數據,船舶類型主要包括漁船、貨船、艦艇這3類。數據集中船舶目標的尺寸、角度、光照、背景差異較大,包含有霧、海浪大、逆光等海況較差和背景復雜的情況,檢測難度較大。針對這些情況,卷積神經網絡可通過訓練學習數據的特征,具有較好的檢測精度。YOLOv2作為端到端的目標檢測框架,比結合region proposal和卷積神經網絡的R-CNN系列目標檢測框架更容易進行遷移學習,因此本文選擇YOLOv2作為船舶檢測框架。但YOLOv2在VOC和COCO數據集上得到的anchor boxes并不完全適用于船舶目標,于是本文對YOLOv2模型進行了微調訓練:首先基于K-means聚類算法對訓練樣本的目標框進行聚類,得到適用于船舶數據的anchor boxes;然后選擇不同數目、規格的anchor boxes,對YOLOv2模型進行訓練和測試。其中將數據集隨機分為訓練集和測試集,訓練集1670張,測試集381張。實驗流程如圖2所示。

圖2 船舶檢測實驗流程
用于船舶檢測的YOLOv2模型訓練及預測算法流程圖如圖3所示。為了使得模型更有利于小目標的檢測,將待檢測船舶圖像縮放為608×608×3大小作為輸入,經過N個卷積層、池化層后輸出大小為19×19×(B×(5+1))的特征。模型將輸入圖像劃分為19×19個網格,借鑒Faster R-CNN的anchor boxes思想[7],在每個網格上預測預先定義B個先驗框,在這些先驗框的基礎上預測船舶位置。每個預測框包含6維信息:框的中心坐標x、y,框的寬度w、高度h,置信度Confidence和框內物體屬于船舶目標的得分。置信度公式如式(1)所示
Confidence=P(boat)×IOU(pred,truth)
(1)
式中:P(boat)表示預測框包含船舶目標的概率,IOU(pred,truth)表示預測框和真實框的交并比,公式如式(2)所示
(2)
檢測時,將19×19×B個預測框根據得分從大到小排列,去掉低于得分閾值的預測框,再進行非極大抑制去掉重復率較高的預測框,最終得到船舶目標框。

圖3 用于船舶檢測的YOLOv2模型訓練及預測算法流程
本實驗對訓練樣本中的2872個真實船舶目標框的寬高進行K-means聚類,最終確定k個聚類中心。這k個聚類中心值就是k個anchor boxes的寬度和高度。聚類的目標函數如式(3)所示
(3)
式中:K為聚類中心個數,N為真實目標框的個數。box[i]表示第i個聚類中心框,truth[j]為第j個真實目標框,IOU(box[i],truth[j])是聚類中心框與真實目標框的交并比。目標函數越小則交并比越大,說明聚類中心與真實目標框的寬高越接近。
聚類結果如圖4所示。橫坐標為聚類中心個數,縱坐標為平均交并比averageIOU,公式如式(4)所示
(4)
式中:K為聚類中心個數,N為真實目標框的個數。該式表示所有真實目標框與重疊率最高的聚類中心框的交并比的平均值。

圖4 聚類結果
從圖4可看出averageIOU隨著聚類中心數目的增大而增大,當聚類中心數目大于3后,averageIOU的增大趨勢變平緩。綜合考慮模型復雜度和averageIOU,選擇聚類中心數目為4和5時對應的聚類結果作為訓練YOLOv2網絡的anchor boxes規格。
表1對比了YOLOv2和本文所得anchor boxes的寬高。從表1可看出本文所得anchor boxes的averageIOU高于YOLOv2,且大部分anchor boxes的寬度大于高度,符合船舶的形狀特征。

表1 anchor boxes參數對比
由于本文以YOLOv2作為目標檢測網絡,YOLOv2本身具有良好的特征提取能力,SVM分類器對小數據集的泛化能力更好。因此本文從訓練好的YOLOv2網絡提取船舶區域的深度特征,通過全局平均池化層將深度特征轉化為特征向量,經PCA降維后送入SVM分類器實現分類,實驗流程如圖5所示。其中特征提取部分算法實現如下:
深度特征提取算法
輸入:N張樣本,設置batch size=16
步驟1 加載特征提取網絡權重
步驟2 Fori=0 toN/ batch size do
步驟3 預處理一個batch輸入圖像
步驟4 特征圖平均池化
步驟5 返回16×X維特征向量和16個標簽
步驟6 縱向拼接特征向量及標簽
步驟7 End
輸出:N×X維特征和N個標簽

圖5 船舶分類實驗流程
本文選擇徑向基函數作為SVM分類器核函數。對于SVM分類器參數的優化,本文選擇6組不同的gamma和C參數,在訓練集上采用10折交叉驗證的方法驗證不同參數對分類器準確率的影響,結果見表2。由表2結果可知,當SVM分類器參數為gamma=2-11、c=2時,本文方法取得最高分類準確率,因此設置分類器參數為gamma=2-11、c=2。

表2 SVM分類器不同參數下的分類準確率/%
本實驗從原始數據集圖像中提取YOLOv2檢測出的船舶區域作為新的分類數據集。其中訓練集有809張貨船,980張漁船,559張艦艇;測試集有193張貨船,307張漁船,126張艦艇。部分實驗樣本如圖6所示。

圖6 數據集示例
實驗平臺軟硬件配置為:Intel(R) Core(TM) i7-6820HQ CPU 2.70 HZ,16 GB內存,NVIDIA Quadro M1000M,Windows64位操作系統。配置python3.5.2,Tensorflow1.8.0,opencv3.4.2,GPU加速庫為CUDA9.0和CUDNN7.0。
為了驗證通過聚類取得訓練集中船舶尺寸的先驗信息是否能提升YOLOv2模型對船舶的檢測性能,本實驗對YOLOv2模型進行3組微調訓練,分別采用YOLOv2的原始anchor boxes和聚類得到的兩組anchor boxes,參數見表1。訓練時batch size設置為16,為加速收斂選用沖量常數0.9,為防止過擬合選擇權值衰減系數0.0005。訓練30個迭代,前10個迭代的學習率為10-4,為促進模型優化后20個迭代的學習率降為10-5。在目標檢測中精確率(precision)和召回率(recall)是一對互為矛盾的指標,因此本文選擇平均精確率(average precision,AP)以及幀率(FPS)作為模型評價指標。采用不同anchor boxes的YOLOv2模型在測試集上的檢測性能見表3。

表3 不同anchor boxes下模型檢測性能對比
從表3可看出, anchor boxes數目為5時,模型對船舶目標檢測的平均精確率為80.5%,優于anchor boxes為4時的表現。相比于采用YOLOv2的原始先驗框,采用聚類所得先驗框使模型的平均精確率提高了7.6%。實驗結果表明,通過K-means聚類取得船舶尺寸的先驗信息提升了YOLOv2模型對船舶的檢測性能。
為了驗證本文改進的YOLOv2模型優于傳統目標檢測方法, 對比Selective Search[13]和本文方法在自建船舶數據集上的檢測性能。Selective Search方法基于顏色、紋理等特征對圖像進行聚類分割并生成候選框,然后提取候選框的Fhog[14]特征,用SVM分類器判斷候選框是否為船舶目標。實驗結果見表4,Precision-Recall曲線如圖7所示。

表4 Selective Search與本文方法的檢測性能對比

圖7 Precision-Recall曲線對比
結合表4和圖7可知,Selective Search檢測方法的召回率、平均精確率以及檢測速度遠低于本文方法。對于光照、顏色、背景多變的船舶圖像,人工設計的Fhog特征泛化能力不足,難以從大量復雜的候選框中準確識別出完整的船舶目標。
對比Selective Search和本文方法分別在逆光條件下、有霧和海浪等復雜海況下、復雜背景下的船舶檢測效果,如圖8和圖9所示。對比圖8(b)、圖8(c)、圖8(e)、圖8(f)、圖8(g)和圖9(b)、圖9(c)、圖9(e)、圖9(f)、圖9(g),Selective Search易漏檢小尺寸的船舶目標,本文方法對小尺寸船舶目標檢測效果較好;對比圖8(a)、圖8(h)、圖8(i)和圖9(a)、圖9(h)、圖9(i),Selective Search分別將海面和海岸背景誤檢為船舶,本文方法可克服背景干擾,準確檢測出船舶;對比圖8(d)和圖9(d),Selective Search對多個船舶目標僅給出一個預測框,本文方法可準確定位多個船舶目標。

圖8 Selective Search檢測結果

圖9 本文方法檢測結果
綜上所示,本文方法能克服光照、海浪以及復雜背景對船舶檢測的影響,在復雜多變的實際場景下保持較高的召回率,優于傳統目標檢測方法。
為了驗證本文提出的基于YOLOv2模型提取深度特征+SVM分類器分類方法的有效性,分別提取conv5_1、conv6_1、conv6_5、conv8層深度特征,對比不同特征層的分類效果,實驗結果見表5。由于提取的船舶區域尺寸較小,設定特征提取網絡輸入尺寸為224×224。其中conv5_1層特征大小為14×14×521,其余3層特征大小為7×7×1024。評價指標為分類準確率accuracy,如式(5)所示
(5)
從表5可看出:conv6_1層特征在SVM分類器中取得90.06%的分類準確率,比conv5_1、conv6_5、conv8層特征具有更好的識別能力;在此基礎上將全局池化后的conv6_1層特征向量分別與conv5_1、conv6_5、conv8層特征向量融合,最終conv6_1+conv6_5特征組合達到90.87%的分類準確率。

表5 各層特征的分類準確率對比/%
為了驗證本文分類方法的優越性,對比傳統Fhog[14]+SVM、AlexNet[15]和本文方法在測試集上的分類準確率,實驗結果如表6和圖10所示。其中對AlexNet進行遷移學習,固定卷積層權重,在訓練集上訓練fc6、fc7、fc8全連接層,使用小批量梯度下降法訓練時分類準確率的變化如圖11所示。

表6 不同算法的分類準確率對比/%

圖10 不同算法10折交叉驗證結果對比

圖11 小批量梯度下降訓練時AlexNet分類準確率的變化
對比表6和圖10數據可知,本文提取的深度特征的識別能力遠優于Fhog特征。相比于AlexNet模型,本文方法將分類準確率提高3.9%。實驗結果表明本文方法可較好提取船舶特征,提高漁船、艦艇、貨船的分類準確率。
為了驗證本文YOLOv2-SVM算法可有效識別艦艇、漁船、貨船3類船舶,比較本文算法與YOLOv2算法對3類船舶目標的檢測識別效果, 平均精確率見表7。由表7可知,本文算法相比于YOLOv2模型將mAP提高了3.5%,但由于GPU硬件性能不足,模型的檢測速度還有待提高。本文算法的檢測分類結果如圖12所示,實驗結果表明本文算法可準確定位視野范圍內多個船舶目標,并識別出漁船、貨船、艦艇。

表7 YOLOv2與本文算法的AP值對比

圖12 本文算法檢測分類效果
本文首先通過K-means算法聚類獲得船舶尺寸的先驗信息,定位船舶目標,然后融合conv6_1與conv6_5卷積層特征識別船舶類別,在實現海上船舶檢測的基礎上完成特定類別的船舶分類。實驗結果表明,本文提出的YOLOv2-SVM檢測分類框架能克服光照、海浪以及復雜背景對船舶檢測的影響,在實際海域場景中保持較高的檢測精度以及較高的分類準確率,有效實現了復雜背景下多船舶目標的識別。但本文目前只研究了艦艇、漁船、貨船這3大類船舶的識別,下一步還需要擴大數據集,實現海上各類船舶的準確自動檢測和更細分類。