卜子渝,楊 哲,,劉純平
(1.蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006;2.江蘇省計算機信息處理技術重點實驗室,江蘇 蘇州 215006;3.江蘇省大數據智能工程實驗室,江蘇 蘇州 215006)
目標檢測是計算機視覺的基礎任務之一,關注圖像中特定目標的類別及位置,傳統的目標檢測模型的待檢測目標種類往往是單一的,并且模型整體性能不高[1-2]。隨著卷積神經網絡的興起,涌現出了大批基于深度學習的目標檢測模型。主要分為兩類:二階段模型(two-stage)和單階段模型(one-stage)。
二階段目標檢測模型誕生較早,基本由兩部分構成,分別完成候選框提取任務(Region Proposal)以及分類回歸任務(Classification &Regression)。二階段模型在早期較單階段模型有著更高的檢測精度,但是算法復雜。而單階段目標檢測模型直接將目標框的定位問題視為回歸任務來處理,可以直接預測不同目標的類別和位置。單階段模型的速度占優,并且在精度上正逐漸趕超二階段模型[3]。
隨著單階段模型的發展,還演進出了無需錨框(Anchor-Free)的目標檢測器,降低了人工設置參數的數量,如CenterNet[4],FCOS[5]等,并有相關應用[6]。此外,為了獲得更高的精度,檢測模型運用可縮放的主干網絡也成為一種主流方法,如ResNet[7],ResNeXt[8],AmoebaNet[9]等,可以將輸入圖像分辨率泛化到512至1 536。然而,在訓練過程中,單階段模型往往會遇到正負樣本數量不均衡的問題,Lin等人提出了Focal Loss嘗試解決該問題[10]。但在Redmon提出的YOLOv3中,作者在引入Focal Loss后,檢測精度卻下降了大約2%[11]。
該文提出了一種無錨框的單階段目標檢測模型,并引入了一種動態分配正負樣本的方法,緩解了模型訓練時正負樣本不均衡的問題。模型主干網絡采用可縮放的EfficientNet[12]。EfficientNet將網絡深度、網絡寬度和輸入分辨率聯系起來,不僅性能與其他常見的主干網絡相當,還減少了網絡的參數量和計算量。回歸損失函數的計算上,文中模型采用CIOU(Complete-IOU)[13],解決了預測框與真實框不重疊時無法進行反向傳播的問題。
深度學習興起之前,目標檢測任務主要依靠滑動窗口和分類器來完成。其檢測過程大致可以分為三步:先利用不同尺寸的滑動窗口選取圖像中的某些部分作為候選區域,再提取候選區域相關的視覺特征,最后使用一個已經訓練好的分類器完成對目標的分類。經典的模型有:Viola和Jones在2001年提出的人臉檢測器,在AdaBoost算法的基礎上,使用Haar-like小波特征和積分圖方法進行人臉檢測[14]。Dalal等人則結合方向梯度直方圖(Histogram of Oriented Gradient,HOG)和支持向量機實現了對行人的檢測。然而,這些傳統模型除了可檢測目標的種類單一外,還存在檢測速度慢的問題。
深度神經網絡被引入目標檢測領域后,使模型性能有了大幅提升。首先出現了二階段目標檢測模型,如R-CNN[15],SPP-Net[16],Faster R-CNN[17],HyperNet[18]等。二階段目標檢測的流程可分為區域建議(Region Proposal)階段和分類回歸(Classifier &Regression)階段。R-CNN是最早出現的二階段目標檢測模型[15],在區域建議階段使用選擇搜索算法(Selective Search),從圖像中提取可能包含物體的候選區域,再利用卷積神經網絡提取每個候選區域特征,最后輸入到SVM進行分類。SPP-Net則改進了R-CNN因為候選區域尺寸不同而需要統一縮放的缺陷,通過特征金字塔池化,實現了多尺度輸入[19]。Faster R-CNN則在區域建議階段提出了區域建議網絡來替代選擇搜索,并首次引入錨框(Anchor)——模型基于錨框完成目標的定位任務,提升了檢測速度。總的來說,二階段模型較為復雜,需要訓練兩部分網絡,難以到端到端,檢測速度也不如單階段模型。因此,單階段目標檢測模型逐漸成為了主流。
單階段目標檢測模型直接在深度神經網絡中提取特征,完成定位和分類任務,有著更快的檢測速度,主要有SSD[20],RetinaNet以及YOLO系列[21-22]等。YOLO模型率先采用一個卷積神經網絡實現端到端的目標檢測,檢測速度提升顯著,但精度表現一般。SSD和YOLOv3都引入了多尺度特征圖提高檢測精度,并效仿了Faster R-CNN,基于錨框完成定位任務。針對單階段模型在訓練時的正負樣本數量不均衡問題,Lin等人在RetinaNet中提出了Focal Loss,從損失函數的角度來彌補負樣本數量遠大于正樣本的差異。但是在YOLOv3中,作者引入Focal Loss后,模型的檢測精度卻損失大約2%,其原因是負樣本過多,造成了噪聲干擾。YOLOv4主干網絡使用了CSPDarknet53,并引入了CIOU提高檢測精度,YOLOv5使用了可縮放的主干網絡,進一步提升模型性能,但二者仍依賴基于手工設置的錨框來預測目標位置,這些錨框的參數往往會對精度產生較大的影響,找到完美的預設錨框也十分困難[23]。于是有研究者提出了Anchor-Free目標檢測模型,意在去掉預設錨框的環節,讓網絡自行學習目標框的位置與形狀,代表的模型有CenterNet和FCOS等。CenterNet將目標檢測視為關鍵點預測問題,使用關鍵點三元組(左上,右下,中心點)來確定一個目標,但只對網絡最后一個特征層做處理,缺乏多尺度信息。FCOS提出中心度的概念,衡量邊界與目標中心的歸一化距離。但是該方法增加了算法復雜度,并且模型在不預測中心度的情況下,性能會弱于Anchor-Based的檢測模型。
針對單階段模型存在的這兩個問題——正負樣本不均衡以及錨框需要人工設置,該文提出一種基于EfficientNet的無錨框單階段目標檢測模型。該模型以特征點直接預測目標框的中心點和寬高,省去了人工設置錨框的環節,并引入了一種正負樣本動態分配的算法。與Focal Loss不同的是,該分配算法能夠先過濾無用的特征點,并在訓練時動態分配正負樣本,無需通過損失函數來彌補樣本不平衡帶來的差異。此外,文中模型使用CIOU計算回歸損失,解決了預測框與真實框不重疊時無法進行反向傳播的問題,進一步提高了檢測精度。最后通過與主流模型在VOC07+12數據集上的對比,證明了該方法的有效性。
提出的AEOD模型整體結構如圖1所示。AEOD使用EfficientNet作為模型的主干網絡,提取網絡中{L3,L4,L5,L6,L7}五個特征層組成特征金字塔,這五個特征層分別經過上下兩個方向的特征融合后(圖1模型整體結構中的虛線部分),輸出三個尺度分別為64×64,32×32以及16×16的有效特征層。模型根據有效特征層中的特征點與目標框的相對位置,篩選出負責預測目標框的特征點,再基于特征點的預測結果計算代價矩陣動態分配正負樣本。這些特征點直接預測目標框在圖像中的中心點以及寬高,并對目標進行分類。最后使用CIOU計算回歸損失,使用二分類交叉熵(Binary Cross Entropy)計算分類損失。

