郭延華 孫 磊 馬世超 何 宏
(天津理工大學電氣電子工程學院 天津 300384)
隨著經濟全球化的發展,海上運輸日益繁忙,交通事故時常發生,因此能否對船舶進行有效識別是一個極具挑戰性的問題。隨著目標檢測技術日益完善,船舶識別[1]技術領域得到快速發展,已然成為目標檢測[2]方向的一個研究熱點。但是海上識別環境較為復雜,輸入數據前/背景可辨識度較小且含有大量極小船舶目標,導致目標檢測器不能對船舶進行有效識別,為識別任務增加了難度。
目前,基于計算機視覺的深度學習算法[3]在目標識別領域取得了較好的效果。Krizhevsky等[4]首次將ReLU、Dropout和CUDA等技術應用到卷積神經網絡中,極大地提高了圖像分類的正確率,并掀起了深度學習研究的熱潮。Girshick等相繼提出基于區域問題的選擇性搜索算法[5]、感興趣池化結構[6]以及區域候選網絡[7],將目標特征與整個網絡進行權值共享,減少了網絡計算成本,極大地提高了識別速度和精度,但是對于船舶實時檢測仍是巨大的挑戰。為平衡識別速率和準確率的問題,Redmon等[8-10]提出基于回歸的快速檢測算法,直接回歸預測出船舶目標的邊界框坐標及類別,且滿足實時性的要求,但對于船舶目標相鄰較近且目標極小時,易出現漏檢、錯檢、重復識別的問題。黃于欣[11]利用OpenCV結合智能算法提取船舶運動軌跡,挖掘潛在特征,實現船舶軌跡的監控與跟蹤。朱廣華[12]將BP神經網絡與卡爾曼濾波算法結合,通過估計船舶運動參數來自適應識別船舶坐標,但是由于海上環境復雜,圖像像素較低,不能夠對極小船舶目標進行良好的識別。
針對上述問題,結合船舶識別任務的高速率和高精度的要求,本文提出一種基于極端尺度變化下的目標識別算法——YOLO-G算法,如圖1所示。該算法采用殘差連接方式構造深度卷積神經網絡,使用了65層卷積層構建特征提取器Darknet-65網絡,進行二維卷積操作提取船舶特征,輸出4個不同尺度的特征圖,分別為13×13、26×26、52×52、104×104。在每個特征圖尺度內,通過卷積核的方式進行特征圖的局部交互,構成模型的特征交互層YOLO層,從而輸出目標的中心坐標及類別標簽。網絡中引入先驗框機制并對傳統的交叉熵函數[13]進行改進,選用調制函數作為模型的損失函數。該損失函數不僅降低了簡單負樣本在訓練中所占的權重,完成了困難樣本的挖掘,使網絡收斂得更快,魯棒性更好。通過大量對比實驗驗證了YOLO-G網絡的有效性。

圖1 YOLO-G結構示意圖
快速檢測算法將目標識別問題轉化成回歸問題,對于輸入數據可以一次性將目標類別和位置信息預測出來。該算法棄用候選區域操作,而是選用整幅船舶圖片進行迭代,大幅度提升了檢測速率,滿足目標識別的實時性。快速檢測算法YOLOv3主要由兩部分組成,分別是特征提取器Darknet-53和多尺度YOLO層。
Darknet-53網絡由一系列的1×1和3×3的卷積層構成,每個卷積層后都連接著批量歸一化層(Batch Normalization,BN)和局部響應歸一化層(Leaky ReLU)[14]兩個神經網絡結構單元,其中兩個卷積層構成一個殘差卷積組,卷積組之間采用殘差連接方式,如圖2所示,構成殘差結構層(Residual,res)。通過這種新型神經結構單元連接方式,使Darknet-53有效地減少了參數計算量和網絡的復雜程度,能夠有效地提取目標的深淺層特征,并避免發生過擬合。

