方 健,劉 坤
上海海事大學 信息工程學院,上海 201306
艦船是海上活動的重要載體,基于計算機視覺的艦船目標檢測已經應用到實際的船舶管理系統(tǒng)中,因此靠岸和離岸艦船的檢測在軍事和民用領域都有著廣泛的應用。目前,艦船目標檢測采用的平視視角的自然圖像具有數據量小、分辨率高、含有豐富的顏色和紋理信息、數據容易獲取等特點,已成為目標檢測領域重要的來源。但此類圖像中多目標情況下的艦船目標很容易被多目標給遮擋,造成小目標漏檢、分類錯誤等問題,如何提高檢測的精度和速度,滿足實際應用中海洋安防的需求是急需解決的問題。
傳統(tǒng)的艦船目標檢測算法分為三類,如基于統(tǒng)計的目標檢測[1]、基于知識的目標檢測[2]、基于模型的目標檢測[3],這類算法需要人工提取目標特征,如SIFT(尺度不變特征變換匹配算法)、HOG(方向梯度直方圖特征)、SURF(加速穩(wěn)健特征)等。隨著深度學習理論的日趨成熟,基于深度學習的算法都比傳統(tǒng)的目標檢測算法有著更大的優(yōu)勢。目前基于深度學習的目標檢測方法主要分為兩種模式,一種是以Fast-RCNN[4]、Faster-RCNN[5]為代表的兩級檢測器,基本特征首先由主干網提取,其次區(qū)域建議網絡(RPN)[6]根據預先定義的錨定值生成感興趣區(qū)域(ROI)提案,然后將這些方案的特征調整為固定大小,并由分類和回歸網絡的兩個分支進行處理,最后檢測結果由非極大抑制獲得;另一種是以YOLO[7]和SSD[8]為代表的單級檢測器,網絡直接預測潛在對象在多個特征圖上的位置和類別標簽,而不需要裁剪和調整ROI建議,處理方案更簡單,并且比兩級檢測器能夠更快地檢測目標。隨著目標檢測框架的改進,單級檢測器的檢測精度也可媲美兩級檢測器,因此更多學者研究單級檢測器,甚至將單級和兩級檢測器相結合,這些算法已應用于船舶檢測與識別領域。岳邦宇等[9]提出一種基于改進的Faster-RCNN的艦船檢測方法將空洞卷積和VGG相結合,設計了一個特征提取網絡,并將其應用于SAR艦船目標檢測,提高了對小型艦船目標的檢測能力。劉相云等[10]針對高分辨率遙感影像場景復雜,提出了一種改進的RFB Net遙感影像目標識別算法,在RFB Net模型的基礎上構建特征金字塔網絡,融合高層語義信息和低層特征信息,提高了網絡識別能力。Yu等[11]對傳統(tǒng)的YOLO算法進行改進,采用網絡結構改進、輸入圖像多尺度變換、目標幀維數聚類等方法,提高了小目標的檢測速度。Liu介紹了一種a receptive fields block net detector(RFB Net),基于SSD的主干,結合了Inception[12]、空洞卷積的思想,來模擬人類的視覺感知,在保證檢測速度的同時,檢測的效果進一步提升。
基于此,本文在RFBnet檢測算法的基礎上,提出了一種改進RFBnet網絡的目標檢測方法。首先,為了利用淺層和深層特征圖的優(yōu)勢,分別設計池化特征融合模塊和反卷積特征融合模塊進行特征融合形成新的六個有效特征層;其次,對于以VGG為基礎網絡的RFBnet算法,針對其淺層提取能力不足導致小目標檢測效果不好的缺點,對新的前三個有效特征層分別設置了對應尺度的DB1、DB2、DB3卷積塊,用于增強該3層的特征信息;然后,為了提高感受野信息提取的效率,本文還融入注意力機制,讓卷積更加關心目標中心區(qū)域的信息;最后引入聚焦分類損失來改進原來的損失,以提高網絡的檢測性能。實驗結果表明,改進的RFBnet方法可以改善多目標情況下的艦船目標檢測,該方法可應用于實際的海洋安防工作中。
本文針對可見光成像的船只檢測開展研究,本文選取了一個包含7 000張1 920×1 080分辨率的船只數據集SeaShips[13],該數據集包含六類船只類型,所定義的六類船只基本上可以覆蓋近海區(qū)域內出現(xiàn)的所有船只并充分考慮到背景、光照、視角、可見船體占比、尺度以及遮擋情況,部分圖像如圖1所示。該數據集采用標準的PASCAL VOC標注格式,每一張圖片都精確標注了目標的標簽和邊界框,在訓練前進行預處理,將圖像大小調整為300×300像素。其中ore carrier類有1 141張,bulk cargo carrier類有1 129張,container ship類有814張,general cargo ship類有1 188張,fishing boat類有1 258張,passenger ship類有705張,六類混合類別(圖像中有船只相互遮擋)的有765張,訓練集、驗證集和測試集按照7∶2∶1的比例隨機劃分。