圖1 AEOD的整體結構
為了獲得更高的檢測精度,將可縮放的主干網絡運用于目標檢測模型已經是一種常用方法,如ResNet,ResNeXt和AmoebaNet等。然而它們都沒有關注卷積神經網絡的深度(卷積層數,Layers)、寬度(卷積核通道數量,Channels)以及輸入圖像的分辨率(圖像的寬高,Resolution)之間的關系。使用規模龐大的神經網絡對一幅分辨率較低的圖像進行卷積時,有效的特征提取往往在淺層就已經完成了,導致計算量和參數量的浪費,而對于高分辨率的圖像,應該用更深,更寬的網絡,從而獲得更大的感受野。EfficientNet則可以平滑地控制模型的深度、寬度以及輸入分辨率,形成一種組合關系。其關系如下:
(1)
其中,α,β,γ為常數,可以由網格化搜索得到。Φ為縮放系數。由于模型的總體計算量FLOPs與d·w2·r2成正比,將神經網絡的深度增加一倍意味著計算量增加一倍,而增加一倍的寬度或者輸入分辨率,計算量則會增加兩倍。因此整體模型的計算量可以近似使用(α·β2·γ2)Ф來衡量。該文將α·β2·γ2限制在2左右,因此縮放因子對整體計算量的影響保持為2Φ。

表1 EifficentNet-b0的網絡結構
表1為用于圖像識別任務的EifficentNet-b0的基準結構(Baseline)。EifficentNet使文中模型的輸入圖像分辨率可以覆蓋512×512至1 280×1 280的范圍。檢測精度也隨著分辨率的上升而提高,但計算量(FlOPs)與參數量(Params)會有所增加。表2為文中模型的配置值,其中α,β,γ三個參數分別為1.1,1.1和1.18。