圖2 殘差單元結構示意圖
多尺度YOLO層使用三個尺度的特征圖進行高度特征融合[15],構成特征金字塔網絡,提取圖像深層語義信息,有效提高了對于不同尺度的目標識別的檢測效果。在網絡訓練時,采用多種圖像增強技術[16],擴充數據集的多樣性和豐富性,增強了網絡泛化能力及魯棒性。
為實現船舶實時識別分析和小目標高識別準確率的要求,本文對YOLOv3的網絡結構和識別算法進行改進,改進后的網絡命名為YOLO-G。該模型結構主要分為特征提取器Darknet-65和YOLO交互層兩部分(見圖1)。
1.2.1特征提取
Darknet-53網絡輸出3幅不同大小的特征圖,最大特征圖尺寸為52×52,可以完成常規尺寸船舶目標識別任務,但對于識別樣本分辨率較低,船舶目標尺寸極小等情況時,無法完成船舶目標檢測任務。因此,本文對原始網絡Darknet-53的網絡結構進行改進,在深層特征圖較大的深層結構處,加入12個卷積層和6個res層,構建網絡輸出4個不同大小的特征圖,最大特征圖尺寸為104×104,進行極小船舶目標的識別。改進后的基礎網絡命名為Darknet-65。
Darknet-65基礎網絡為全卷積網絡,通過網絡矩陣節點獲取目標的基礎特征和深層語義信息,具體網絡結構參數如圖3所示。輸入尺寸為416×416,通道數為3的圖片,每個卷積層都會對輸入數據進行批量歸一化操作和激活函數計算,第一個卷積層中通過32個3×3的卷積核,對船舶輸入信息進行提取,將其輸出作為第二層的輸入,再通過64個3×3、步長為2的卷積核進行遍歷圖像,實現下采樣操作,其后采用YOLOv3的殘差連接方式。

圖3 特征提取網絡結構圖
將3×3,1×1的卷積層構成殘差卷積組,輸出208×208大小的特征圖。在殘差卷積組中:
Si=Gi([S0,S1,…,Si-1])
(1)
式中:S0為網絡輸入的特征圖;Si為第i層的網絡輸出,[S0,S1,…,Si-1]表示特征圖間的拼接;Gi()為批量歸一化、激活函數及卷積操作的組合函數,實現第i層的非線性變換,Gi()操作為Conv(1,1)-BN-ReLU-Conv(3,3)-BN-ReLU。
接下來采用上述結構組成方法及下采樣操作,構建8×、8×、8×、4×的4組殘差卷積組,在該網絡的4倍、8倍、16倍、32倍降采樣處,分別輸出104×104,52×52,26×26,13×13大小的特征圖,并通過上采樣層進行特征圖融合,構建特征金字塔網絡,實現極小船舶目標識別。
1.2.2多尺度檢測
由于深層卷積神經網絡,其淺層結構輸出的語義信息較少,但其目標坐標信息準確,深層結構輸出的語義信息較為豐富,但其坐標信息較為粗略。YOLO-G通過多尺度預測直接在圖像上回歸出船舶邊界框和類別標簽,如圖4所示。

