胡永利,武劍,孫艷豐
(北京工業(yè)大學人工智能與自動化學院,北京 100124)
近年來,隨著深度學習的興起,基于卷積神經(jīng)網(wǎng)絡[1][2](Convolutional Neural Networks,CNN)的 深 度學習算法不斷刷新諸如圖像識別、目標檢測、語義分割、姿態(tài)估計等各類視覺任務的性能上限。相較于傳統(tǒng)的特征提取器,卷積神經(jīng)網(wǎng)絡能夠自動從圖像數(shù)據(jù)中學習到各個層次的視覺特征,淺層的卷積神經(jīng)網(wǎng)絡可以提取圖像的邊緣、紋理等低級特征,深層的卷積神經(jīng)網(wǎng)絡則可以提取出圖像的高級抽象特征。整個網(wǎng)絡的學習過程無需手工設計參數(shù),與此同時,隨著硬件性能的不斷提高,加快了卷積神經(jīng)網(wǎng)絡算法的落地和應用。
自2014年以來,涌現(xiàn)出了許多基于卷積神經(jīng)網(wǎng)絡的目標檢測算法,這類算法大體上都包含三個部分:首先利用卷積神經(jīng)網(wǎng)絡提取圖像特征,之后處理圖像特征信息從而完成對物體的類別預測和定位。目前已有的優(yōu)秀目標檢測算法包括,基于錨框的目標檢測算法Fast RCNN[3]、Faster RCNN[4]、SSD[5]、YOLO[6][7][8]等,以及擺脫錨框的目標檢測算法CenterNet-Keypoint[9]、CenterNet[10]、FCOS[11]、Corner-Net[12]等。這些優(yōu)秀的方法為目標檢測的應用及落地創(chuàng)造了可能,具有很高的應用價值。
雖然上述目標檢測算法均采用了不同的模型結構,但受限于數(shù)據(jù)集的影響,這些算法通常使用矩形框來進行檢測。例如,現(xiàn)有常用的兩個公開目標檢測數(shù)據(jù)集VOC[13],COCO[14]均采用矩形框進行標注。如圖1(a)所示,如果檢測對象存在傾斜的角度,那么矩形框將會包含很多背景區(qū)域。在提取圖像特征的過程中,由于目標物體包含了大量的背景區(qū)域,勢必會對網(wǎng)絡的分類性能造成影響。于是近些年在遙感和文本圖像檢測方面,出現(xiàn)了一些基于旋轉矩形框的目標檢測算法,例如R3Det[15]、RoI Transformer[16]、GlidingVertex[17]、RRPN[18]等。旋轉矩形框改善了矩形框的問題,但在面對自然圖像中復雜的物體時候,依然會包含較多的背景區(qū)域,如圖1(b)所示。另外,這類算法由于需要額外學習一個傾斜角度參數(shù),導致錨框的使用成倍增加,進而使計算復雜度大幅上升。因此,設計一種能夠在不同場景、姿態(tài)和方向上均能準確檢測物體邊界的模型是非常有價值和現(xiàn)實意義的工作。如圖1(c)所示,若采用旋轉橢圓框進行檢測則能夠更好地適配物體的輪廓。另外據(jù)我們所知,目前沒有以橢圓框進行標注的自然場景下的數(shù)據(jù)集。因此,我們希望通過構建一個以旋轉橢圓框標注的自然場景下的數(shù)據(jù)集,推動越來越多的研究者研究橢圓框目標檢測器。
圖1 不同形式檢測框
圖2 EllipseNet網(wǎng)絡結構圖
如圖2所示,原始圖像首先經(jīng)過ResNet50來提取出不同尺度大小的特征圖C3-C5。其中C5包含了豐富的語義信息,但隨著下采樣率的增加導致C5上包含的小物體的有效信息逐漸較少。而淺層特征圖C3包含了小物體的邊緣信息但語義信息不足。為了融合不同特征層之間的語義信息,本文采用特征金字塔網(wǎng)絡(Feature Pyramid Network,F(xiàn)PN),F(xiàn)PN首先使用一個的卷積核來將C2-C5的通道數(shù)目統(tǒng)一變成256,之后相鄰特征層借助上采樣來自上而下的融合不同特征層之間語義信息,最終經(jīng)過FPN得到了四張融合后的特征圖F1-F5,后續(xù)分別用于完成圖像的分類和定位。
在得到F1-F5之后,EllipseNet的回歸層部分則是在各個特征層的基礎上用以預測橢圓的類別及屬性(圓心位置、長短軸長和旋轉角度)。然而在實際實驗過程中,如圖3(a)所示,觀察到FCOS預測出物體的中心位置會跟實際的中心發(fā)生偏移,究其原因是由于特征圖下采樣丟失精度以及FCOS會在中心區(qū)域附近選擇正樣本。為了彌補圓心偏移的損失,在預測層中額外回歸了圓心偏移量。假設第i個特征圖Fi中的某個位置坐標為,則該位置和圓心之間的真實偏移量如公式(1)所示:
圖3 FCOS和EllipseNet檢測效果圖
EllipseNet正樣本的選擇采用了FCOS算法的思想,即首先將每個特征圖的像素位置映射回原圖尺度,若特征圖的某個位置落在了真實框內,則將其視為正樣本的一個必要條件;之后如公式(2)所示,設計了一個中心采樣比例系數(shù),分別為每個特征層Fi根據(jù)其下采樣步長設定了一個半徑r,將特征圖上的像素位置在半徑范圍內的視為正樣本的另一個必要條件;
但此時并沒有考慮FPN結構按照各自特征圖尺度分配正樣本的原則,故又額外設計了regree_ranges參數(shù),該參數(shù)為每個特征圖Fi設計了一個尺度范圍scale,若正樣本的最長邊落在某個scale內,則該特征層負責預測該物體,其余特征層則視為負樣本。
在完成上述正樣本分配后,如圖4所示,此時依然存在一個正樣本點可能同時匹配兩個真實框的情況,而本文做法則是直接按照面積匹配最小原則將當前正樣本點匹配給面積最小的真實框。
圖4 正樣本點匹配兩個真實框示意圖
EllipseNet整體損失函數(shù)如公式(3)所示:
其中Lcls表示類別損失,而表示橢圓的交并比損失??紤]到任意形狀的兩個橢圓的交并比存在運算強度大的缺點。因此,為了加速網(wǎng)絡的訓練,重新定義的損失函數(shù)為:
另外,本文還額外引入了一種橢圓交并比損失函數(shù),如圖5所示,令和分別表示橢圓的真實長短軸長和預測長短軸長,則
圖5 橢圓交并比損失函數(shù)
兩個橢圓的近似交并比如公式(8)所示:
由于交并比需要優(yōu)化到1,最終的橢圓交并比損失為:
當然在模型訓練初始階段,網(wǎng)絡還不能夠準確的預測橢圓的旋轉角度和中心偏移量,因此橢圓交并比損失是在模型訓練穩(wěn)定后才被添加進去的。
給定一張輸入圖像后,經(jīng)過FPN得到五張?zhí)卣鲌D,之后經(jīng)過回歸層之后每張?zhí)卣鲌D的每個位置會得到五個預測值:類別置信度分數(shù)、中心度分數(shù)、橢圓中心偏移量、長短軸長以及旋轉角度。然后將特征圖所有像素點映射回原圖,將類別置信度分數(shù)和中心度分數(shù)相乘得到最終每個像素點的置信度分數(shù),另外,本文設定一張圖最多只檢測個物體,并通過一個分數(shù)閾值來過濾掉低于閾值的像素點。在得到預測點之后,再通過公式(1)來修正這些點的位置便得到了橢圓圓心的位置,另外在結合對應位置其他預測值(長短軸長,旋轉角度)便得到了預測橢圓框,最終經(jīng)過橢圓的NMS便得到了最終的輸出結果。
據(jù)本文所知,目前沒有用旋轉橢圓框標注的自然場景下的數(shù)據(jù)集。為了測試EllipseNet在自然場景數(shù)據(jù)集上的性能,本文在PASCAL VOC2007數(shù)據(jù)集基礎上構造了一個旋轉數(shù)據(jù)集,其中原始的PASCAL VOC2007數(shù)據(jù)集包含了豐富的自然場景,該數(shù)據(jù)集總共標注了20個類別的物體。但由于PASCAL VOC2007數(shù)據(jù)集中物體大多數(shù)垂直于地面,為了增加角度的多樣性需要對該數(shù)據(jù)集進行旋轉。本文通過使用傳統(tǒng)的圖像處理算法等比例的旋轉圖像并人為的用旋轉橢圓框對物體進行了標注。本文將構造完成的數(shù)據(jù)集稱為Rotate VOC2007數(shù)據(jù)集,該數(shù)據(jù)集總共包含了5,747張圖像,其中4,981張圖像用于訓練,766張圖像用于測試,總共包含了隸屬于20個類別的18,445個旋轉的物體。
本文選擇了目前性能優(yōu)異的旋轉檢測算法和EllipseNet做對比,包括一階段旋轉檢測算法和二階段旋轉檢測算法。其中,一階段檢測算法包括:
(1)RetinaNet-OBB[21],一種借助水平錨框的高效旋轉檢測算法。
(2)FCOS-Poly[11]:在FCOS算法基礎上結合Poly-IoU-Loss損失函數(shù)進行旋轉檢測的算法。
(3)Gliding Vertex[17]:一種在預測水平矩形框基礎上額外再預測四個角點偏移量的旋轉檢測算法。
(4)R3Det[15]:一種通過引入特征微調模塊來克服旋轉候選框特征不對齊的旋轉檢測算法。
與上述一階段旋轉檢測算法相比,二階段旋轉檢測算法由于額外增加了一個RPN模塊其性能普遍較好,但隨之帶來的缺點就是檢測速度相對較慢。本文選擇的二階段檢測算法包括:
(1)R2CNN-OBB[4]:一個在FasterRCNN基礎上改造的直接預測旋轉框的二階段檢測算法。
(2)RoI Transformer[16]:一種借用水平錨框并借助RoI Learner模塊學習水平錨框到旋轉錨框變換的二階段檢測算法。
(3)Oriented RCNN[22]:一種借助Oriented RPN模塊學習水平錨框到旋轉錨框變換的二階段目標檢測算法。
本文將數(shù)據(jù)集R-VOC2007中圖像統(tǒng)一變換成[512,800,3]大小。另外,在模型訓練過程中,使用了隨機上下、左右翻轉的圖像增強方法。模型總共迭代了100輪,并將初始學習率設置為5e-5。使用Adam[23]優(yōu)化器并以批次2對模型進行訓練。在正負樣本選擇過程中,令中心采樣率,各特征圖下采樣率為。在損失函數(shù)計算過程中,將Focal Loss的兩個超參分別設置為和,將權重系數(shù)分別設置為,。
本文采用的硬件平臺為因特爾的i9-10900X CPU和一塊顯存為24GB的英偉達3090顯卡,Pytorch采用的版本為1.7.1。
表1展示了EllipseNet和其他旋轉檢測算法的性能比較。從表中可以看出,二階段目標檢測算法RoI Transformer和一階段目標檢測算法Gliding Vertex分別以48.27%和46.06%的mAP值取得了最優(yōu)的性能。雖然EllipseNet僅取得了38.71%的mAP值,但在汽車和自行車兩個類別上分別擊敗了其余所有的方法,這也在一定程度上驗證了本文方法在面對復雜的自然場景時也具有一定的性能優(yōu)勢。
表1 RVOC2007數(shù)據(jù)集實驗結果對比
(1)橢圓中心回歸:一個橢圓的中心對確定一個橢圓框的位置非常重要。雖然FCOS能夠預測物體的中心區(qū)域,但在一定程度上,如圖3(a)所示,依然會存在一定的偏差。表2展示了是否添加橢圓中心偏差分支的消融實驗,從中可以看出,在額外回歸橢圓圓心偏差后mAP有1.4%的提升,從而驗證了橢圓中心對預測橢圓位置的重要性。
表2 橢圓中心偏差分支消融實驗
(2)橢圓交并比損失函數(shù):表3展示了不同損失函數(shù)對EllipseNet性能的影響,從表中可以看出,相較于僅使用Smooth L1 Loss[4],在添加了橢圓交并比損失后EllipseNet的mAP漲了0.9%,從而驗證了橢圓交并比損失函數(shù)能夠進一步的提升模型的性能。
表3 損失函數(shù)消融實驗
如圖6所示,本文可視化了EllipseNet在RVOC2007數(shù)據(jù)集上的部分檢測結果,可以看出,在復雜的自然場景下EllipseNet能夠較好的檢測各個角度姿態(tài)下的物體。
圖6 RVOC2007可視化
本文提出了一種能夠更加精確檢測物體的旋轉橢圓目標檢測器EllipseNet,設計網(wǎng)絡結構使其預測橢圓的圓心偏移量、長短軸長以及旋轉角度來完成旋轉橢圓的預測。另外在損失函數(shù)部分,考慮到橢圓框本質上應該作為一個整體來進行損失計算,而不應該用Smooth L1 Loss來單獨回歸橢圓框的各個屬性,因此本文額外又提出了一種橢圓交并比損失函數(shù)來進一步提升了模型的性能。最終實驗表明,EllipseNet具有一定的應用價值。