方 興 龍澤升 占 賢
(武漢數字工程研究所 武漢 430205)
隨著人類對海洋開發和保護的日益重視,水面無人艇逐漸成為世界各海洋強國大力發展的新興海洋裝備,被廣泛應用于軍事領域和民用領域[1]。智能感知是無人艇的關鍵組成部分,而視覺系統作為無人艇智能感知的重要分支,是無人艇獲取周邊信息的主要途徑,同時其獲取的信息也是無人艇進行決策時的重要參考[2]。由船載攝像頭所采集的可見光圖像進行目標識別與檢測,可以檢測出水面障礙物的類別以及位置等信息,從而為無人艇的自主航行提供決策依據[3]。
基于深度學習的目標檢測方法最早起源于RCNN[4]類方法,該類方法通常稱為兩級檢測(Two-stage Detector),即結合一個區域建議器和一個區域智能的分類器,在當時的目標檢測領域取得了巨大成功,逐漸成為主流的目標檢測算法。為減少卷積神經網絡的計算復雜度,SPP-Net[5](Spatial Pyramid Pooling)和 Fast RCNN[6]引入了區域特征提取的思想,將大量的特征計算通過對象實例進行共享。Faster RCNN[7]在上述方法基礎上引入了區域建議網絡(Region Proposal Network,RPN)進一步加速計算,在精度和計算實時性上達到了較好的平衡。隨后基于Faster RCNN算法的各種工作擴展并豐富了這類算法。例如,R-FCN[8](Region-based Fully Convolutional Network)提出了高效的區域全卷積,相較于Faster RCNN算法進一步降低了計算量。
由于無人艇搭載的攝像頭獲取的可見光圖像包含不同尺度的對象[9],導致RPN中過濾器的固定接受域大小容易產生尺度不匹配現象。為克服該問題,特征金字塔(Feature Pyramid Network,FPN)方法[10]在多個輸出層進行檢測并輸出不同尺度的特征圖,通過在不同網絡深度的特征映射上添加自頂向下連接,融合各尺度特征圖,并采用比例不變的特征表示,取得了一定的效果。SNIP[11](Scale Normalization for Image Pyramids)則通過重新調整圖像金字塔,對訓練過程中不同對象尺度的梯度進行歸一化處理,使整個檢測器具有尺度特異性。在推理時使用圖像金字塔實現尺度不變檢測,但該方法計算量巨大。
在以往的目標檢測算法中對模型體系結構的關注度較高,本文在采用現有兩級目標檢測模型最高精度的模型體系結構的基礎上,對檢測器的檢測性能本身進行了改進。在目標檢測訓練過程中緩解不平衡是實現最優訓練和充分發揮模型體系結構潛力的關鍵。分析檢測器的標準訓練實踐,發現檢測器的檢測性能受到三個層次的不平衡限制:分別是樣本層次、特征層次和目標層次。
樣本層次的不平衡。在進行目標檢測器的訓練時,困難樣本對于檢測器性能的提升極其明顯,但通常使用的隨機抽樣方法導致簡單樣本對檢測器影響更加巨大。近年來,困難樣本的挖掘方法被廣泛使用,其中比較著名的方法是OHEM[12](Online Hard Example Mining),這種方法的優點是可以將檢測器的重點移向困難樣本,但與此同時帶來的缺點是相對高額的計算成本和對噪聲標簽的高度敏感性。在一階段目標檢測算法中,采用的Focal Loss[13]方法緩解了樣本層次的不平衡問題,但這一方法無法擴展到RCNN系列算法中,因為兩級的目標檢測程序濾除了大多數容易產生的困難樣本。因此,尋找更適合兩級目標檢測算法的樣本平衡方法有利于提高檢測器性能。
特征層次的不平衡。骨干網絡的淺層的低層次特性容易表達目標的位置特性,而網絡的深層的高層次特性主要表達目標的語義特性。FPN算法是在特征融合方面具有里程碑意義的算法,它通過橫向連接進行特征集成,推動了目標檢測算法的發展。但是FPN算法采用的順序結構使得綜合特征更多關注的是相鄰分辨率,其他分辨的關注度明顯不足,導致每進行一次融合,非相鄰分辨率的語義信息就被稀釋一次。因此,被整合的特征應該具有來自每個分辨率的均衡信息。
目標層次的不平衡。目標檢測器需要完成兩項任務,分別是分類和定位,對應的損失函數即為分類損失函數和定位損失函數,兩者之間需要保持適當的平衡。訓練中的樣本也是如此,如果它們不能很好地平衡,就會出現容易樣本的產生的小梯度被困難樣本的大梯度淹沒的情況,算法不能達到最優收斂,導致整體性能不佳。因此需要重新整合算法的任務和樣本。
本 文 以 Cascade RCNN[14]算 法 為 基 準 算 法(Baseline),并在此之上針對檢測器訓練過程中的不平衡問題,提出了基于Cascade RCNN算法的改進算法,通過整體平衡設計來平衡這種不平衡,提高了算法的精度和建議機制下的召回率,對算法在無人艇水面目標檢測上帶來了較為明顯的提升,與其他傳感器配合可提高無人艇的智能感知能力,提升無人艇自主航行的安全性。
目標檢測的基本任務是識別對象并為對象分配合適的類標簽和準確的邊界框。兩級目標檢測算法將該任務看作為多任務學習問題,一方面使用分類來解決識別問題,另一方面是使用邊界框回歸來解決定位問題。盡管這種架構取得了一定的成功,但是這兩個基本的問題沒有被精確解決,即存在非常多近似的類別誤報,相對應地也存在非常多接近但不是最優的邊界框。有效的檢測器必須找到圖像中的真正樣本,同時抑制那些接近的假正樣本。
高質量的檢測要求檢測器的質量與檢測假設的質量密切匹配。只有提出高質量的建議,檢測器才能實現高質量檢測。然而,僅僅在訓練中增加交并比(Intersection of Union,IOU)的閾值并不能保證這一點。以往的仿真訓練中發現經過建議機制回歸后的IOU閾值必然會比回歸之前增加,在這一思想的指導下一種新的檢測器架構應運而生,即Cascade RCNN算法,如圖1所示。