圖4 多尺度檢測示意圖
YOLO交互層被分為4個獨立的檢測分支,每個分支含有6個卷積層,并進行2倍的上采樣操作來提高特征金字塔的學習能力。將每個分支通過張量拼接(Concat)的方式與上采樣層進行連接,實現各級特征圖之間的特征交互,完成船舶圖像的淺層位置信息和深層語義信息的高度融合,使網絡學習到更加細粒度的特征,獲得更有價值的語義信息。多尺度特征融合公式為:
Xf=θf{Ti(Xi)}
(2)
(3)
式中:Xi為需要進行融合的特征圖;Ti為上采樣操作;θf為同尺度下的特征圖張量拼接;Xf為融合后的特征圖;θp為對得到的特征圖重構識別。
經過多尺度特征融合后,YOLO層最終輸出4個尺度分別為13×13、26×26、52×52、104×104的特征圖。由于特征圖越大感受野越小,故而其所對應的識別目標尺寸為大、中、小、極小尺寸。在檢測階段,以S×S特征圖為例,網絡將船舶圖像分成S×S個網格,若目標中心坐標處于某個網格中,則由該網格進行目標檢測,其中每個網格會輸出4個坐標信息和類別標簽。
1.2.3先驗框機制設計
為了使網絡快速準確地預測出目標的邊界框,本文對船舶數據集采用K-means[17]聚類算法,計算出合適的先驗框(anchor box),其中聚類分析使用候選邊界框與真實邊界框的交并比(IOU)。聚類公式為:
d(box,centroid)=1-IOU(box,centroid)
(4)
網絡輸出4個特征圖,每種特征圖設定3種先驗框,總共聚類出12種尺寸的先驗框,經聚類計算后,得到的先驗框尺寸分別為(4,5)、(9,8)、(11,18)、(22,11)、(15,29)、(46,25)、(25,64)、(93,57)、(52,127)、(86,197)、(141,261)、(260,313)。為每個特征圖每個網格分配三個先驗框,采用三個先驗框中與真實邊界框(Ground True,GT)的交并比(IOU)最大的先驗框來檢測目標。計算流程如圖5所示。YOLO-G通過直接預測相對于網格的位置信息,計算目標的邊界框坐標信息。邊界框計算公式為:
bx=σ(tx)+Cx
(5)
by=σ(ty)+Cy
(6)
bw=pwetw
(7)
bh=pheth
(8)
式中:tx、ty、tw、th是網絡預測的邊界框坐標;bx、by、bw、bh是真實邊界框坐標;Cx、Cy為相對于最上角網格的偏移量;σ()為邏輯函數,將數據歸一化為0到1之間;Pw、Ph為先驗框的寬度和高度。

圖5 船舶坐標計算示意圖
1.2.4損失函數設計
針對船舶小目標識別問題分析,發現輸入數據的前/背景較難區分,并且目標所占圖像比例遠小于背景所占的比例,數據集以負樣本為主,使網絡無法學習有用信息導致模型功能退化。針對以上情況,本文選用調制函數來處理樣本不平衡[18]的問題。
本文從YOLOv3的交叉熵損失函數(L)引入到調制損失函數(Modulation Loss,ML)。交叉熵函數公式:
L=-[mlog(n)+(1-m)log(1-n)]
(9)
把交叉熵函數整理之后可得:

(10)
式中:n的值是+1或-1;m是標簽(label)等于1時預測的概率,其值范圍為0到1。為方便計算用nt代替n,公式如下:
(11)
對交叉熵的改進,增加了一個系數αt,跟nt的定義類似,當label為1時,αt=α;當label為-1時,αt=1-α,α的范圍是0到1。公式如下:
L(nt)=-αtlog(nt)
(12)
在大量數據訓練過程中,便于分類的負樣本構成了損失值變化的主要部分,盡管αt有效地解決了樣本失衡問題,但是對于難/易樣本分類仍具有一定難度。故提出在交叉熵函數中加入調制函數:(1-nt)γ,γ>0,由此可知,當樣本類別失衡時,nt是很小的,當m=1時,n小于0.5被定義為類別失衡,反之亦然,因此調制系數就趨于1,交叉熵函數沒有太大改變;當nt無限接近1時(類別正確),調制系數接近于0對總損失值影響較小;當γ=0時,調制損失函數就是傳統的交叉熵,當γ增加時,調制函數也會相應的增加,如圖6所示。調制損失函數不僅解決了樣本失衡的問題,還有效減少梯度消失的情況并加快網絡收斂速度。

