潘 慧,段先華,羅斌強
江蘇科技大學 計算機學院,江蘇 鎮江212003
近幾年,我國的海域頻頻受到鄰國的侵犯和非法捕撈,四大海域的監管任務日趨嚴峻,因此海上船舶識別成為海上交通安全領域的熱門研究方向。針對海洋背景下的船舶檢測問題,目前常見的解決方法有兩類:一類為成像系列,以基于合成孔徑雷達(synthetic aperture radar,SAR)的圖像[1]、紅外圖像[2]的檢測方法為主,它的應用比較成熟,但其成像未能包含目標豐富的光譜信息,且與人類視覺習慣相偏差,不利于網絡提取更豐富的特征信息,從而降低了檢測的精度。另一類為非成像系列,利用聲吶[3]等技術獲取船舶目標的相關信號,但是海上環境復雜,且通信傳輸通道復雜,對小目標的船舶檢測效果極差。
隨著卷積神經網絡(convolutional neural network,CNN)[4]和候選區域算法[5]的問世,基于深度學習的目標檢測取得了巨大突破。傳統的檢測算法結合了Region Proposal和CNN,代表性的two-stage算法有Fast-RCNN[6](fast region-based convolutional neural network)和Faster-RCNN[7](faster region-based convolutional neural network),雖然這類算法檢測精度很高,但是該系列算法需要在每個映射區域進行分類和回歸,模型參數的計算量非常大,導致其在實時應用上遭到限制。針對此類問題,出現了以YOLO(you only look once)和SSD(single shot multibox detector)[8]為主的one-stage 系列算法,其利用端到端的網絡一步完成候選框回歸和目標分類的任務,運行檢測速度較two-stage系列算法有近100倍的提升,為實時檢測打下了理論基礎。目前流行的檢測算法YOLOV3,在YOLOV1[9]和YOLO9000[10]的基礎上進行各項優化,包括多尺度特征融合,加入類FPN(feature pyramid network)[11]的金字塔結構。該算法平衡了精度和速度之間的差距,在保持檢測速度快的特點前提下,性能得到了很大的提升,較同期的SSD 算法,檢測速度快了3倍。YOLOV3的尺度特征圖來自不同層的融合,其特征檢測圖包含的目標信息更加豐富,進而檢測精度的優勢更明顯。
YOLOV3在各個領域應用時具有更好的泛化性,因此本文將采用該模型對海上船舶進行檢測[12],但是拍攝的海上船舶圖像[13]分辨率較低,其包含的船體信息不豐富,不同類別的船舶在形狀上擁有高度相似性,導致YOLOV3 模型在檢測過程中出現誤檢和小目標漏檢的現象。針對上述問題,本文的工作分為兩部分:首先,根據圖像信息不豐富的特點,在YOLOV3 的網絡基礎上增加檢測的尺度,并在高低層特征融合的過程中使用雙線性插值上采樣算法和判別相關分析(discriminant correlation analysis,DCA)融合策略,增強輸出特征信息表達能力,使得目標的細節信息更加突出。其次,優化損失函數,在MS-YOLOV3模型的基礎上,采用GIOU(generalized intersection over union)損失代替損失函數中邊框優化參數。前者主要是改進模型來適應真實環境拍攝的低分辨率圖像檢測任務,后者進一步優化模型參數,提升目標位置信息的精確度。在自建的船舶數據集上,對YOLOV3 和MS-YOLOV3 的各項性能進行對比,結果驗證了改進后的網絡在船舶圖像上取得的結果優于原始算法。同時以公開數據集Pascal VOC2007為訓練目標,將改進后的模型與原始模型、YOLO9000、SSD300 和Faster-RCNN 進行平均精度對比,改進后的網絡更勝一籌。
YOLOV3 模型[14]以Darknet-53[15]作為特征提取網絡,其由52 個卷積層和1 個全連接層組成,提取網絡為全卷積,取消池化層,解除了對輸入圖像尺寸的限制,圖像尺度變化通過卷積步長完成;此外,該網絡借鑒了ResNet[16]的殘差結構思想,以1×1 和3×3 的卷積方式組成Residual 類殘差結構,并在其內部加入快捷鏈路層Shortcut,保證了網絡結構在很深的情況下,網絡關鍵點仍然能夠正常收斂。雖然YOLOV3網絡檢測精度和速度比較優秀,但是對Shipdataset數據集的低分辨率圖像來說,該模型的預測網絡獲取的尺度特征信息還是不豐富,導致模型無法檢測部分小目標,且對于相似的其他類型船體或者圖中凸起的物體,容易出現誤檢的情況。基于此,本文對YOLOV3網絡進行了兩處修改。
在YOLOV3模型上增加一個檢測尺度[17],提高對小目標的識別能力。用于預測的尺度特征圖來源于網絡高層與低層的特征圖融合,高層的特征圖為上一個尺度特征圖上采樣的結果,而低層的特征圖為原圖經過多層卷積下采樣得到,因此新增檢測尺度特征圖的大小為104。改進的模型結構如圖1 所示,特征提取網絡仍然使用Darknet-53,輸入圖像的大小為416×416×3,原模型的3個尺度預測模塊,分別記為LF(52×52)、MF(26×26)和SF(13×13),新增尺度的預測模塊記為Add_LF(104×104),原圖經過Darknet-53下采樣8倍后,得到的特征輸出會在形狀顏色等細節方面突出優勢,將其作為尺度融合的低階特征,大小為104×104×128,然后將LF2 信息交互模塊的輸出進行上采樣。雖然最近鄰插值算法簡單,但是其操作不考慮采樣點附近的像素值,使得縮放后的圖像灰度值不連續,圖像質量損失較大,會有明顯的馬賽克和鋸齒,最終影響網絡訓練性能。因此利用雙線性差值算法將其尺寸放大至104,并與低階特征進行特征融合。之后利用一組信息交互模塊完成低層細節信息和高層語義信息的充分交流,得到的結果經過1×1的卷積更改通道數之后,輸出作為第四個尺度檢測的輸入。新增模塊的尺度感受野[18]大,更容易檢測到小目標的存在,能夠有效地改善小目標漏檢的現象。

