向華橋,崔文超,劉世焯,孫水發(fā)
(三峽大學 計算機與信息學院,湖北 宜昌 443000)
隨著人們對于目標檢測技術越來越廣泛的應用,對于一些特定場景下小目標的準確識別有了更多需求。同時小目標檢測性能的提高是目前目標檢測技術中的一個難點問題,改善小目標檢測性能對于整體目標檢測技術的更好應用有著重要意義。目標檢測主要包括兩個方面的內容,一是對圖像中感興趣目標的定位,二是對定位邊框中目標的分類。小目標目前沒有特定的大小定義,其具有尺寸較小,分辨率低,特征不明顯等特點,往往根據(jù)不同的應用背景小目標的尺寸定義略有不同,在MS COCO數(shù)據(jù)集中往往將尺寸小于32×32像素的目標定義為小目標。
傳統(tǒng)非深度學習的目標檢測算法[1]往往分為3個步驟,生成候選區(qū)域、特征提取、目標分類,生成候選區(qū)域后使用特征模板進行特征提取,然后對提取的特征信息用分類器分類后得到檢測結果。而基于深度學習的檢測算法[2]使用卷積神經(jīng)網(wǎng)絡學習目標特征,通過反向傳播誤差實現(xiàn)網(wǎng)絡系數(shù)自動更新,再將特征應用于具體的檢測過程。2012年以來,基于卷積神經(jīng)網(wǎng)絡(CNN)的目標檢測研究取得了重大的突破?;谏疃葘W習的目標檢測算法往往又可以分為單階段和兩階段兩大類[3],其中RetinaNet[4]是經(jīng)典的單階段算法之一,F(xiàn)aster RCNN[5]是經(jīng)典的兩階段算法之一?,F(xiàn)階段大部分目標檢測算法以及各種不同的改進都是針對常規(guī)尺度的目標,而對于小目標檢測效果不夠理想。相關研究[3,6,7]表明小目標檢測的瓶頸主要在于分類任務:小目標分辨率低,特征信息已經(jīng)不夠明顯,但傳統(tǒng)深度網(wǎng)絡的目標檢測方法在特征處理過程中的下采樣等操作會進一步導致信息損失,極大限制了其檢測的精度。
本文從減少特征處理過程中特征信息損失這個關鍵影響因素入手,結合CARAFE和HRNet的設計思想,提出了一種特征信息處理模塊CHRNet,用于整體目標檢測模型的特征信息處理部分,同時針對樣本不平衡問題對Focal Loss[4]進行一定調整,加上合適的anchor設計。以上改進在兩種代表性的目標檢測方法RetinaNet和Faster RCNN上加以應用,在MOCOD和VEDAI[8]兩個數(shù)據(jù)集上進行實驗。具體來說,本文的主要貢獻包括:
(1)針對小目標檢測中特征信息損失問題,提出了一種高表征能力的特征信息處理模塊CHRNet;
(2)針對小目標檢測樣本不平衡問題對損失函數(shù)進行了改進調整,以及設計了更適合小目標的anchor,相對更加全面地對影響因素進行了研究改進。
對于特征信息損失問題,目前主流做法有兩種,一是使用圖像金字塔結構,即將原始圖像進行一系列縮放,結合超分辨率等,但是目前被證明會大幅增加內存和計算開銷;二是在輸入圖像的特征信息上進行操作,相對開銷較小。基于后者的思想,于2017年提出的特征金字塔網(wǎng)絡(FPN)[9]是取得的最大進展之一。自下而上通路是CNN對特征圖逐層前向卷積的過程,低層的網(wǎng)絡更關注細節(jié)信息,高層的網(wǎng)絡更關注語義信息,自上而下通路是對特征圖上采樣的一個過程,然后將處理過的低層特征和高層特征進行融合,利用低層特征準確的位置信息和高層特征提供的語義信息,使得輸出的特征圖具有更好的表征能力,現(xiàn)有各種更優(yōu)秀的特征金字塔結構[10]都是基于FPN發(fā)展而來。同樣基于對特征信息的處理,于2019年提出的HRNet針對人體姿態(tài)估計問題從分類網(wǎng)絡的主體部分著手,由于常用的分類網(wǎng)絡學到的表征分辨率較低,很難在空間精度敏感的任務上取得準確的預測結果,其用并行連接不同分辨率的卷積子網(wǎng)代替?zhèn)鹘y(tǒng)的串行連接,在不同分辨率的并行子網(wǎng)間進行多次信息交換和特征融合,進而提高了整體網(wǎng)絡的表征能力。于2019年提出的CARAFE上采樣算子從特征信息處理過程中常用的上采樣操作入手,整個算子相對于傳統(tǒng)的上采樣方法,它能夠在一個較大的感受野內聚合信息,能夠動態(tài)適應特定實例的內容,同時保持一定的計算效率,相對能夠更有效提取目標特征信息。其它相關的方法[11-14]也對該方面有所改善。
對于樣本不平衡問題,一直是影響目標檢測精度的重要因素。樣本不平衡問題是指在訓練的時候各個類別的樣本數(shù)量極不均衡,負樣本的數(shù)量遠大于正樣本,簡單樣本遠大于難例,從而導致訓練無法收斂到很好的解。對于小目標而言,由于小目標往往占據(jù)整幅圖很小一部分,其正負難易樣本往往是更不平衡的。目前有不少針對樣本不平衡問題的解決方法提出,比如OHEM(在線難例挖掘)[15]、GHM(梯度均衡化)[16]、Focal Loss、DR Loss[17]等。
以上工作從不同角度有效改善了小目標的檢測性能,但是很多只是對小目標檢測有一定幫助且針對特定的需求場景,而且小目標和常規(guī)目標的檢測性能仍然存在著顯著差異,因此具有一定改進優(yōu)化的空間。
在減少特征信息損失方面,從整體模型的特征信息處理部分入手,利用改進的高分辨率表征的HRNet[18]網(wǎng)絡對特征信息初步處理,而后結合FPN網(wǎng)絡進行特征信息細化處理,同時在FPN中加入CARAFE[19]上采樣算子進一步減少特征信息處理過程中的損失,隨著特征信息的處理進程,在多次特征圖融合中設計了不同的融合方法,同時對相應環(huán)節(jié)采用了越來越有效的上采樣方法,在保持一定計算效率的條件下最大化整體特征信息處理模塊的表征能力。
本文設計的特征信息處理模塊CHRNet的網(wǎng)絡結構如圖1所示。
圖1 CHRNet特征信息處理模塊
上采樣可以簡單理解為進行圖像的放大或者圖像的插值,在目標檢測任務中,上采樣操作可以表示為每個位置的上采樣核和特征圖中對應領域的像素做點積。傳統(tǒng)常用的上采樣方法有最近鄰插值法、雙線性插值法等,雙線性上采樣相對計算量較大,但上采樣效果更好,而CARAFE上采樣算子相對于傳統(tǒng)的插值方法,在保持一定計算效率的同時能夠更有效保留特征信息。
該模塊作為整體模型的特征信息處理部分,在輸入一張圖片后,首先是對其特征圖進行前向卷積,同時保留不同分辨率的多個子網(wǎng)構成并行網(wǎng)絡,圖1(a)中有3個并行網(wǎng)絡,同時網(wǎng)絡可分為3個階段,每個階段比上一個階段多一條分支,新增分支是上一階段的不同分辨率的特征圖進行3×3跨步卷積融合后的結果,分辨率是上一分支分辨率大小的一半,通道數(shù)為上一分支的兩倍。同時在每一階段的并行分支中保留殘差單元保證網(wǎng)絡延伸時不會梯度彌散以及網(wǎng)絡退化。圖1(a)中的高層特征圖是對上一階段的特征圖進行圖1(b)所示的相關操作后再通過1×1 conv 融合得到,其中上采樣采用最簡單的最近鄰上采樣方法。在并行子網(wǎng)反復交換特征信息以及不同分辨率的特征圖進行融合后,該部分網(wǎng)絡的表征能力得到了增強。
在特征圖輸入到FPN網(wǎng)絡前,不是簡單用高階段得到的特征圖作為輸入,而是對高階段網(wǎng)絡的所有不同分辨率的特征圖(圖1(a)中有3個)經(jīng)過圖1(c)中的對應操作后得到。圖1(c)中在不同分辨率特征圖進一步融合的時候,為了避免下采樣(跨步卷積)帶來的信息損失,只進行相對低分辨率特征圖的上采樣,然后通過1×1 conv融合,其中上采樣采用更為有效的雙線性上采樣。融合后的不同特征圖之間的分辨率依然保持兩倍的關系,剛好符合FPN網(wǎng)絡后續(xù)特征圖進一步融合的分辨率要求,從而直接得到了FPN自下而上通路中不同層的特征圖。
最后在FPN自上而下通路中,如虛線框g所示,將經(jīng)過CARAFE上采樣后的特征圖與自下而上通路中相應的特征圖進一步融合,然后經(jīng)過一個3×3 conv消除上采樣的混疊效應后得到最終的輸出特征圖,用于模型后續(xù)的分類等操作。
本文的模型主體結構[6]是基于經(jīng)典的單階段方法RetinaNet和經(jīng)典的兩階段方法Faster RCNN。將以上CHRNet模塊應用于上述兩類方法,同時從整體模型的損失函數(shù)入手,加入并改進常用的Focal Loss損失函數(shù),其中Faster RCNN模型中,結合小目標檢測的特點,主要將Focal Loss用于RPN部分,進而改善樣本不平衡問題;最后針對小目標設計了更合適的anchor,也是有效提高了整體模型的檢測精度。
Focal Loss主要是為了解決單階段目標檢測中正負樣本比例嚴重失衡的問題,該損失函數(shù)降低了大量簡單負樣本在訓練中所占的權重(小目標檢測中往往是大面積的背景),使得模型在訓練時更專注于難分類的樣本(小目標檢測中往往是部分小目標以及部分誤檢的負樣本)。
Focal Loss是在交叉熵損失函數(shù)基礎上進行的修改,下面是Focal Loss損失函數(shù)(二分類)的形式
(1)
y′是分類器預測后經(jīng)過激活函數(shù)的輸出,是在0到1之間的一個概率值,當存在大量簡單負樣本時,交叉熵損失函數(shù)在大量簡單樣本的迭代過程中比較緩慢且可能無法優(yōu)化至最優(yōu)。Focal Loss則加了兩個關鍵參數(shù)γ,α, 其中γ主要是解決難易樣本不平衡問題,使得易分類樣本(分類器預測值y′高)的損失減少,使其更關注于難分的樣本,有效緩解了那些誤檢和漏檢的情況。此外,平衡因子α主要是用來平衡正負樣本本身的比例不均。
COCO數(shù)據(jù)集中將像素大小0×0到32×32的目標定義為小目標,將像素大小32×32到96×96的定義為中等目標,由于在小目標檢測中負樣本往往是大面積的背景,根據(jù)不同尺寸目標之間的面積大小關系,為了更好地平衡小目標情況下的正負樣本比例,將Focal Loss損失函數(shù)修改為如下形式
(2)
同時,實驗發(fā)現(xiàn)檢測結果中誤檢(比如將某塊背景檢測為目標)和漏檢(比如有些小目標直接沒有檢測出來)的情況相對比較多,同時隨著γ的增大,易分類的樣本的損失比重會變得越來越小,在小目標檢測中存在較多的誤檢和漏檢的樣本以及小目標本身往往是難分類的樣本,所以嘗試合理增大γ, 從而改善小目標檢測的精度。
現(xiàn)有的大部分基于深度學習的目標檢測算法都有預先的錨框(anchor)設計,預設一組尺度不同位置不同的固定參考框,每個參考框負責檢測與其交并比大于閾值的目標,anchor將目標檢測轉換為了“這個固定參考框中有沒有認識的目標以及目標框偏離參考框多遠”的問題,從而有效提高了模型的檢測精度和效率。
設anchor矩形框的寬為W,高為H,W/H=anchor_ratios, 針對小目標尺寸相對較小的特點,相對于常規(guī)的目標檢測情況,可以做以下設置,其中W即anchor_strides=[4,8,16,32,64] (與默認配置有5個值保持一致), anchor_ratios=[0.5,1.0,2.0], 即針對參考框寬高的3個不同縮放比例,同時設定anchor整體的縮放因子anchor_scales=[4], 這樣小點的anchor尺寸為(4*4=16)16×16, 符合一般小目標尺寸往往在32×32附近的要求,這樣在每一個位置會生成更符合小目標尺寸的anchor,回歸的好不如預設的好,進而改善小目標的檢測性能。
本文實驗主要在MOCOD和VEDAI這兩個數(shù)據(jù)集上進行實驗。MOCOD數(shù)據(jù)集是2019年清華大學舉辦的小目標檢測競賽的數(shù)據(jù)集,該數(shù)據(jù)集基于虛擬仿真環(huán)境創(chuàng)建,模擬無人機在低空飛行時對城市道路上行駛的多種車輛進行航拍,共有超過13 000張圖片。識別目標包括12種車輛(BMW、Nissan、Mustang、Mini、Volkswagen、Policcar、Lincoln、Tazzar、Jeep、Truck、Bus、SUV);VEDAI數(shù)據(jù)集是一個包含不同交通工具的航空影像數(shù)據(jù)集,其中絕大部分都是符合小目標尺寸的不同交通工具,本實驗主要在其中1024×1024尺寸的1246張圖片上進行,由于數(shù)據(jù)量相對較小,為了防止網(wǎng)絡出現(xiàn)過擬合等不好的情況,對其進行了對比度增強、水平翻轉、隨機方向旋轉等數(shù)據(jù)增強手段,將數(shù)據(jù)擴充至約5000張圖片,其目標類別主要包括不同的交通工具(car、truck、pickup、tractor、camping car、boat、motorcycle、bus、van)。以上所有數(shù)據(jù)集都被處理為標準COCO數(shù)據(jù)集格式,其中約80%作為訓練集,約20%作為測試集。
實驗環(huán)境為ubuntu18.04,CUDA9.2,python3.7.4,pytorch1.2.0,mmdetection v1.0c1[20],CPU為Intel(R) Xeon(R) E5-2680 v3,GPU為2個2080Ti。
實驗基準以mmdetection上默認方法為準,其中Faster RCNN為faster_rcnn_r50_fpn_1x,即主干網(wǎng)絡默認經(jīng)過預訓練的ResNet50[21]且采用了fpn網(wǎng)絡,1x表示訓練迭代次數(shù)為標準的12個epoch,類似的,RetinaNet為retinanet_r50_fpn_1x。本文考慮到和默認的ResNet50的網(wǎng)絡參數(shù)量和計算復雜度相近,實驗中選擇基于系列網(wǎng)絡中最小的HRNetV2-W18[22]網(wǎng)絡進行改進,其中W18表示的是最后3個階段高分辨率子網(wǎng)絡的寬度,和ResNet50中50表示的網(wǎng)絡深度含義類似。優(yōu)化函數(shù)采用常用的帶動量的SGD,學習率根據(jù)線性縮放規(guī)則動態(tài)調整,比如在4 GPUs和2 imgs/gpu 的條件下有l(wèi)r=0.01,則2 GPUs和1 img/gpu的條件下lr=0.01/(4*2/2*1)=0.0025, 不同數(shù)據(jù)集上由于圖片尺寸不同學習率略有調整。
本實驗主要關注檢測精度mAP和檢測速度FPS兩個主要指標,mAP以COCO數(shù)據(jù)集的精度評估為標準,其評估了在不同交并比(IOU) [0.5∶0.05∶0.95] 下的AP,以這些閾值下平均AP作為最終結果mAP,相較于VOC數(shù)據(jù)集格式而言COCO數(shù)據(jù)集的評測標準更加嚴格。
4.3.1 數(shù)據(jù)集MOCOD
在MOCOD數(shù)據(jù)集上對改進后Focal Loss測試不同γ對mAP的影響,見表1。
在MOCOD數(shù)據(jù)集上對CARAFE測試不同Kup和Kencoder對mAP的影響,見表2。
表1 MOCOD數(shù)據(jù)集上不同γ對于mAP的影響
表2 MOCOD數(shù)據(jù)集上不同的Kup,Kencoder對于mAP的影響
從表1中可以看出,適當增大γ, 進一步緩解了小目標中的樣本不平衡問題,相對于默認的γ=2,γ=3時在兩種方法中對于小目標的檢測是更有幫助的。
從表2中可以看出,適當增大Kup和Kencoder可以有效提升CARAFE上采樣過程中上采樣核和對應點積特征圖的分辨率,相對于默認的Kup=5,Kencoder=3, 小目標檢測情況下Kup=9,Kencoder=7的時候檢測效果更優(yōu)。
(2)稻作產業(yè)缺乏品牌,且售價低廉,無額外附加值,且土地多質次,病蟲害影響較大,約占當年產量的20%~30%。
表3是加入相應因素后的測試結果,隨著不同部分的加入,mAP得到了穩(wěn)定的提升,其中Focal Loss的加入和anchor的設計改動對檢測速度FPS幾乎沒有影響,更多參數(shù)量的CARAFE上采樣算子使FPS略微降低約1個點;同時表3中也在更深的ResNet上進行了實驗,mAP同樣得到了進一步提升,驗證了在加入各種因素后整體模型的穩(wěn)定性。
表3 默認方法基礎上加入Focal Loss、CARAFE和anchor設計以及在不同網(wǎng)絡深度下的實驗結果
表4則是進行相應改進后的實驗結果,在損失少量檢測速度的情況下,可以看到相較于改進前檢測精度mAP有了很大提升,其中CHRNet帶來的精度提升最高,F(xiàn)aster RCNN中提升了3.6個百分點,RetinaNet中提升了4.1個百分點。
表4 加入上述3種因素且分別進行相應改進后的實驗結果
表5 默認方法基礎上加入Focal Loss、CARAFE和anchor設計后的實驗結果
4.3.2 數(shù)據(jù)集VEDAI
由表5和表6可以看出,在加入各種因素以及進行相應改進后,mAP同樣有穩(wěn)定的提升,和MOCOD的數(shù)據(jù)集上的實驗結果相似。由表6中可以看到,CHRNet帶來的提升最大,F(xiàn)aster RCNN中提升了4.1個百分點,RetinaNet中提升了3.6個百分點。
表6 加入上述3種因素且分別進行相應改進后的實驗結果
從以上實驗結果可以看出,在Faster RCNN的RPN階段用Focal Loss代替默認的交叉熵損失的時候,mAP有1個百分點左右的提升,F(xiàn)ocal Loss改進后均有0.6個百分點左右的提升,對檢測速度FPS幾乎沒有影響;加入CARAFE時,mAP均有1個百分點左右的提升,改進后均有0.5個百分點左右的提升,同時檢測速度FPS略微降低約1個點;加入提出的特征提取模塊CHRNet后,mAP有3.8個百分點左右的提升,同時檢測速度FPS小幅降低2個點左右;加入合適的anchor設計后,mAP均有5個百分
點左右的提升,對檢測速度幾乎沒有影響。
圖2是應用CHRNet后在不同數(shù)據(jù)集上的部分檢測結果。
圖2 不同數(shù)據(jù)集的檢測結果
圖3 應用CHRNet前后部分檢測結果
從上面不同數(shù)據(jù)集的部分檢測結果示例圖和應用前后對比圖中可以直觀看出,應用CHRNet后,檢測結果的置信度整體上得到了提高,同時漏檢等情況也得到了改善,說明在檢測過程中特征信息損失減少,對于目標的分類更加準確,進而有效提高了小目標檢測的精度。
綜合考慮,本文的研究對于提升小目標檢測性能有一定幫助,同時自己的一些改進也是有不錯效果,特別是合適的anchor設計和提出的特征提取模塊CHRNet帶來的提升最大。
本文針對小目標檢測問題,從減少特征信息損失這個主要影響因素著手,同時針對樣本不平衡問題也進行一定改進,并結合合適的anchor設計,在常用的單階段方法RetinaNet和兩階段方法Faster RCNN進行了實驗;針對特征信息損失問題,在特征圖處理過程中,通過設計合適的特征圖融合方式以及采用越來越有效的上采樣方法,結合HRNet和CARAFE上采樣算子的設計思想,在保證一定計算效率的條件下設計了一個具有高表征能力的特征提取模塊CHRNet,同時對CARAFE上采樣算子進行了針對性調優(yōu);針對樣本不平衡問題,對Focal Loss進行了改進調整,同時對關鍵參數(shù)γ進行了實驗調優(yōu);在兩個符合小目標條件的數(shù)據(jù)集上進行了相關實驗,結果表明,本文的改進在一定程度兼顧檢測速度的條件下有效提升了小目標檢測的精度,在COCO數(shù)據(jù)集標準下相對于默認方法mAP均有約10個百分點的提升,其中本文的改進有約4.5個百分點(不包括anchor設計),CHRNet帶來的提升約占80%。
未來將考慮從以下方向來進一步研究改進:一是嘗試將簡單有效的Focal Loss結合其它方法進一步緩解小目標檢測中更突出的樣本不平衡問題;二是考慮進一步改進CHRNet模塊使得對檢測精度的提升更大,對檢測速度的影響更?。蝗强紤]結合更優(yōu)秀的目標檢測方法,從整體方法上改善;從而進一步提升小目標檢測的性能。