陽 珊,王 建,胡 莉,劉 波,趙 皓,3
1.西南科技大學 信息工程學院,四川 綿陽 621010
2.深圳市朗馳欣創科技股份有限公司,廣東 深圳 518000
3.中國科學技術大學 信息科學技術學院,合肥 230026
目標檢測作為計算機視覺中的一項基本任務,以識別給定圖片中存在目標的類別和位置為目的,已被廣泛應用于各個領域,如人臉檢測、行人檢測、自動駕駛。近年來,隨著深度學習技術的不斷發展,基于深層卷積神經網絡的目標檢測方法層出不窮,主流的算法大致可分為兩類:兩階段目標檢測器(two-stage)[1-2]和一階段目標檢測器(one-stage)[3-4],前者將目標檢測任務分為兩步進行,較后者而言,結構更為復雜,計算開銷巨大,速度相對較慢,但相應的其檢測精度也更高。一階段目標檢測器得益于其高實時性,使其更容易在移動終端部署,故越來越多的學者投身于one-stage目標檢測的研究。YOLO[5-6]作為一階段目標檢測器的開山鼻祖,將物體檢測看作回歸問題,基于單獨的end-to-end網絡,完成從原始圖像的輸入到物體位置和類別的輸出。隨后SSD[7-8]系列算法的提出,進一步提升了一階段目標檢測器的實時性。
不同的網絡結構提出,使得分類和回歸預測精度不斷提升,實時性也在不斷提高。事實上,損失函數對模型的學習也至關重要,在Smooth L1之后,為提高回歸精度,提出了IoU loss[9]、GIoU[10]以及DIoU[11]一系列損失。但對于重疊目標場景,無論是網絡結構還是損失函數,目前的研究都相對較少。目標檢測任務中的重疊可分為兩類:一種是非目標物體的遮擋,這類遮擋常見的解決方式為通過增加樣本數量來提高模型的魯棒性,另一種是目標間的遮擋,通常需要提高網絡模型的辨別能力,對損失函數或網絡結構進行針對性改進。
本文針對目標密集場景目標識別率不高,基于固定經驗閾值的NMS算法,導致預測框不準確的問題,提出一種改進回歸損失函數與動態非極大值抑制的目標檢測框架。
RetinaNet[12]作為主流的one-stage目標檢測算法,采用ResNet+FPN作為骨干網絡提取特征,其網絡部分結構與FPN中提到的結構并不完全一致,它使用特征金字塔的P3、P4、P5、P6、P7,其中前3層與FPN中產生方式一樣,通過上采樣和橫向連接拼接產生,P6在特征層P5上再通過了3×3卷積核卷積得到,而P7則是在P6的基礎上添加RELU激活函數,然后再通過3×3卷積核卷積得到。FPN上選用的Anchor感受野從32×32到512×512,每層之間的長度為兩倍關系。每層金字塔有9個不同長寬比例和尺寸大小的Anchor,可適應不同尺度的目標。分類子網絡和回歸子網絡的參數不共享,但網絡結構相似,都是小型FCN網絡,利用金字塔層作為輸入,連接4個3×3的卷積層,再進行分類和回歸預測。分類損失函數是RetinaNet的亮點之一,Focal Loss基于交叉熵損失函數進行改進,減小負樣本的權重,提高正樣本的權重,旨在解決類別不平衡的問題,取得了不錯的檢測效果。
遮擋對目標檢測器存在兩個方面影響:第一,非目標物體對目標的遮擋會帶來目標信息的缺失,進而導致漏檢;而目標之間的相互遮擋,往往會引入大量的干擾信息,導致虛檢。第二,重疊使模型對NMS的閾值選取更為敏感,如圖1所示,目標周圍存在大量其他同類別目標時,其預測框的回歸會向其他目標偏移,導致目標的預測框定位不準確,且如果NMS閾值選取過小,周圍的預測框將被過濾掉,但該框又是正確的預測,NMS閾值選取過大,會帶來更多的虛檢。針對以上兩個問題,本文基于RetinaNet目標檢測框架,從回歸定位損失函數和非極大值抑制后處理算法兩個方面進行改進,提出D-RetinaNet,利用結合排斥因子Rep的GIoUloss替換SmoothL1回歸損失函數,降低候選邊框向鄰近真值偏移概率。并在回歸子網絡最后一層添加一個同步的density預測Head,并將預測值作為NMS方法的動態閾值,可有效緩解目標之間的相互遮擋導致模型學習不準確的問題。