圖1 MS-YOLOV3網絡結構圖Fig.1 Network structure of MS-YOLOV3
YOLOV3對于融合高低層特征圖,采用concat通道拼接算法,即將高低層特征圖的通道數直接相加,尺度不變,結果作為局部特征交互模塊的輸入,這種做法簡單,但是兩種特征集因相關性不強而產生冗余信息,這些信息影響后續其他策略的執行,從而造成目標漏檢的問題。為此,引入DCA[19-21]特征融合策略,此策略在CCA[22](canonical correlation analysis)的基礎做了改進,使得兩個特征集之間的差異更為突出,同時最大化兩者之間的相關性,更好地融合不同模式下提取的信息,進而使得經過交互模塊的待檢測輸入的特征信息更加豐富。
首先假設樣本數矩陣有C個單獨的類,因此n列數據可以分為C個單獨的類。假設ni列屬于第i類,對于i類的第j個樣本,即特征向量,記為Xi,j。和分別表示所有特征集合的平均值和第i類特征的平均值。由此得到的類間散布矩陣如下:

其中有:


r的最顯著特征可以通過Φ→Φbxφ映射得到,Wbx=ΦbxφΛ-1/2為轉移矩陣,歸一化Sbx并對數據矩陣進行降維(p→r)。記輸入的其中一個特征集為X,則X在空間上的投影X′的求解如式(4)和(5)所示:

同理可得另一輸入特征集Y在空間上的投影Y′,如式(6)和(7)所示:

為了讓X與Y的特征保持非零相關,利用SVD(singular value decomposition)[23]對兩者的協方差矩陣進行對角化,先定義S′xy=X′Y′T,那么對角化推算如下:

緊接著定義Wcx=UΣ-1/2,Wcy=UΣ-1/2,這樣就能得到。最后進行轉換,得到新的特征集X*、Y*,如式(9)和(10)所示:

該策略在本文實驗中的具體加入流程如圖2所示。

圖2 基于DCA的深度特征融合示意圖Fig.2 Schematic diagram of deep features fusion based on DCA
損失函數由三部分組成:邊框損失、類別損失和置信度損失。本節主要說明邊框損失帶來的問題。在YOLOV3檢測算法中,利用交并比(intersection over union,IOU)[24]衡量預測框和真實框的距離,利用損失函數迭代優化模型的網絡結構參數,邊框參數優化將預測的4個點看成一個整體進行回歸,采用的是范數L1或者L2距離[25]。但是在相同Loss的情況下,每組的預測框和真實框的IOU值參差不齊,這也就說明了根據損失局部優化得出的權重參數,并不能表示其預測的邊框最接近真實框,即IOU值最大。進一步講,模型的MSE損失和IOU預測距離在評判模型性能上形成不了等價關系。這種情況下通常的做法是,將IOU 作為邊框損失計算參數,解決上述的不等價問題。但是基于IOU 的損失面臨著一個問題:當預測框和真實框不相交,即IOU為零值時,不僅不能反映兩個邊框的距離,而且損失不可導,無法參與優化任務。此外,利用YOLOV3訓練Shipdataset時,出現了預測框遠偏離真實框的情況,導致預測位置信息不準確,極大地降低了整個模型的性能。
針對上述問題,在不能采用IOU_Loss的情況下,對模型損失進行了優化,引入廣義交并比(GIOU)[26-27]。
對于預測框A和真實框B,先求出A和B的最小凸包(包含AB框的最小包圍圈)C,再根據IOU的值得到GIOU,具體的計算公式如式(11)和(12)所示:

式中,C表示預測框和真實框的最小包圍框的面積,A?B表示真實框和預測框的面積之和減去兩者的重疊面積。
由上述公式,GIOU總是小于等于IOU,根據公式得其值位于區間[0 ,1],因此GIOU 的值位于區間[-1,1]。當預測框和真實框完全重合的時候,GIOU 的值為1。當預測框和真實框不重合,即IOU為0時,GIOU越接近-1,兩者的距離越遠。
GIOU作為邊框評價指標時,邊框代價函數如式(13)所示:

最后,整個模型的損失函數如式(14)所示。其中,第一部分為邊框損失。第二部分為類別損失,的取值是由網絡單元代表的邊界框是否負責預測某個對象決定,為參與預測的邊界框含有目標的置信度。若邊界框不參與目標預測,但是其與真實框的IOU值大于設定的閾值,那么Gij值為0,其他情況下,其值為1。第三部分為置信度損失,同樣也表示邊界框是否預測對象。

為了驗證改進的模型在海上船舶檢測中的有效性,本次實驗建立一個海上船舶數據集Shipdataset,該數據集包含兩類船舶品種,海上民用船(civilship)和海上軍用船(warship)。此次數據集的圖片來自網上搜索的海上拍攝視頻和圖片,因為視頻中存在大量相同內容,所以通過跳幀手段,即每20幀截取一張視頻片段,最后將得到的視頻片段進行人工篩選,剔除低質量不清晰的圖像,保留含有目標的圖像和海上背景圖像。
因為收集到的樣本數量不夠支撐網絡的訓練,所以通過數據增強的手段來增加樣本的數量。先對圖片進行裁剪和縮放,將圖片的大小固定為640×720,接著對預處理過的圖片隨機抽取1/3進行90°、180°和270°的旋轉和鏡像翻轉,再隨機抽取1/3 進行對比度和亮度的調整,以此提高模型的泛化能力,同時也能緩沖網絡過擬合的現象。最后利用labelImage 工具對已處理好的圖片進行目標框標注。將數據集按照比例劃分為訓練集、測試集和驗證集,具體如表1所示。