圖1 數據集部分樣本示例Fig.1 Partial sample of data set
RFBnet算法[14]采用類似Faster-RCNN中的Multibox原理[15],網絡的輸入為3通道RGB圖像,特征圖共有6層,分別為BasicRFB_a P3、BasicRFB P3、BasicRFB P5、BasicRFB P6、Conv2d P7、Conv2d P8,尺寸分別為38×38、19×19、10×10、5×5、3×3、1×1,通道數分別為512、1 024、512、256、256、256。RFBnet算法采用主干網絡VGG-16提取特征,每一個特征單元分別用于學習其在原圖中感受野區(qū)域內的信息,標簽框的信息存在于該標簽框中心點對應的特征單元在原圖上的感受野區(qū)域中,該網絡特征中的每一個特征單元分別用于學習以其對應原圖像素的信息,最后將該特征分別送入分類網絡與定位網絡用于學習各單元感受野中標簽框的信息。
本文保留了RFBnet基本模型框架,傳統(tǒng)的RFBnet算法對小目標物體檢測效果較差。因此做了以下改進:(1)為了利用淺層和深層特征圖的優(yōu)勢,分別設計池化特征融合模塊和反卷積特征融合模塊來提高各層之間的聯(lián)系;(2)設計了融入注意力機制的膨脹卷積模塊作用于原始圖像的特征提取;(3)引入聚焦分類損失來改進原來的損失,以提高網絡的檢測性能。
本文首先是BasicRFB_a P3、BasicRFB P3和P6、P7、P8分別與P5進行特征融合并做L2 norm歸一化操作,同理,其他特征層做相同的操作,得到六個新的特征層;然后是DB1、DB2、DB3模塊分別與新的BasicRFB_a P3、BasicRFB P3、BasicRFB P5進行特征融合[16],之后添加了一個3×3卷積層用于增加網絡的學習能力同時降低特征維度并獲得最終前三個有效特征層,這樣一共形成11 620個先驗框,預測結果就會對這11 620個框分別進行調整,最后判斷調整后的框是否包含所需要的物體,如果有的話就把他標出來,當然利用先驗框得到的框有一些會重合,所以還需對得分和重合情況進行判斷,利用非極大抑制的辦法找到所需要的框并且標出所屬的種類。如圖2所示為改進的RFBnet模型框架。

圖2 改進的RFBnet模型框架Fig.2 Improved RFBnet model framework
RFBnet主干網絡提取特征的每個單元分別用于學習其在原圖中感受野區(qū)域內的信息,而較淺網絡層的特征所學習的標簽框尺度較小,那么想要提高學習標簽框信息的準確率需要讓網絡在學習的過程中不斷縮小各特征單元的感受野區(qū)域,同時也要保證該感受野區(qū)域內的信息包含特征單元對應位置的標簽框信息。相較于深層特征,淺層特征的感受野區(qū)域更小,數量也更多,導致淺層學習起來難度更大,因此可以將重心放在前三層特征中,在設計膨脹卷積的卷積核尺寸時參考了RFBnet的先驗框(priorbox)尺寸,RFBnet算法中先驗框中心坐標為:((offset+n-1)×step,(offset+m-1)×step),step是特征圖相對于原圖的比值,offset是一個比值,一般取0.5,特征圖第(n,m)個特征單元對應的先驗框中心坐標為:((offset+n-1)×step,(offset+m-1)×step),即每相鄰的兩個先驗框中心坐標總是相差(step,step)。
本文提出一種步長為step的卷積網絡用于提取特征單元感受野區(qū)域內的信息,卷積塊中卷積核的步長均為其所對應的step,卷積核的尺寸均大于標簽框的尺寸,這樣讓信息提取得更加充分,每進行一次卷積,都是其主干網絡層中特征單元感受野區(qū)域內的信息進行的一次采集,由于卷積的步長為step,那么經過一輪卷積,DB提取特征的寬與高正好是原圖寬與高的step分之一。同時需要讓每個卷積核充分的覆蓋每次卷積所學習的標簽框,參考先驗框的生成方法,BasicRFB_a P3、BasicRFB P3、BasicRFB P5層特征單元對應的多個先驗框最長的邊分別為42、104、192,于是想到3種尺寸分別為60×60、120×120、240×240的卷積核去學習每個標簽框的信息,這里卷積尺寸要比先驗框稍大的一個重要原因是,在RFBnet算法中標簽框是先驗框經過真實框調整后的框,往往正例的先驗框與真實框會存在一定的偏差。
對于一個需要檢測的目標,當卷積核掃過靠近目標中心區(qū)域內的像素時,卷積核會將注意力放在中心點附近。對于一個遠小于60×60分辨率的目標,往往目標周圍很大一塊區(qū)域的像素是無效的特征,所以單純使用一種尺寸的卷積核去學習特征單元感受野區(qū)域內的信息,效率并不高,于是提出一種給卷積添加注意力機制的卷積塊結構,DB1結構如圖3所示,通過給60×60的卷積并行添加了30×30和15×15尺寸的卷積分支。