表2 AEOD的模型配置
AEOD在網絡前向轉播過程中提取{L3,L4,L5,L6,L7}五個特征層組成特征金字塔,這五個特征層分別經過上下兩個方向的特征融合,輸出三個尺度分別為64×64,32×32以及16×16的有效特征層。特征融合過程采用通道注意力機制,設置可學習的參數w,讓網絡在訓練過程中自我學習特征通道的權重。特征融合如式2、式3所示,其中ε設置為0.000 1,避免訓練時出現數值不穩定。
(2)
(3)
AEOD基于提取的有效特征層中的特征點直接預測目標框的中心點和寬高。這些特征層的寬高分別為64×64,32×32和16×16。以輸入分辨率為512×512為例。有效特征層映射至輸入圖像上,特征點在圖像上均勻分布,步長為8,16和32,分別形成了由4 096,1 024和256個網格點組成的網格圖。網格點即對應特征層中的特征點。通過前向傳播AEOD為每個特征點預測一組數據(預測框),包括目標可能的中心點位置、寬高以及目標的類別。
預測框的中心點、寬高根據如下公式獲得,基于第i個特征點得到的目標框以li=(lx,ly,lw,lh)表示,pi=(px,py,pw,ph)為模型為第i個特征點所預測的數值,grid為網格中的特征點位置,stride為步長。
(4)
(5)
(6)
(7)
針對單階段目標檢測模型在訓練時容易產生正負樣本不平衡的問題,AEOD引入一種動態分配正負樣本的方法,根據特征點位置、特征點所產生的預測框與真實框的IOU,為目標動態分配正負樣本。模型在訓練的過程中主動篩選正負樣本,從而達到平衡二者數量的目的。具體算法流程如圖2所示。模型先篩選出落在目標框內的特征點,對基于這些特征點得到的預測框計算與真實框的IOU損失和分類損失,最后根據這些損失組成的代價矩陣來動態分配正負樣本。

Algorithm: Dynamic P/N Sample AssignmentInput:I is an inputimgaeA is a set of anchor pointsG is the ground-truth annotations for objects in image IL is location of each anchor point in imageOutput:π is the dynamic P/N sample assignment plan1. m←|G|, n←|A|2.Tm×n←ZerosInit3.Pcls, Pbox←Forward(I, A)4. For i=0 to m do:For j=0 to n do:Ti,j←IsInGround-TruthBox(Lj, G)5. Pairwisecls cost: ci,j = BinaryCrossEntropyLoss(Gicls, Pjcls)6. Pairwise reg cost:ci,j = IOULoss(Gibox, Pjbox)7.Costm×n←cls cost+ reg cost+ ~Tm×n8. If Ai in ground-truth box according to Tm×n: (1) Select the leastCosti,j for Gi as positive sample (2) Select others as negative sample9. Compute assignment plan π according to Eq.810. Return π
在單階段目標檢測模型中,IOU(Intersection of Union)是預測框與真實框交集與并集的比值。IOU損失則用來度量這兩個框的差異。然而,在預測框與真實框沒有重疊部分時,IOU的數值是0,無法產生梯度,參數無法得到更新,模型得不到訓練。此外,當多個形狀不同的預測框與真實框的IOU相同時,IOU損失無法度量它們之間的優劣。
(8)
LOSSIOU=1-IOU
(9)
AEOD引入了CIOU。CIOU不僅可以描述預測框與真實框重合面積的大小,還可以度量二者的長寬比的差異與中心點距離。即使兩個框沒有重疊部分,仍可以依靠其他差異來產生梯度,模型參數仍可以獲得更新。CIOU的計算流程如下:
(10)
(11)
(12)
(13)
其中,c2表示目標框與預測框的最小外接框的對角線距離,ρ2(b,bgt)表示兩個框的中心點距離,v則表示二者在長寬比上的差異。
圖3直觀地表示了IOU與CIOU的區別。