圖1 遮擋示意圖Fig.1 Sketch of occluded target
RetinaNet原文采用Smooth L1回歸損失函數,雖取得了不錯的效果,但Smooth L1將邊界框的四個坐標值獨立地進行損失計算,并簡單相加,忽視了坐標值之間的關聯性。并且實際評價框的指標是計算預測框與真值框的IoU,具有相同大小Smooth L1(x)損失的多個檢測框,IoU差異可能很大,如圖2。而IoU Loss可以較好地改善這一點,但它也存在其他缺點,比如預測框和目標框相離時IoU損失值為0,無法對預測框進行優化。此外,兩框相交面積相等時,損失值相同,無法判斷預測框和目標框的相交情況。因此無法準確衡量定位信息,可能降低模型的檢測性能。

圖2 損失值對比圖Fig.2 Diagram of comparative analysis of loss
針對上述問題,使模型更能適應Anchor Box比例分布不均的情況,采用GIoU損失作為邊界框回歸預測的損失函數,GIoU計算示意圖見圖3,計算式如式(1)、(2):

圖3 GIoU示意圖Fig.3 Sketch map of GIoU

A、B分別代表兩個錨框和目標框,C代表可同時覆蓋A、B的最小矩形。通過計算C中沒有覆蓋A和B的面積占整個C總面積的比值,再用A與B的IoU減去這個比值,得到GIOU。
同時為提高模型對遮擋物體的檢測性能,在GIoU Loss基礎上加入一項排斥因子[13],用于增大預測框與周圍其他目標框間的距離,防止預測框向其他目標框回歸。排斥因子定義如式(3)~(6),這里預測框和其他目標框的度量距離不使用IoU,避免預測框足夠大時,導致損失值下降。

針對后處理算法NMS的過濾閾值單一,難以適應樣本多變的場景,在回歸分支最后一層增加一個密度預測分支,用于預測目標間的遮擋程度[14],將預測的密度值應用到NMS中,提高它的辨別能力,使其可自適應復雜多變的場景,減少假陽性和漏檢,提高檢測精度[15]。該分支的結構簡單,與回歸分支共享網絡參數,僅在回歸子網絡最后一層添加一個同步的density預測Head,由3×3卷積核和sigmoid激活層構成,幾乎不增加網絡的參數量,能保證模型訓練速度,網絡結構如圖4所示。

圖4 網絡結構圖Fig.4 Schematic diagram of network structure
對每個位置預測密度,通過計算與目標框G與周圍其他目標框的IoU,取最大的IoU值對預測值進行監督,式(8)為NMS算法閾值計算方式。密度估計損失函數選用簡單的smoothl1損失,如式(9),將其看作回歸任務進行學習。

圖5為使用密度d作為非極大值抑制的篩選閾值和傳統算法閾值的對比,可以看出D-NMS隨著迭代次數變化不斷調整閾值,而傳統NMS閾值始終保持不變。輸入圖片各個位置的目標重疊程度不同,不斷調整的閾值顯然更能適應場景的多變。

圖5 不同NMS方法閾值變化圖Fig.5 Threshold changes of different NMS methods
本實驗在PASCAL VOC和自制建筑垃圾數據集上進行訓練和測試。PASCAL采用VOC07+12(train+val)訓練進行,測試集采用VOC07 test。自制數據集利用Intel Real Sense采集到130張原始圖片,通過翻轉、添加噪聲、Mixup和Random Erase的方式對原始圖像進行增廣,最后得到847張圖片,增廣后的圖片如圖6所示。

圖6 數據集增廣效果圖Fig.6 Data augumention
并參照VOC的標注格式,利用LabelImg標注軟件進行標簽標記,數據集劃分為訓練集542張,驗證集135張和測試集170張。由于建筑垃圾部分類別差距十分小,拆卸后的磚塊顏色和形狀與木材非常相似,容易混淆。將其分為3個類別,包括Plastic、Wood、Concrete。建筑垃圾存在大量長條狀的木材和塑料等,導致模型對垃圾的定位效果不高,故數據處理時,利用K-means方法對數據集中的先驗框聚類[16],分別得到三組長寬比和縮放比用于生成Anchor box。
本文采用mAP(mean average precision)評估網絡模型檢測性能,計算公式如下:

其中,C表示數據集類別數,c表示某一類別,Recall表示召回率,表示樣本中的正樣本有多少被預測正確了,Precision為精確度,表示預測為正的樣本中有多少是真正的正樣本。TP則為正樣本被分為正的數量,FN為把正樣本錯誤地預測為負的數量,FP表示把負樣本錯誤地預測為正的數量。故TP+FN為全部正樣本數量,TP+FP為全部被分為正樣本的數量。
TP和FP根據IoU(intersetion over union)閾值定義,TP為與真值框IoU大于該閾值的預測,反之則為FP。IoU計算公式如下:

對比表1分析可知,替換損失函數為Rep-GIoU Loss,利用預測的密度引導NMS后,在PASCAL VOC上本文算法平均準確率可達到82.9%,比RetinaNet提高1.3個百分點,且檢測速度幾乎不變。對比SSD和YOLOv3,檢測精度分別提高6.1個百分點和4.2個百分點。FCOS作為Anchor-free目標檢測方法可達到79.1%準確率,高性能目標檢測器EfficientDet[17]準確率為78.9%,都低于本文提出方法準確率。

表1 不同目標檢測算法對比Table 1 Comparison of different target detection algorithms
對比分析表2可以看出,改進后的D-RetinaNet各類別目標檢測精度都有提升,包括部分小目標類別(如bird、Aeroplane)。表3對大中小目標檢測效果進行對比,PASCAL VOC數據集中較多的類別不存在小目標,中、大目標占比更大,可以看出各尺度目標檢測精度都有提升,改進后的小目標mAP提高了0.8個百分點。

表2 各個類別的AP對比Table 2 AP for each category %

表3 不同尺度目標檢測精度對比Table 3 Comparison of different scale objects %
對比分析表4可得,相比傳統的NMS算法,本文提出的Density-NMS提高了1.3個百分點,可達到與Soft-NMS[18]相當的準確率。但Soft-NMS犧牲了邊界框的高置信度,在保留更多真陽性預測框的同時也保留了更多的假陽性預測框。總體來看,本文算法的綜合性能是最優的。

表4 不同NMS算法對比Table 4 Comparison of different NMS algorithms
同時,本文在自制建筑垃圾數據集上對比了Retina-Net和改進后算法,檢測結果如表5。RetinaNet模型可達到92.3%的準確率,而改進后的D-RetinaNet可達到95.1%,提高了2.8個百分點。

表5 自制數據集效果對比Table 5 Comparison of self-made data sets
表6對每個模塊的貢獻進行了分析,可以看出改進后的GIoU損失的引入,將模型的平均準確率提高了2.5個百分點,將模型的平均準確率提高了2.5個百分點,同時Density_NMS的加入也進一步提高了檢測準確率,最終可達到95.1%準確率。檢測效果如圖7所示。由檢測圖可以看出,被遮擋目標的檢測效果有所提高,且對小目標的識別效果也不錯。

圖7 檢測結果對比圖Fig.7 Comparison of detect results

表6 各模塊貢獻Table 6 Contribution of each module
全部實驗運行環境為Ubuntu系統,顯存為24 GB,GPU為NVIDIA GeForce GTX TiTan X,利用CUDA10.1和CUDNNv7.6.5,加快GPU運算,編譯器為Pycharm。
在模型訓練中,Smooth Ln(x)中的常參數σ設置為0.5,類別置信度閾值為0.3,損失函數中α設置為0.5,訓練效果最好。IoU人工設定閾值為0.45,初始學習率為0.01,權重衰減為0.005,預防數據過擬合。選擇SGD優化器優化模型,Batch_size為12,損失最小為0.18和0.22。
本文提出D-RetinaNet檢測算法,在保證了檢測速度幾乎不變的同時,提高了RetinaNet算法對遮擋目標的檢測性能。基于GIoU loss添加排斥因子Rep,加強網絡模型對遮擋目標的學習,提高了模型的識別能力。Density預測模塊的構建不僅提高了后處理算法NMS的辨別能力,提高檢測器的檢測性能,使更多的準確預測框得以保留。同時可輔助回歸分支更好地完成回歸任務。實驗結果表明,D-RetinaNet在PASCAL VOC和自制數據集上的平均精度較RetinaNet分別提高了1.3個百分點和2.8個百分點。其中遮擋目標的精度提升更為顯著,驗證了改進GIoU loss和密度預測模塊的有效性。目前損失函數更傾向于回歸得到一個相對較大的檢測框,將來會針對該問題進一步研究,獲得更加貼合的預測框。