圖3 融入注意力機制的DB1Fig.3 DB1 into attention mechanism
DB1對應核的尺寸達到了240×240的分辨率,雖然步長設為s tep(DB3卷積核的步長為32)可以減少巨大的計算量,但是對于3通道的原圖,完成單通道輸出就需要240×240×3的參數量,若是匹配特征圖的通道數,DB3卷積參數量就高達240×240×3×512,顯然給RFBnet增加這么多參數量是不值得的,于是引入了膨脹卷積,在膨脹率大于1時,相同參數量的卷積核可以有更大的感受野,給3個不同分辨率的核分別設置了8、5、3的膨脹率,這樣相同感受野的情況下,參數量會降低,膨脹率的引入使得這么大尺寸的卷積核完全行得通,對于60×60的卷積核,可以使用8×8,膨脹率為8的卷積核進行替代,兩者在原圖中有相同的覆蓋率,將步長設為step,這將大大減少卷積的計算量。DB1中3層卷積核尺寸分辨率分別為60×60、30×30、15×15,通過R分別為8、5、3的膨脹率轉化后分辨率分別為8×8、6×6、5×5。DB2、DB3經過同樣的轉化,結構如圖4所示。

圖4 DB1、DB2、DB3結構圖Fig.4 DB1,DB2,DB3 structure diagram
I-RFBnet共提取出6組不同大小的有效特征圖,圖5為I-RFBnet中的DFF模塊、PFF模塊對RFBnet主干網絡中BasicRFB P5進行特征融合操作的流程示意圖,首先使用PFF模塊中的最大池化層2×2、3×3卷積和Relu激活函數對相對較淺的BasicRFB_a P3和BasicRFB P3特征進行處理,在保留淺層網絡顯著的細節(jié)特征、降低特征維度的同時,使淺層網絡特征學習到更多的非線性關系,與BasicRFB P5融合后使得BasicRFB P5獲取更多的BasicRFB_a P3和BasicRFB P3的邊緣細節(jié)信息,然后使用DFF模塊中的Deconv 2×2、3×3卷積和ReLU激活函數對相對較深的BasicRFB P6、Conv2d P7、Conv2d P8進行處理,在填充特征內容、提取敏感特征信息的同時使深層網絡特征學習到更多的非線性關系,與BasicRFB P5融合后,使得BasicRFB P5具備更多的BasicRFB P6、Conv2d P7、Conv2d P8的特征信息,圖5中的×2和×3分別代表將相應的操作進行兩次和三次,最后將上述提取的特征進行融合并做L2 norm歸一化操作,組成新的BasicRFB P5特征,同理,對主干網絡中的其他層做相同操作,具體可表示為:

圖5 對Basic RFB P5特征融合流程圖Fig.5 Flow chart of feature fusion for Basic RFB P5