圖3 IOU與CIOU對比
實驗環境配置如下:Ubuntu18.04操作系統,32核Intel CPU,32 GB內存,英偉達GeForce V100,128 GB存儲空間。程序采用Python語言編寫,版本為3.7。深度學習框架為Pytorch1.7,其他第三方庫包含Numpy1.19,Scipy1.4.1以及Pycocotools2.0.2等。圖形處理器驅動為CUDA10.1和Cudnn7.6。
預訓練是訓練深度學習模型的常用技術手段,該文將模型的主干網絡在ImageNet數據集上進行預訓練,主干網絡的參數不再隨機初始化。
除了隨機縮放和隨機水平翻轉等數據增強方法外,該文還采用了mosaic數據增強。不僅豐富了待檢測物體的背景,還增加了數據集中小目標的數量,進一步提高了模型的訓練效果。
該文使用目標檢測領域中的通用數據集——Pascal VOC來評估模型的性能。實驗訓練集默認使用VOC07+12數據集,測試集使用VOC07test。模型的主要評價指標包括:平均精度均值(mean Average Precision,mAP)、小目標識別精度(Average Precision for Small Objects,APS)、中目標識別精度(Average Precision for Medium Objects,APM)、大目標識別精度(Average Precision for Large Objects,APL)和速度指標每秒幀數(Frames Per Second,FPS)等。其中小、中、大目標分別指圖中像素在32×32以下,32×32至96×96之間及96×96以上的物體[24]。除了精度指標外,還比較模型在召回率上的表現。其中RecallS,RecallM和RecallL分別表示對小、中、大目標的召回率。
表3展示了文中模型(AEOD)與其他目標檢測模型在VOC07test數據集上的測試結果。由表3可以看出,文中模型的平均精度均超過了與之對應的YOLOv5模型,分別達到了87.6%(+3.3%),89.1%(+1.9%)和90.2%(+1.2%)。YOLOv5針對網絡不同的深度和寬度主要分成了S,M和L,但是輸入分辨率固定。由于使用了寬度、深度、分辨率組合縮放的主干網絡EfficientNet,AEOD的輸入圖像大小并不固定,可以隨著網絡的擴大而增加。此外,文中模型也取得了較快的檢測速度,如縮放因子Φ=3的AEOD-M檢測速度達到了58.8 FPS,超過了同樣是無錨框的CenterNet(+23.8 FPS)和FCOS(+6.6 FPS),并且檢測精度較二者分別提升了12.0%和4.8%。表3還比較了基于Transformer的Detr[25],AEOD在mAP和FPS指標上較其都具有優勢。

表3 各模型在VOC07test上的測試結果對比

續表3
模型在VOC07test數據集上完整的測試結果如表4所示,指標除mAP與FPS外,還有總浮點運算次數(FLOPs)以及參數量(Params)。從表中可知,文中模型可接受圖像分辨率能夠從512×512泛化至1 280×1 280,檢測精度也隨著上升。其中精度最高的AEOD-X模型(縮放因子Φ=5)輸入分辨率為1 280×1 280,平均精度達到了91.3%,檢測速度為32.1 FPS。但是模型的擴大也帶來了計算量和參數量的增加,AEOD-X擁有最大的40.9 G總計算量和25.3 M的總參數量。最輕量的AEOD-Nano檢測速度最快,可以達到102.3 FPS,同時檢測精度也保持在了80%以上(80.2%)。

表4 AEOD各模塊在VOC07test上的測試結果對比
表5展示了模型對不同大小的目標檢測精度對比。其中mAP@0.5和mAP@0.75表示IOU的閾值分別為0.5和0.75時的平均精度,mAP@[0.5,0.95]表示:獲取IOU以0.05的步長從0.5開始遞增到0.95時的全部mAP后再取平均。APS,APM和APL分別表示對小、中、大目標的AP值。從表中可以看出mAP最高的AEOD-X對于各種不同大小目標的檢測效果也最佳,但計算量和參數量最大。
表6展示了模型在VOC07test數據集上對不同目標的召回率(Recall)表現。表中的maxdets=k,k=1,10,100,分別表示取置信度最高的1個,10個或100個預測結果進行評估。而RecallS,RecallM和RecallL分別表示對小、中、大目標的召回率。表6中數據呈現了與表5基本相同的規律,對于mAP 較高的模型,在召回率上也有較好的表現。

表5 AEOD各模塊在VOC07test中對不同目標的平均檢測精度

表6 AEOD各模塊在VOC07test上的召回率
該文提出了一種基于可縮放的EfficientNet的Anchor-Free單階段目標檢測模型。EfficientNet不僅僅簡單縮放模型的寬度、深度以及輸入分辨率,還將三者的關系考慮了進來,是一種更合理的主干網絡。該模型也做到了Anchor-Free,省去了手工設置錨框的過程,讓網絡自動學習目標框的大小和形狀。針對單階段目標檢測模型普遍存在的正負樣本不均衡問題,提出了一種動態分配正負樣本的算法,以目標框內的特征點作為樣本,訓練時動態分配。最后通過實驗證明了該方法的有效性。但是可以觀察到,模型對較小目標的檢測精度仍然落后于中大型目標,如何有效檢測小型目標,仍是目標檢測領域值得去探索的議題。在后續工作中,可以考慮采取特征提取能力更強大的Transformer主干網絡替換EfficientNet,繼續提升模型的性能。