圖6 γ參數對損失值和邊界框概率的影響曲線
調制損失函數不僅能修正樣本權重,而且能調節困難樣本和簡單樣本的權重,損失函數公式如下:
ML(nt)=-αt(1-nt)γlog(nt)
(13)
本文首先通過構建特征提取器Darknet-65及多尺度交互層完成目標特征提取,獲得目標的坐標位置信息和類別標簽。其次引入anchor機制和改良損失函數,提高網絡模型的識別精度和識別準確率,從而構成新型單級檢測器YOLO-G。
為驗證YOLO-G網絡目標識別性能及實驗數據對比的公正性,本文在BOAT船舶數據集和公開數據集COCO[19]上評估YOLO-G網絡的性能。實驗基于Darknet[20]框架進行識別操作。具體實驗環境如表1所示。

表1 實驗環境
船舶目標大多為非合作目標,很難通過網上現有船舶圖像建立大規模船舶數據集BOAT。除了通過搜集網絡船舶圖片和海上實際船舶圖片外,本文通過SolidWorks 3D[21]軟件制作6類寬高比為2∶1的船舶目標模型,并引入CST電磁仿真軟件,CST參數設置如下:位置方向角為-90°~90°,仰俯角為0°,角移動速度為1°;雷達中心頻率為12 GHz,帶寬為200 MHz,選用垂直極化作為極化方法,采樣率為512,選用默認網絡分析模型尺寸,通過射線追蹤算法進行計算。最終仿真了6類船舶目標的181個方向角的BOAT樣本數據。
訓練樣本多樣性的缺失,容易導致模型發生過擬合。單單通過上述的數據樣本數量對于進行小目標的船舶識別,還未達到識別標準。因此對船舶數據集進行擴充,具體步驟如下:
(1) 加入噪聲。對原始船舶數據依次加入服從高斯分布的噪聲ki~K[0,θi],共進行3次,將原本數據樣本擴充了3倍。
(2) 數據增強技術。修改輸入數據的曝光度,色調和飽和度,利用數據抖動以及隨機旋轉、翻轉、平移策略生成更多的訓練數據,在數據集中加入大量含有極小目標的圖像以豐富數據集的多樣性,提高網絡模型對不同尺寸輸入樣本的魯棒性和泛化能力。通過上述2種技術手段,增強了BOAT數據集的多樣性。
BOAT數據集由10 000幅船舶圖片組成,船舶類別包含客船、漁船、帆船、軍艦、游輪、公務船等6類船舶。數據集將采用VOC數據集格式,在BOAT中選取70%的數據作為訓練集,將剩余數據作為測試集來驗證模型的識別性能。
2.3.1模型性能指標計算
本文使用YOLO-G和YOLOv3算法對BOAT數據集進行訓練,根據訓練過程中的損失值變化和P-R曲線來驗證網絡性能。P-R曲線的樣本插值算法采用VOC2007標準,也就是11點插值法(eleven-point interpolation)。其中準確率(precision)為被識別出來的真實船舶目標數量占所有被標識的目標數量,召回率(recall)是被識別出來的船舶目標數量占圖像中所有目標數的比例。先驗框與真實框的交并比(IOU)閾值標準設置為0.6。
準確率(precision)公式為:
(14)
召回率(recall)公式為:
(15)
式中:Tp為大于閾值0.5且被識別的目標數量;Fp為小于等于閾值0.5識別的目標數量;FN為未識別的目標數量。
2.3.2訓練結果分析
通過隨機梯度下降算法[22]對網絡進行端到端地訓練,整個訓練過程進行50 000次迭代,訓練平均損失值趨于0時停止訓練,得出相應的船舶識別模型,兩者的訓練損失變化及P-R變化分別如圖7和圖8所示。

圖7 訓練過程損失值變化曲線