其中,xi為主干網絡第i層特征,ω(?)表示進行3×3卷積和ReLU激活操作,σ(?)表示進行下采樣操作,采用的是最大池化操作,表示進行(i-p)次下采樣操作,[Xp]表示下采樣特征集合,δ(?)表示上采樣操作,采用的是最近鄰插值法,表示進行(d-i)次上采樣操作,[Xd]表示上采樣特征集合,CBasicRFB(?)表示進行特征融合操作,L2(?)表示進行L2norm歸一化操作,Yi表示對原始網絡中xi層特征進行上下文特征融合后生成的特征圖。
為實現(xiàn)對圖像中不同尺度的船只目標進行檢測,設計不同縱橫比的候選框進行匹配以適應不同尺度大小的圖像目標,根據RFBnet損失函數,可以得到候選框D={d1,d2,…,dn},其中di由(cx,cy,w,h)4個坐標值組成,(cx,cy)為中心點坐標,w、h分別為候選框的寬和高,將候選框與真實標簽框進行匹配,得到候選框的坐標及其對應的目標類別,具體可表示為Y?∈Rn×(l+4),l表示類別種類,為簡單標記可以令Y?=[Z?,B?],其中Z?=Rn×l表示預測類別向量集合,其中B?=Rn×4表示預測坐標向量集合,當候選框與真實的標簽匹配大于閾值時將其記為正例樣本Pos表示,當候選框與真實的標簽框匹配小于閾值時將其記為負例樣本用Neg表示。
此外,RFBnet算法在6個預測尺度上一共要預測11 620個預測框,其中只有少部分預測框中包含有目標,而大多數預測框中只包含有圖像背景信息,網絡更多地聚焦在容易分類的背景框,造成對目標的分類能力下降。為避免這種情況導致模型訓練退化的問題,本文引入聚焦分類損失[17]對模型訓練進行監(jiān)督,可表示為:

式中,N為與真實框的候選框個數,定位損失函數可表示為:

式中,Lclass_f1(Z?,Z)為分類損失函數,采用交叉熵計算損失,可表示為:

式中,Z?j,c表示正確且類別為背景預測框的概率,at和r為超參數,且at∈[0,1],r∈[0,5],當r>0時意味著正樣本的損失相對減少,模型將更加聚焦于負樣本的訓練,因此加入聚焦分類損失函數有效地解決了正負樣本分布不均衡的問題,提高了模型的優(yōu)化效率。
本文實驗是基于64位的Windows10操作系統(tǒng),Inter?CoreTMi7-7800XCPU-@3.5 GHz處理器,16 GB內存,NVIDIA GeForce GTX1080Ti 11 GB顯卡,采用深度學習框架為TensorFlow,主要使用軟件工具為Pycharm,Python3.6。
在整個訓練過程中,為了快速優(yōu)化訓練,將與真實框的IoU值大于0.5的先驗框設定為正例框,采用難以學習的負例框參與訓練,正負樣本的比例設為3∶1。每4張圖片設為一個batch,優(yōu)化器為Adam,學習率使用回調方式,當兩個epoch完成時,損失不下降,學習率減小為原來一半,訓練分三次進行,模型首先在ILSVRC CLS-LOC數據集上預訓練;第二次訓練,設置網絡前20層參數不參與訓練,初始學習率為0.000 5,epoch設為50,第三次網絡所有層參數都參與訓練,初始學習率為0.000 1,epoch設為100,為了減小訓練時間,加入早停(early-stopping),每次訓練4個epoch損失值不下降就結束本次訓練。
圖6展示了三種不同的主流算法的mAP曲線圖,AP計算的閾值均設為0.5,當使用I-RFBnet算法時,mAP值可以達到96.26%,比FSSD高0.99個百分點,比RFBnet高出4.74個百分點。對于每一個類別,小目標fishing boat的AP值明顯有大幅提升,主要是相對RFBnet而言,高出9.94個百分點,比FSSD也高出0.45個百分點,說明通過把淺層的細節(jié)特征和高層的語義特征融合起來能夠提高算法對小目標的檢測。還有一個有明顯變化是ore carrier,通過觀察數據集可以發(fā)現(xiàn)包含有ore carrier的圖片目標與背景的混肴率都很大,背景的干擾性很大。而I-RFBnet比FSSD[18]和RFBnet的AP值分別高出0.95個百分點和5.88個百分點,主要原因是本文使用了聚焦分類損失,有效地解決了正負樣本分布不均衡的問題,提高了模型的優(yōu)化效率。

圖6 I-RFBnet、FSSD、RFBnet三種不同算法的mAP曲線對比Fig.6 Comparison of mAP curves of I-RFBnet,FSSD and RFBnet
圖7展示了不同算法使用同樣訓練策略下的檢測結果圖,從檢測效果可以看出I-RFBnet相對其他兩種算法有明顯的提升,I-RFBnet檢測出來的目標類別數要多于其他兩種,尤其是對小目標的檢測效果提升明顯,而且對遮擋目標的識別率也較高,而FSSD和RFBnet有較多的漏檢和錯檢情況,在第三行的三幅圖比較中,可以發(fā)現(xiàn)FSSD和RFBnet發(fā)生了誤檢而且對小目標的檢測精度也不高,而I-RFBnet不但正確區(qū)分出了船的類別,而且目標的置信度也遠高于其他兩種,原因在于I-RFBnet采用了特征融合和膨脹卷積,對淺層特征層進行了特征增強,因此對多尺度目標特別是小目標的檢測能力更強。