表1 海上船舶數據集Table 1 Shipdataset
實驗的條件以及訓練中的參數調整如下:為了節省訓練時間和加快損失的收斂,本次實驗的網絡結構各節點參數在backbone 上進行微調。使用隨機梯度下降法[28]進行損失優化,學習動量設為0.9,初始學習率設為0.001,權重衰減為5.0×10-4,Batch Size為64。前4.0×104迭代次數中學習率不變化,到4.5×104迭代次數中學習率為前者的10%,之后至最大迭代次數,學習率為當前值的10%,適當降低學習率,可以使模型更有效地學習,也能降低訓練損失。實驗所需要的環境和軟硬件設備如下:Win10,Darknet,CPU 為Intel Core i9-6700,GPU為NVIDIA GeForce GTX 2080,顯存12 GB等。
利用Kmeans 聚類算法[29],對數據集的邊框信息進行訓練,得到K值和平均IOU 的關系,如圖3 所示。當K大于15 時IOU 變化趨于平緩,因此實驗將選取12 個Anchor Box。根據網絡的輸出尺度個數,每個尺度按照感受野的大小分配3個相應大小的Anchor Box,即預測特征圖中每個單元格可預測3個Bounding Box。

圖3 平均IOU變化曲線Fig.3 Curve of average IOU
本實驗針對數據集中兩類船舶進行檢測,具體的評價標準為單類精確率(precision,P)、平均精度(mean average precision,mAP)和召回率(recall,R),如式(15)、(16)、(17)所示。

式中,TP表示被模型預測的真正類,FP表示模型將負例錯誤分類為正例,FN表示模型將正例錯誤分類為負類,Pcivil和Pwar分別代表民用船和軍用船的識別精確度。
3.3.1 上采樣算法對比
為了驗證插值算法對模型的影響,上采樣模塊分別以最近鄰插值和雙線性插值為基礎來訓練模型,然后采集模型中三個上采樣模塊輸出特征圖。圖4(a)為以最近鄰插值為主的上采樣模塊輸出,對比圖4(b),表現出較為明顯的馬賽克和鋸齒缺陷,細節信息的精度缺失嚴重,對比最大尺寸的采樣結果圖來看,前期的上采樣模塊采用雙線性插值算法,經過卷積操作之后,一定程度上保留了目標的形狀信息。因此模型的上采樣模塊將采用雙線性插值保證后期每個卷積模塊輸出的特征信息精度不會缺失,以此間接提升模型的識別準確度。

圖4 上采樣模塊的可視化對比Fig.4 Visual comparison of upsampling module
3.3.2 特征融合算法對比
為了驗證DCA融合策略的優勢,在模型的LF模塊所表示的尺度基礎上,對相關卷積層的輸出特征圖做灰度化處理。以Darknet-53 網絡提取到尺寸為52 的特征圖為輸入X,以MF2 模塊的輸出再上采樣得到的特征圖為輸入Y,對原始模型中直接通道拼接融合方法和改進模型中DCA融合方法進行比較。如圖5所示,經過相關性變換得到輸出X′和Y′,對比輸入的兩張圖,在最大化兩者相關性后,輸出圖中船體的信息更加豐富,再經過通道拼接,得到的尺度特征圖在目標形狀、背景和目標分割界線方面,與直接通道拼接融合的輸出圖對比,細節信息有著明顯的精度提升,且后者的視覺效果不如前者。由此可以看出,使用DCA 策略的融合模塊能夠加強細節信息的表達,豐富船體的特征信息,使得船體凸出部分的特征得到顯示。對于檢測層來說,細粒度特征豐富的輸出更容易檢測出目標的類別和位置信息,這也有助于提升整個模型的性能。

圖5 融合算法的特征可視化結果圖對比Fig.5 Comparison of feature visualization maps in strategy of scale fusion
如圖6所示,將DCA融合算法與卷積神經網絡常見的Addition 融合算法和Concatenation 融合算法進行類別準確度對比。從圖中可以看出,相比另外兩個融合算法,加入DCA融合策略的模型在每個類別上的AP值都有提升,雖然上升的幅度較小,但是對于改善模型性能也能起到推波助瀾的作用。