圖8 P-R函數關系曲線
可以看出,YOLO-G模型訓練損失變化曲線和P-R曲線更加平穩,在相同訓練迭代次數下,其平均損失值遠小于YOLOv3模型,訓練結束后,當YOLO-G模型召回率較高時,依然取得較好的平均精度均值。
YOLO-G和YOLOv3模型訓練的參數基本一致,動量和權重衰減系數分別配置為0.9和0.000 5,批量大小設置為32,初始學習率設置為0.001,并依次降低為 0.000 1與0.000 01。15 000次迭代后,網絡模型處于局部最優化,即使通過減小學習率也無法使平均損失值顯著下降。YOLO-G和YOLOv3模型訓練的平均損失值(avg-loss)、最大召回率(max-recall)及最高平均精度均值(max-mAP)如表2所示。

表2 YOLOv3和YOLO-G訓練結果
由表2得知,YOLOv3網絡訓練的船舶識別模型的平均損失值為15.5。本文通過重構網絡架構和改進損失函數使平均損失值減少了12.1,最終平均損失值為3.4。模型訓練結束之后,在測試集上對比YOLO-G和YOLOv3的平均精度均值(mAP),mAP變化曲線如圖9所示。相同訓練迭代次數下,YOLO-G的平均精度均值會比YOLOv3高很多,YOLO-G模型的最高精度值出現在16 000迭代處,mAP值為85.6%(YOLOv3為80.3%),相比于YOLOv3模型增加了6.6%,且精度曲線更加平穩。這證明本文提出的網絡結構和損失函數算法進行模型訓練,很大程度上提升了模型的識別性能。

圖9 YOLOv3和YOLO-G的mAP變化曲線
2.3.3分類結果分析
為驗證YOLO-G算法的有效性,將通過與常用的單級檢測器算法對BOAT數據集6類船舶進行分類實驗。采用SSD513、DSSD513、YOLOv2、YOLOv3等單級檢測器算法與YOLO-G算法進行不同船舶的分類對比實驗,實驗結果如表3所示。實驗環境如表1所示,操作系統為Ubuntu 16.04,深度學習框架為Darknet,GPU為GTX 1080Ti。

表3 單級檢測器分類結果對比 %
表3給出了不同檢測算法對BOAT數據集的分類正確率。可以看出,SSD系列算法的分類正確率普遍較低,與YOLO系列算法的正確率差距較大,其中SSD513分類正確率最低,平均正確率為82.9%,其軍艦的分類正確率僅為79.6%,分類效果不好。YOLOv2算法的分類平均正確率為87.1%,軍艦的分類正確率為83.6%,與SSD系列相比具有較大的提升,可知YOLO網絡性能比SSD網絡更加優越,具有更高的分類檢測性能。YOLOv3的平均正確率為90.6%,略高于YOLOv2的正確率。本文算法YOLO-G的平均分類正確率為96.5%,較難分類的軍艦樣本正確率也達到了95.1%。相比于其他幾種分類算法,YOLO-G船舶分類的正確率得到大幅度的提升,可知YOLO-G算法可以很好地獲取船舶的邊緣特征,進而提取船舶的深層特征信息,可以很好地將不同類型的船舶區分出來,從而證明該算法的有效性及優越性。
2.3.4船舶識別分析
船舶目標占據比太低(目標尺寸是原圖像的0.1),輸入圖片分辨率低(目標像素小于32)、船舶目標特征遮擋等問題,依然是目標檢測器普遍存在的識別難題。針對以上問題,本文進行船舶目標識別研究,來驗證YOLO-G模型和YOLOv3模型在實際目標識別任務中的檢測性能,實驗結果如圖10所示。