圖7 三種不同算法在SeaShips測試集上的檢測結果Fig.7 Detection results of three different algorithms on SeaShips test set
為了進一步驗證,本模型消融實驗幾組實驗都采用相同的訓練配置、學習率衰減方法以及批量。為了讓實驗充分訓練,本文進行100個epoch充分訓練,實驗結果如表1所示。前兩列DB2和DB3表示作用不同數量的淺層,如DB2表示僅增強前兩層特征圖,Attention表示DB使用注意力結構,F(xiàn)usion表示特征融合。第一行表示傳統(tǒng)RFBnet的mAP為91.52%;第三行可以看出,不對原來六個特征層進行特征融合而直接對前三層添加帶注意力結構的DB卷積塊可以提升0.46個百分點的精度;第四行可以看出,對原來六個特征層進行特征融合后再給前三層添加DB模塊,mAP相比RFBnet提高了1.9個百分點;第五行可以看出,I-RFBnet比RFBnet的mAP提高了4.74個百分點,表明本文提出的先使用特征融合形成六個有效特征層再對前三層加入注意力機制的膨脹卷積塊的方法對檢測精度的提高是有效的,而且需要同時使用效果才可達到最佳。

表1 消融實驗Table 1 Ablation experiments
在表2中嘗試了3種結構的膨脹卷積結構,除了前面提到的卷積塊結構外,本文還嘗試了步長為0.5 step的卷積加上2×2尺寸、2×2步幅的最大池化(Maxpooling)以及步長為0.25 step的卷積加上4×4尺寸、4×4步幅的最大池化代替步幅為step的卷積。表中可以看出三種結構的膨脹卷積塊對特征單元信息增強均有效,使用步長為step卷積效果最好。

表2 在I-RFB中使用不同結構的膨脹卷積Table 2 Expansion convolution of different structures is used in I-RFB
為了進一步驗證本文方法的有效性,將本文方法與當前主流的一些目標檢測算法進行對比。所有實驗均在SeaShips數據集上進行的,除SSD-512、YOLOv2(532×532)以外,圖像的輸入尺寸均為300×300,參數的選擇和之前一樣,YOLOv2算法以Darknet-19作為基礎網絡,RetinaNet[19]、DSSD[20]算法分別以ResNet50、ResNet101作為基礎網絡,其他都以VGG16作為基礎網絡,AP計算的閾值設為0.5和0.7。實驗結果如表3所示,從表中可以看出,本文提出的算法在精度上都高于其他算法。在檢測速度上,由于本文對RFBnet算法的網絡結構做了一些改進,導致檢測速度有所下降,但是仍然優(yōu)于兩級檢測器,能夠滿足實時檢測的需求。

表3 與其他算法在SeaShips數據集上的性能對比Table 3 Performance comparison with other algorithms on SeaShips data set
本文針對多目標遮擋情況下小目標檢測問題,設計了一種基于改進RFBnet的算法。算法設計了池化特征融合模塊和反卷積特征融合模塊并提出了一種融入注意力機制的膨脹卷積塊DB,增強了靠近目標中心點區(qū)域特征的學習,將算法在SeaShips數據集上進行測試,實驗結果表明:(1)與當前多種深度學習算法相比,本文所提出的改進算法結構合理,檢測精度最高,雖然檢測時間上有所下降,但可以滿足實時檢測的需求。(2)從檢測精度上看,當IoU閾值設置為0.5時,改進后的算法較SSD、RFBnet、FSSD算法分別提高10.51、4.74、1.87個百分點;當IoU閾值設置為0.7時,改進后的算法較SSD、RFBnet、FSSD算法分別提高13.27、5.12、3.28個百分點。
通過預測結果圖看出,改進后的方法檢測效果得到了較大的提高,尤其提高了對小目標的檢測精度,盡管改進后的方法能夠達到實時檢測的應用需求,但相較于原始RFBnet算法耗時依然過多,未來將進一步優(yōu)化算法,擴充自然圖像船只數據集,以提升對復雜場景下的小目標檢測。