圖1 Cascade RCNN算法結構圖
Cascade RCNN算法是RCNN類算法的多階段擴展,其中較深的RCNN階段對接近的假正樣本的抑制更有效。用一定的IOU閾值訓練檢測器的輸出的良好假設分布來訓練下一個更高的IOU閾值檢測器,通過調整邊界框,每個階段的目標是為下一階段的訓練找到一組良好的接近誤報,從一個階段到下一個階段,檢測假設的質量逐漸提高。Cascade-CNN算法的意義是使用重采樣操作為序列中所有檢測器的訓練提供了大量的樣本,因此可以在不出現過擬合的情況下訓練高IOU檢測器,并且在推理時使用相同的級聯程序,會產生一組質量逐步提高的假設,與檢測器等級的質量不斷提高很好地匹配,最終提高目標檢測精度。
為了減輕這三個層次帶來的影響,本文提出三個相對應的解決辦法:交并比平衡采樣、平衡特征金字塔和平衡的L1損失函數。這三個方法分別在樣本、特征和目標的層次減少了檢測器的不平衡性,從而提高了目標檢測的整體性能。
圖2表示不同采樣方式下樣本在不同交并比下的分布狀態。可以觀察到,超過60%的困難負樣本在交并比閾值大于0.05,而隨機抽樣方法在大于0.05閾值時的樣本比例只有不到30%,即采用隨機采樣方法后算法對困難樣本的關注度不夠。基于這一觀察結果,本文提出了交并比平衡采樣這一新的樣本采樣方法。假設需要從M個對應的候選樣本中抽取N個負樣本。隨機抽樣下每個樣本的選擇概率P為