(a) YOLOv3識別 (b) YOLO-G識別圖10 遮擋環境下的目標識別對比
圖10測試樣本目標特征部分被遮擋,有效識別信息重疊。圖10(a)識別結果中,將3個船舶部分特征重疊的目標標識為一個邊界框,同時將識別背景易區分的3個船舶小目標漏檢;圖10(b)中圖像特征遮擋部分,船舶目標都被準確識別,剩余較小船舶目標全部被識別,得出YOLO-G模型具有更高的召回率。可以看出,YOLOv3和YOLO-G都能識別船舶目標,但是YOLOv3訓練出的船舶識別模型具有較大的識別誤差和較小的召回率,可知新型單級檢測器YOLO-G具有較高的目標識別性能。
圖11測試樣本遠處目標與背景的顏色相近,前/背景不易區分,且小目標船舶相距較近,提升了識別難度。圖11(a)識別結果中,將背景處的高樓標識為船舶邊界框,同時對船舶目標產生重疊邊界框的情況。相反,圖11(b)中,將所有船舶目標都正確的識別出來,不存在漏標、錯標的情況。這證明了YOLO-G在圖像目標與背景較難區分時,可以良好地處理數據,提取目標特征,完成困難樣本的數據挖掘,對測試樣本的船舶目標進行精確定位及標識。YOLO-G模型有效地提升了困難樣本識別率低的問題,雖然在識別精度上仍有提升空間,但是YOLO-G模型在單級檢測器中具有較高的研究意義和識別性能。

(a) YOLOv3識別 (b) YOLO-G識別圖11 前/背景難區分的小目標識別對比
圖12測試樣本分辨率較低,且存在大量的極小船舶目標,增大了檢測器識別難度。圖12(a)識別結果中,半數以上的小目標未被標識邊界框,處于樣本中間區域的目標被正確識別。相反,圖12(b)中樣本所有船舶小目標均被正確識別出來,該模型在識別極小目標時具有較大的優越性。這表明YOLO-G模型的多尺度特征檢測,能夠較好地處理尺度變化如此之大的樣本,且保持較高的識別準確率。

(a) YOLOv3識別 (b) YOLO-G識別圖12 前/背景難區分的小目標識別對比
圖10-圖12的實驗結果表明,本文的YOLO-G模型能夠應用于多種識別環境的目標檢測,證明YOLO-G模型對于目標檢測具有極大的作用。
2.3.5先進的單級檢測器進行比較
為驗證YOLO-G網絡在目標識別上的性能及實驗數據對比的公正性,本文在具有挑戰性的COCO數據集上對YOLO-G進行模型定量評估,MS-COCO數據集具有類別豐富、場景復雜、小目標數量多的特點。通過COCO的標準數據指標AP、AP50、AP75(參數AP50, AP75代表閾值分別為0.5、0.75時進行檢測的精度值)對各算法進行對比實驗,并將實驗結果與最先進的單機檢測器算法進行比較。
將本文算法YOLO-G與SSD513、DSSD513、YOLOv2、YOLOv3算法進行精度比較,結果如表4所示。YOLO-G算法的平均精度值為34.9%,保持較高的識別率,與其他檢測器相比較,也占據一定的優勢,從而驗證了YOLO-G網絡識別的有效性。YOLOv3算法具有較高的識別水準,平均精度值為33%,但是由于其自身網絡結構限制,導致對于船舶小目標不能有效識別。YOLOv2網絡層數較少,不含有特征金字塔網絡,因而其平均精度值為21.6%。SSD513、DSSD513[18]分別取得了31.2%、33.2%在精度上表現良好,但是由于網絡層數較多,導致網絡計算量大,易出現收斂速度慢的情況。

表4 單級檢測器精度對比 %
本文提出一種應用于船舶目標識別的檢測算法YOLO-G。該算法將深度卷積神經網絡和多尺度特征圖進行特征融合,提取目標的坐標信息及類別,并通過先驗框機制和調制損失函數進一步提高模型的識別精度。將YOLO-G算法在BOAT數據集和MS-COCO數據集上與其他先進檢測器進行性能對比測試,證明了該模型比其他檢測器具有更高的識別精度和準確率,極大地提高了單級檢測器的目標識別性能。但是通過實驗數據可以看出,YOLO-G模型的識別精度仍具有一定的提升空間,接下來將通過擴充船舶數據集和“遷移學習”優化模型性能,提升YOLO-G的目標識別精度。