圖6 融合算法對模型準確度的影響Fig.6 Influence of different fusion methods on accuracy
3.3.3 損失對比
以MS-YOLOV3為實驗訓練模型,對損失函數收斂性進行驗證。兩種Loss 函數隨著迭代次數的變化曲線如圖7 所示。圖中的兩條曲線分別表示邊框損失使用MSE 的初始損失函數,和使用GIOU 的更改損失函數。雖然兩者在迭代一定次數之后都趨于零值,達到收斂狀態,但是邊框損失函數使用GIOU 之后,模型平均損失收斂更快,曲線整體值低于MSE,而且batch之間的縱坐標數值波動大幅度減小,穩定性增強。由此看出,使用GIOU邊框損失之后,模型的性能更加穩定,同時具有較高的魯棒性。

圖7 平均損失收斂曲線對比Fig.7 Comparison of average loss
如圖8所示,對船舶圖片進行目標預測和真實框的距離測試對比,圖8(a)(b)表示邊框損失使用MSE,圖8(c)(d)表示邊框損失使用GIOU,粉色框表示預測邊框,藍色框表示真實邊框。比較兩組結果,GIOU 邊框損失下的真實框與預測框的距離,明顯小于MSE 邊框損失的反饋結果,以此也表明GIOU在對邊框位置信息的預測精確度上還是起到了推進作用。

圖8 預測框和真實框的距離對比Fig.8 Distance comparison between prediction box and real box
3.3.4 原始模型與改進模型對比
以Darknet-53為基礎提取網絡,將原始YOLOV3與基于GIOU損失的MS-YOLOV3進行性能對比,實驗結果如表2所示。從結果可以看出,YOLOV3的尺度特征表達的信息不充分,兩個類別的精度只達到了65.32%和79.34%,平均精度達到72.34%。而MS-YOLOV3 充分融合更低層的特征信息,單類別精度提升了5.9~9.9個百分點,檢測平均精度提升了7.9個百分點,同時召回率也提升至82.45%。因此從精確度可以看出MS-YOLOV3在Shipdataset數據集上的優勢。

表2 兩種模型的精度和召回率對比Table 2 Comparison of precision and recall of two models
通過訓練好的模型,對驗證集圖片預測后,得到每個類別的置信度得分,分別對兩個類別的樣本進行排序,計算Precision 和Recall,并繪制每個類別的P-R 曲線,如圖9 所示。圖9(a)(b)表示民用船在兩個模型測試下精度和召回率的關系,圖9(a)表示YOLOV3 驗證結果,圖9(b)表示MS-YOLOV3測試結果。由于民用船的船體結構復雜,其類別精確度整體還是偏低,但是根據P-R 曲線來看,經過MS-YOLOV3 測試得到的Recall還是提升了10 個百分點左右。圖9(c)(d)表示軍用船的測試結果,圖9(d)對比圖9(c)原始模型的測試結果,Recall 有小幅度提升,每個召回率對應的精度提升很大,說明MS-YOLOV3 預測錯誤類別的概率減小,兩個指標都得到改善。

圖9 YOLOV3和MS-YOLOV3對兩類船舶驗證的P-R曲線Fig.9 P-R curve of two types of ships of YOLOV3 and MS-YOLOV3
為了進一步驗證改進模型的有效性,對比不同的改進措施下YOLOV3 的運行時間,如表3 所示。很明顯,四種改進方案下的模型在運行時間上整體處于上升趨勢,特別是多加一個檢測尺度之后,網絡層數增加,計算參數量變大,運行速度漲幅較大。最終改進模型的檢測精度提升了7.9 個百分點,但是模型的運行速度相較于原始模型上升了3.34 ms。綜合考慮,犧牲較小的速度換取預測準確度的大提升,這種方案在本場景中還是可取的。