圖2 不同采樣方式樣本在不同交并比的分布
為了提高困難負樣本的選擇概率,本文根據IOU將采樣區間平均分成K個區間。N個要求的負樣本平均分配到每個區間。然后本文均勻地從中選擇樣本。因此,本文得到了交并比平衡采樣下的選擇概率pk:
交并比平衡采樣后的直方圖如圖2中綠色直方柱所示。可以看出,本文的交并比平衡采樣可以指導訓練樣本的分布接近困難負樣本。此外,該方法對K不敏感,只要選擇的IoU較高的樣本就更有可能,此外值得注意的是,該方法也適用于困難正樣本。然而,在大多數情況下,沒有足夠的候選樣本來將這一過程擴展到正樣本。為了使平衡采樣過程更加全面,本文對每一個真實值進行了等距采樣作為一種替代方法。
與以往的方法不同的是,本文使用橫向連接來集成多級特征,其核心思想是使用相同的深度集成的平衡語義特征來增強多級特征,由重置分辨率、集成、細化和強化這四部分組成。
首先,本文將分辨率l級的特征記為Cl,最低級特征記為lmin,最高級的特征記為lmax,多級特征數記為L。重置分辨率和集成這兩個模塊是整合多層次有限元模型,同時保持其語義層次。本文首先將多級特性{C2,C3,C4,C5}的分辨率調整為中等大小,即大小與C4相同,對特征進行重置分辨率后,通過簡單平均得到平衡的語義特征:
然后使用相同的反向過程對獲得的特征進行重置分辨率,以增強原始特征。每個分辨率在本分辨率中從其他分辨率中獲得同等的信息。
細化和強化部分使用了一個高斯非局部注意力機制的模塊,該方法可以同時聚合低級到高級的特征,改進后的工藝可以提高算法的綜合性能,同時作為FPN的一個補充模塊。
通常,RCNN類算法通過多任務損失函數來解決定位和分類問題,具體形式如下式所示:
式中:Lcls和Lloc分別是對應于分類和定位的目標函數,Lcls中的預測和目標分別用p和u表示,tu是與類u對應的回歸結果,v為回歸目標,λ用于調整多任務學習下的損失權重效果。本文稱損失大于或等于1.0的為異常樣本。其他樣本稱為正常樣本。可以觀察到,該多任務損失函數是分類和定位的總和,如果分類任務完成的很好,總損失依然會很小,問題就在于這個方法忽略了定位對于總損失值的貢獻,直接提高λ值會讓檢測模型對異常值更加敏感,產生過大梯度,不利于模型訓練。
平衡的L1損失函數是在傳統定位損失函數smooth L1 loss的基礎上改進而來,設置拐點將正常樣本與異常樣本分隔開來,并剪切最大值為1.0的異常樣本產生的較大梯度。平衡的L1損失函數的關鍵思想是促進關鍵的回歸梯度,即從正常樣本的梯度,重新平衡所涉及的樣本和任務,從而在分類、整體定位和精確定位方面實現更加均衡的訓練。
Lloc中的平衡的L1損失函數定義為
梯度表達式如下:
在此基礎上采用一種新的梯度:
在一個因子α的控制下,本文的平衡的L1損失函數增加了正常樣本的梯度。一個小的α增加了正常的梯度,但是不影響到異常樣本的梯度。此外,還引入了γ控制整體提升放大量來調整回歸誤差的上界,可以幫助目標函數更好地平衡所涉及的任務。
通過對上述梯度公式的積分,可以得到平衡的L1損失函數:
其中,參數之間的關系是:
在本文的仿真試驗中,參數默認設置為α=0.5,γ=1.5。
本文依據各軍民船舶類別建立了船舶數據庫。本文根據研究需要從數據庫中取用20類別水面船舶,其中訓練圖片13547張,測試圖片3411張,并將其制作成符合VOC(Visual Object Classes)格式的數據集,具體的船舶類別入圖3所示。

圖3 仿真試驗船舶細粒度分類
為了公平比較,本文進行的所有試驗均在統一的軟硬件條件下進行,其中編程平臺為Python3.8.5,PyTorch1.2和mmdetection。本文試驗中使用的骨干網絡是公開且預訓練好的。本文用1個GPU訓練檢測器36個周期,初始學習率為0.0025,如果沒有說明,則在24個周期和33個周期之后分別降低0.1。試驗主要硬件配置包括Intel(R)Core(TM)i7-8700 CPU@3.20GHz處 理 器 、16GB內存和GeForce GTX 1080 Ti顯卡。試驗操作系統是Ubuntu 16.04。
本文將原始的Cascade RCNN算法在本試驗數據集上進行的訓練測試作為基準,對本文提出三種改進方法分別進行訓練測試,然后再將三種方法進行組合訓練測試,仿真試驗結果如表1所示。
由表1可知,原始的Cascade-CNN算法的查準率達到了82.8%,但召回率只有30.7%,平均精度(Mean Average Precision,mAP)達到了63.8%,結合單一交并比平衡采樣的改進后,召回率有1.4%的提升,mAP值有0.7%的提升。結合單一平衡特征金字塔的改進后,查準率有0.4%的提升,召回率有7.4%的提升,mAP值有1.3%的提升。結合單一的平衡的L1損失函數改進后,查準率有0.3%的提升,召回率有1.8%的提升,mAP值有1.1%的提升。將三種改進組合后,最終查準率有1.4%的提升,召回率有13.4%的提升,mAP值有4%的提升。單幀圖片耗時方面總體略有增加,變化不大。本文算法輸出的檢測效果圖如圖4所示。

表1 仿真試驗結果

圖4 檢測效果圖
由表1可以觀察到的另一個特性是這三種改進算法對召回率的提升效果明顯。為了更加清晰地說明改進算法的作用,本文對不同骨干網絡建議生成圖像的平均召回率進行測試,其中,AR100,AR300,AR1000分別對應于每幅圖像有 100、300 和1000個建議時的平均召回率(average recall),如表2所示。注意較大的骨干網絡只會給建議機制帶來較小的增益。本文的建議機制只需要一個ResNet-50主干就可以比ResNet-152高8個百分點。本文算法的顯著改進證實了有效的平衡訓練能更有效地發揮建議機制的潛力。

表2 不同骨干網絡提升召回率與本文方法的比較
可見光圖像的目標檢測無人艇智能感知的重要組成部分,針對水面障礙物的檢測問題,本文改進了Cascade RCNN算法,在交并比平衡采樣、平衡特征金字塔和平衡的L1損失函數這三部分上對原算法進行了平衡改進,進一步緩解了檢測器在訓練過程中的不平衡現象。仿真試驗表明,本文改進后的算法在對水面艦船目標的檢測上召回率提升明顯,平均檢測精度得到了提高,可以為無人艇智能感知技術的發展提供參考。