方 興 龍澤升 占 賢
(武漢數(shù)字工程研究所 武漢 430205)
隨著人類對(duì)海洋開發(fā)和保護(hù)的日益重視,水面無人艇逐漸成為世界各海洋強(qiáng)國(guó)大力發(fā)展的新興海洋裝備,被廣泛應(yīng)用于軍事領(lǐng)域和民用領(lǐng)域[1]。智能感知是無人艇的關(guān)鍵組成部分,而視覺系統(tǒng)作為無人艇智能感知的重要分支,是無人艇獲取周邊信息的主要途徑,同時(shí)其獲取的信息也是無人艇進(jìn)行決策時(shí)的重要參考[2]。由船載攝像頭所采集的可見光圖像進(jìn)行目標(biāo)識(shí)別與檢測(cè),可以檢測(cè)出水面障礙物的類別以及位置等信息,從而為無人艇的自主航行提供決策依據(jù)[3]。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法最早起源于RCNN[4]類方法,該類方法通常稱為兩級(jí)檢測(cè)(Two-stage Detector),即結(jié)合一個(gè)區(qū)域建議器和一個(gè)區(qū)域智能的分類器,在當(dāng)時(shí)的目標(biāo)檢測(cè)領(lǐng)域取得了巨大成功,逐漸成為主流的目標(biāo)檢測(cè)算法。為減少卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算復(fù)雜度,SPP-Net[5](Spatial Pyramid Pooling)和 Fast RCNN[6]引入了區(qū)域特征提取的思想,將大量的特征計(jì)算通過對(duì)象實(shí)例進(jìn)行共享。Faster RCNN[7]在上述方法基礎(chǔ)上引入了區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)進(jìn)一步加速計(jì)算,在精度和計(jì)算實(shí)時(shí)性上達(dá)到了較好的平衡。隨后基于Faster RCNN算法的各種工作擴(kuò)展并豐富了這類算法。例如,R-FCN[8](Region-based Fully Convolutional Network)提出了高效的區(qū)域全卷積,相較于Faster RCNN算法進(jìn)一步降低了計(jì)算量。
由于無人艇搭載的攝像頭獲取的可見光圖像包含不同尺度的對(duì)象[9],導(dǎo)致RPN中過濾器的固定接受域大小容易產(chǎn)生尺度不匹配現(xiàn)象。為克服該問題,特征金字塔(Feature Pyramid Network,F(xiàn)PN)方法[10]在多個(gè)輸出層進(jìn)行檢測(cè)并輸出不同尺度的特征圖,通過在不同網(wǎng)絡(luò)深度的特征映射上添加自頂向下連接,融合各尺度特征圖,并采用比例不變的特征表示,取得了一定的效果。SNIP[11](Scale Normalization for Image Pyramids)則通過重新調(diào)整圖像金字塔,對(duì)訓(xùn)練過程中不同對(duì)象尺度的梯度進(jìn)行歸一化處理,使整個(gè)檢測(cè)器具有尺度特異性。在推理時(shí)使用圖像金字塔實(shí)現(xiàn)尺度不變檢測(cè),但該方法計(jì)算量巨大。
在以往的目標(biāo)檢測(cè)算法中對(duì)模型體系結(jié)構(gòu)的關(guān)注度較高,本文在采用現(xiàn)有兩級(jí)目標(biāo)檢測(cè)模型最高精度的模型體系結(jié)構(gòu)的基礎(chǔ)上,對(duì)檢測(cè)器的檢測(cè)性能本身進(jìn)行了改進(jìn)。在目標(biāo)檢測(cè)訓(xùn)練過程中緩解不平衡是實(shí)現(xiàn)最優(yōu)訓(xùn)練和充分發(fā)揮模型體系結(jié)構(gòu)潛力的關(guān)鍵。分析檢測(cè)器的標(biāo)準(zhǔn)訓(xùn)練實(shí)踐,發(fā)現(xiàn)檢測(cè)器的檢測(cè)性能受到三個(gè)層次的不平衡限制:分別是樣本層次、特征層次和目標(biāo)層次。
樣本層次的不平衡。在進(jìn)行目標(biāo)檢測(cè)器的訓(xùn)練時(shí),困難樣本對(duì)于檢測(cè)器性能的提升極其明顯,但通常使用的隨機(jī)抽樣方法導(dǎo)致簡(jiǎn)單樣本對(duì)檢測(cè)器影響更加巨大。近年來,困難樣本的挖掘方法被廣泛使用,其中比較著名的方法是OHEM[12](Online Hard Example Mining),這種方法的優(yōu)點(diǎn)是可以將檢測(cè)器的重點(diǎn)移向困難樣本,但與此同時(shí)帶來的缺點(diǎn)是相對(duì)高額的計(jì)算成本和對(duì)噪聲標(biāo)簽的高度敏感性。在一階段目標(biāo)檢測(cè)算法中,采用的Focal Loss[13]方法緩解了樣本層次的不平衡問題,但這一方法無法擴(kuò)展到RCNN系列算法中,因?yàn)閮杉?jí)的目標(biāo)檢測(cè)程序?yàn)V除了大多數(shù)容易產(chǎn)生的困難樣本。因此,尋找更適合兩級(jí)目標(biāo)檢測(cè)算法的樣本平衡方法有利于提高檢測(cè)器性能。
特征層次的不平衡。骨干網(wǎng)絡(luò)的淺層的低層次特性容易表達(dá)目標(biāo)的位置特性,而網(wǎng)絡(luò)的深層的高層次特性主要表達(dá)目標(biāo)的語義特性。FPN算法是在特征融合方面具有里程碑意義的算法,它通過橫向連接進(jìn)行特征集成,推動(dòng)了目標(biāo)檢測(cè)算法的發(fā)展。但是FPN算法采用的順序結(jié)構(gòu)使得綜合特征更多關(guān)注的是相鄰分辨率,其他分辨的關(guān)注度明顯不足,導(dǎo)致每進(jìn)行一次融合,非相鄰分辨率的語義信息就被稀釋一次。因此,被整合的特征應(yīng)該具有來自每個(gè)分辨率的均衡信息。
目標(biāo)層次的不平衡。目標(biāo)檢測(cè)器需要完成兩項(xiàng)任務(wù),分別是分類和定位,對(duì)應(yīng)的損失函數(shù)即為分類損失函數(shù)和定位損失函數(shù),兩者之間需要保持適當(dāng)?shù)钠胶狻S?xùn)練中的樣本也是如此,如果它們不能很好地平衡,就會(huì)出現(xiàn)容易樣本的產(chǎn)生的小梯度被困難樣本的大梯度淹沒的情況,算法不能達(dá)到最優(yōu)收斂,導(dǎo)致整體性能不佳。因此需要重新整合算法的任務(wù)和樣本。
本 文 以 Cascade RCNN[14]算 法 為 基 準(zhǔn) 算 法(Baseline),并在此之上針對(duì)檢測(cè)器訓(xùn)練過程中的不平衡問題,提出了基于Cascade RCNN算法的改進(jìn)算法,通過整體平衡設(shè)計(jì)來平衡這種不平衡,提高了算法的精度和建議機(jī)制下的召回率,對(duì)算法在無人艇水面目標(biāo)檢測(cè)上帶來了較為明顯的提升,與其他傳感器配合可提高無人艇的智能感知能力,提升無人艇自主航行的安全性。
目標(biāo)檢測(cè)的基本任務(wù)是識(shí)別對(duì)象并為對(duì)象分配合適的類標(biāo)簽和準(zhǔn)確的邊界框。兩級(jí)目標(biāo)檢測(cè)算法將該任務(wù)看作為多任務(wù)學(xué)習(xí)問題,一方面使用分類來解決識(shí)別問題,另一方面是使用邊界框回歸來解決定位問題。盡管這種架構(gòu)取得了一定的成功,但是這兩個(gè)基本的問題沒有被精確解決,即存在非常多近似的類別誤報(bào),相對(duì)應(yīng)地也存在非常多接近但不是最優(yōu)的邊界框。有效的檢測(cè)器必須找到圖像中的真正樣本,同時(shí)抑制那些接近的假正樣本。
高質(zhì)量的檢測(cè)要求檢測(cè)器的質(zhì)量與檢測(cè)假設(shè)的質(zhì)量密切匹配。只有提出高質(zhì)量的建議,檢測(cè)器才能實(shí)現(xiàn)高質(zhì)量檢測(cè)。然而,僅僅在訓(xùn)練中增加交并比(Intersection of Union,IOU)的閾值并不能保證這一點(diǎn)。以往的仿真訓(xùn)練中發(fā)現(xiàn)經(jīng)過建議機(jī)制回歸后的IOU閾值必然會(huì)比回歸之前增加,在這一思想的指導(dǎo)下一種新的檢測(cè)器架構(gòu)應(yīng)運(yùn)而生,即Cascade RCNN算法,如圖1所示。
圖1 Cascade RCNN算法結(jié)構(gòu)圖
Cascade RCNN算法是RCNN類算法的多階段擴(kuò)展,其中較深的RCNN階段對(duì)接近的假正樣本的抑制更有效。用一定的IOU閾值訓(xùn)練檢測(cè)器的輸出的良好假設(shè)分布來訓(xùn)練下一個(gè)更高的IOU閾值檢測(cè)器,通過調(diào)整邊界框,每個(gè)階段的目標(biāo)是為下一階段的訓(xùn)練找到一組良好的接近誤報(bào),從一個(gè)階段到下一個(gè)階段,檢測(cè)假設(shè)的質(zhì)量逐漸提高。Cascade-CNN算法的意義是使用重采樣操作為序列中所有檢測(cè)器的訓(xùn)練提供了大量的樣本,因此可以在不出現(xiàn)過擬合的情況下訓(xùn)練高IOU檢測(cè)器,并且在推理時(shí)使用相同的級(jí)聯(lián)程序,會(huì)產(chǎn)生一組質(zhì)量逐步提高的假設(shè),與檢測(cè)器等級(jí)的質(zhì)量不斷提高很好地匹配,最終提高目標(biāo)檢測(cè)精度。
為了減輕這三個(gè)層次帶來的影響,本文提出三個(gè)相對(duì)應(yīng)的解決辦法:交并比平衡采樣、平衡特征金字塔和平衡的L1損失函數(shù)。這三個(gè)方法分別在樣本、特征和目標(biāo)的層次減少了檢測(cè)器的不平衡性,從而提高了目標(biāo)檢測(cè)的整體性能。
圖2表示不同采樣方式下樣本在不同交并比下的分布狀態(tài)??梢杂^察到,超過60%的困難負(fù)樣本在交并比閾值大于0.05,而隨機(jī)抽樣方法在大于0.05閾值時(shí)的樣本比例只有不到30%,即采用隨機(jī)采樣方法后算法對(duì)困難樣本的關(guān)注度不夠?;谶@一觀察結(jié)果,本文提出了交并比平衡采樣這一新的樣本采樣方法。假設(shè)需要從M個(gè)對(duì)應(yīng)的候選樣本中抽取N個(gè)負(fù)樣本。隨機(jī)抽樣下每個(gè)樣本的選擇概率P為
圖2 不同采樣方式樣本在不同交并比的分布
為了提高困難負(fù)樣本的選擇概率,本文根據(jù)IOU將采樣區(qū)間平均分成K個(gè)區(qū)間。N個(gè)要求的負(fù)樣本平均分配到每個(gè)區(qū)間。然后本文均勻地從中選擇樣本。因此,本文得到了交并比平衡采樣下的選擇概率pk:
交并比平衡采樣后的直方圖如圖2中綠色直方柱所示。可以看出,本文的交并比平衡采樣可以指導(dǎo)訓(xùn)練樣本的分布接近困難負(fù)樣本。此外,該方法對(duì)K不敏感,只要選擇的IoU較高的樣本就更有可能,此外值得注意的是,該方法也適用于困難正樣本。然而,在大多數(shù)情況下,沒有足夠的候選樣本來將這一過程擴(kuò)展到正樣本。為了使平衡采樣過程更加全面,本文對(duì)每一個(gè)真實(shí)值進(jìn)行了等距采樣作為一種替代方法。
與以往的方法不同的是,本文使用橫向連接來集成多級(jí)特征,其核心思想是使用相同的深度集成的平衡語義特征來增強(qiáng)多級(jí)特征,由重置分辨率、集成、細(xì)化和強(qiáng)化這四部分組成。
首先,本文將分辨率l級(jí)的特征記為Cl,最低級(jí)特征記為lmin,最高級(jí)的特征記為lmax,多級(jí)特征數(shù)記為L(zhǎng)。重置分辨率和集成這兩個(gè)模塊是整合多層次有限元模型,同時(shí)保持其語義層次。本文首先將多級(jí)特性{C2,C3,C4,C5}的分辨率調(diào)整為中等大小,即大小與C4相同,對(duì)特征進(jìn)行重置分辨率后,通過簡(jiǎn)單平均得到平衡的語義特征:
然后使用相同的反向過程對(duì)獲得的特征進(jìn)行重置分辨率,以增強(qiáng)原始特征。每個(gè)分辨率在本分辨率中從其他分辨率中獲得同等的信息。
細(xì)化和強(qiáng)化部分使用了一個(gè)高斯非局部注意力機(jī)制的模塊,該方法可以同時(shí)聚合低級(jí)到高級(jí)的特征,改進(jìn)后的工藝可以提高算法的綜合性能,同時(shí)作為FPN的一個(gè)補(bǔ)充模塊。
通常,RCNN類算法通過多任務(wù)損失函數(shù)來解決定位和分類問題,具體形式如下式所示:
式中:Lcls和Lloc分別是對(duì)應(yīng)于分類和定位的目標(biāo)函數(shù),Lcls中的預(yù)測(cè)和目標(biāo)分別用p和u表示,tu是與類u對(duì)應(yīng)的回歸結(jié)果,v為回歸目標(biāo),λ用于調(diào)整多任務(wù)學(xué)習(xí)下的損失權(quán)重效果。本文稱損失大于或等于1.0的為異常樣本。其他樣本稱為正常樣本。可以觀察到,該多任務(wù)損失函數(shù)是分類和定位的總和,如果分類任務(wù)完成的很好,總損失依然會(huì)很小,問題就在于這個(gè)方法忽略了定位對(duì)于總損失值的貢獻(xiàn),直接提高λ值會(huì)讓檢測(cè)模型對(duì)異常值更加敏感,產(chǎn)生過大梯度,不利于模型訓(xùn)練。
平衡的L1損失函數(shù)是在傳統(tǒng)定位損失函數(shù)smooth L1 loss的基礎(chǔ)上改進(jìn)而來,設(shè)置拐點(diǎn)將正常樣本與異常樣本分隔開來,并剪切最大值為1.0的異常樣本產(chǎn)生的較大梯度。平衡的L1損失函數(shù)的關(guān)鍵思想是促進(jìn)關(guān)鍵的回歸梯度,即從正常樣本的梯度,重新平衡所涉及的樣本和任務(wù),從而在分類、整體定位和精確定位方面實(shí)現(xiàn)更加均衡的訓(xùn)練。
Lloc中的平衡的L1損失函數(shù)定義為
梯度表達(dá)式如下:
在此基礎(chǔ)上采用一種新的梯度:
在一個(gè)因子α的控制下,本文的平衡的L1損失函數(shù)增加了正常樣本的梯度。一個(gè)小的α增加了正常的梯度,但是不影響到異常樣本的梯度。此外,還引入了γ控制整體提升放大量來調(diào)整回歸誤差的上界,可以幫助目標(biāo)函數(shù)更好地平衡所涉及的任務(wù)。
通過對(duì)上述梯度公式的積分,可以得到平衡的L1損失函數(shù):
其中,參數(shù)之間的關(guān)系是:
在本文的仿真試驗(yàn)中,參數(shù)默認(rèn)設(shè)置為α=0.5,γ=1.5。
本文依據(jù)各軍民船舶類別建立了船舶數(shù)據(jù)庫(kù)。本文根據(jù)研究需要從數(shù)據(jù)庫(kù)中取用20類別水面船舶,其中訓(xùn)練圖片13547張,測(cè)試圖片3411張,并將其制作成符合VOC(Visual Object Classes)格式的數(shù)據(jù)集,具體的船舶類別入圖3所示。
圖3 仿真試驗(yàn)船舶細(xì)粒度分類
為了公平比較,本文進(jìn)行的所有試驗(yàn)均在統(tǒng)一的軟硬件條件下進(jìn)行,其中編程平臺(tái)為Python3.8.5,PyTorch1.2和mmdetection。本文試驗(yàn)中使用的骨干網(wǎng)絡(luò)是公開且預(yù)訓(xùn)練好的。本文用1個(gè)GPU訓(xùn)練檢測(cè)器36個(gè)周期,初始學(xué)習(xí)率為0.0025,如果沒有說明,則在24個(gè)周期和33個(gè)周期之后分別降低0.1。試驗(yàn)主要硬件配置包括Intel(R)Core(TM)i7-8700 CPU@3.20GHz處 理 器 、16GB內(nèi)存和GeForce GTX 1080 Ti顯卡。試驗(yàn)操作系統(tǒng)是Ubuntu 16.04。
本文將原始的Cascade RCNN算法在本試驗(yàn)數(shù)據(jù)集上進(jìn)行的訓(xùn)練測(cè)試作為基準(zhǔn),對(duì)本文提出三種改進(jìn)方法分別進(jìn)行訓(xùn)練測(cè)試,然后再將三種方法進(jìn)行組合訓(xùn)練測(cè)試,仿真試驗(yàn)結(jié)果如表1所示。
由表1可知,原始的Cascade-CNN算法的查準(zhǔn)率達(dá)到了82.8%,但召回率只有30.7%,平均精度(Mean Average Precision,mAP)達(dá)到了63.8%,結(jié)合單一交并比平衡采樣的改進(jìn)后,召回率有1.4%的提升,mAP值有0.7%的提升。結(jié)合單一平衡特征金字塔的改進(jìn)后,查準(zhǔn)率有0.4%的提升,召回率有7.4%的提升,mAP值有1.3%的提升。結(jié)合單一的平衡的L1損失函數(shù)改進(jìn)后,查準(zhǔn)率有0.3%的提升,召回率有1.8%的提升,mAP值有1.1%的提升。將三種改進(jìn)組合后,最終查準(zhǔn)率有1.4%的提升,召回率有13.4%的提升,mAP值有4%的提升。單幀圖片耗時(shí)方面總體略有增加,變化不大。本文算法輸出的檢測(cè)效果圖如圖4所示。
表1 仿真試驗(yàn)結(jié)果
圖4 檢測(cè)效果圖
由表1可以觀察到的另一個(gè)特性是這三種改進(jìn)算法對(duì)召回率的提升效果明顯。為了更加清晰地說明改進(jìn)算法的作用,本文對(duì)不同骨干網(wǎng)絡(luò)建議生成圖像的平均召回率進(jìn)行測(cè)試,其中,AR100,AR300,AR1000分別對(duì)應(yīng)于每幅圖像有 100、300 和1000個(gè)建議時(shí)的平均召回率(average recall),如表2所示。注意較大的骨干網(wǎng)絡(luò)只會(huì)給建議機(jī)制帶來較小的增益。本文的建議機(jī)制只需要一個(gè)ResNet-50主干就可以比ResNet-152高8個(gè)百分點(diǎn)。本文算法的顯著改進(jìn)證實(shí)了有效的平衡訓(xùn)練能更有效地發(fā)揮建議機(jī)制的潛力。
表2 不同骨干網(wǎng)絡(luò)提升召回率與本文方法的比較
可見光圖像的目標(biāo)檢測(cè)無人艇智能感知的重要組成部分,針對(duì)水面障礙物的檢測(cè)問題,本文改進(jìn)了Cascade RCNN算法,在交并比平衡采樣、平衡特征金字塔和平衡的L1損失函數(shù)這三部分上對(duì)原算法進(jìn)行了平衡改進(jìn),進(jìn)一步緩解了檢測(cè)器在訓(xùn)練過程中的不平衡現(xiàn)象。仿真試驗(yàn)表明,本文改進(jìn)后的算法在對(duì)水面艦船目標(biāo)的檢測(cè)上召回率提升明顯,平均檢測(cè)精度得到了提高,可以為無人艇智能感知技術(shù)的發(fā)展提供參考。