表3 不同改進方法對模型運行時間的影響Table 3 Influence of different improvement methods on running time of model
根據訓練出來的權重文件對海上船舶圖片進行預測。如圖10 所示,對部分船舶進行目標檢測,MS-YOLOV3可以精確地預測出船舶類別和位置信息。

圖10 船舶類別識別Fig.10 Identification of ship classes
為了更加直觀地觀察神經網絡的運作情況,如圖11所示,對MS-YOLOV3預測網絡中四個尺度模塊的卷積層輸出進行可視化。

圖11 四個尺度預測模塊的卷積層可視化Fig.11 Convolutional layer visualization of four scale prediction modules
在船舶數據集上對MS-YOLOV3 和原始YOLOV3進行效果測試,實驗結果如圖12所示。圖12(a)(b)(c)(d)為原算法的樣本測試效果。可以看出,在圖12(a)中,由于船體相似,小船的預測邊框出現嚴重的類別偏差。在圖12(b)中,原算法將凸起的人和文字誤檢為船舶。在圖12(c)中,選取分辨率較低的圖片進行測試,發現對于小一點的目標,原算法無法檢測。在圖12(d)中,除了出現上述問題之外,目標雖然在預測之中,但是并沒有完全覆蓋到,位置信息預測不精確。圖12(e)(f)(g)(h)表示MS-YOLOV3 的樣本測試效果,對比來看,對網絡結構進行改進,增加的尺度使得圖12(g)(h)中不清晰的小目標得到發現。同時尺度特征融合階段采用DCA策略,增強兩個特征集的相關性,使檢測圖的語義和細節信息得到充分的交互,增加了細粒度特征信息,如圖12(e)(f)所示,船舶的誤檢情況得到改善。此外優化先驗框和加入GIOU邊框損失,也著實提高了邊框位置信息的精確度。

圖12 YOLOV3和MS-YOLOV3對船舶預測效果對比Fig.12 Visual comparison of ship prediction between YOLOV3 and MS-YOLOV3
為了驗證采用GIOU損失的MS-YOLOV3在目標檢測任務中的可靠性,將其與其他流行檢測算法在Pascal VOC20007 數據集上做性能對比。實驗以threshold 為0.5進行平均精度性能評估。實驗結果如表4所示,相比較SSD300、Faster-RCNN以及YOLO系列的模型訓練平均精度,MS-YOLOV3的優勢還是很明顯的。

表4 不同模型在Pascal VOC2007數據集上的實驗結果Table 4 Experimental results of different models on Pascal VOC2007 dataset
針對YOLOV3模型對船舶識別中出現的誤檢和漏檢問題,本文提出了基于YOLOV3 模型改進的船舶檢測算法。以民用船和軍用船作為研究對象,海上環境為研究背景。首先通過剪裁、縮放、旋轉等手段,增加正樣本的數量,為緩沖過擬合現象打下鋪墊。其次利用維度聚類的算法對采集的船舶數據集進行anchor box 的常見尺寸的聚類,以提高模型對目標位置的檢測準確度。接著在網絡模型增加檢測尺度,并在高低層尺度融合過程中加入DCA融合策略,豐富了待檢測輸入的細粒度,減小模型對目標的誤檢率和漏檢率。雖然多尺度模塊拉低了運行速度,但是準確度提升7.9個百分點,速度小幅度降低對于場景目標檢測還是可取的。最后優化損失函數,采用GIOU 作為邊框損失函數的參數,以此提高模型對目標的檢測定位能力。實驗結果表明,相對于YOLOV3 模型,改進后的MS-YOLOV3 模型對船舶的檢測精度有很大的提高,同時將改進模型與其他流行檢測算法在Pascal VOC2007 數據集上做精度對比,實驗結果驗證了本文提出的改進方法的有效性。下一步工作主要對本文提出的船舶數據集Shipdataset進行優化,同時針對民用船的船體復雜特征的情況,繼續改進模型,使得其對民用船的檢測精度得到提升。此外,針對模型計算量較大的情況,需要學習研究模型剪枝方面的策略。