RefineDet——one-stage和two-stage的結合 (目標檢測)(one-stage)(深度學習)(CVPR 2018)

論文名稱:《 Single-Shot Refinement Neural Network for Object Detection 》

論文下載:https://arxiv.org/abs/1711.06897

論文代碼:https://github.com/sfzhang15/RefineDet


主要思想​​​​

引入 two stage 類型的 object detection 算法中對 box 的由粗到細的迴歸思想(由粗到細迴歸其實就是先通過 RPN 網絡得到粗粒度的 box 信息,然後再通過常規的迴歸支路進行進一步迴歸從而得到更加精確的框信息,這也是 two stage 類型的 object detection 算法效果優於 one stage 類型的一個重要原因)。
引入類似 FPN 網絡的特徵融合操作用於檢測網絡,可以有效提高對小目標的檢測效果,檢測網絡的框架還是 SSD。


Abstract

對於目標檢測,two-stage 方法(例如 Faster R-CNN)可以獲得最高精度,而 one-stage 方法(例如 SSD)具有高效率的優點。繼承兩者的優點且克服其缺點,本文提出了一種新的單次目標探測器,名爲 RefineDet,它比 two-stage 方法更精準,同時保持了 one-stage 方法的效率。 RefineDet 由兩個相互連接的模塊組成,即 anchor refinement module 和 object detection module。具體來說,ARM 旨在(1)過濾掉 negative anchors,以減少分類器的搜索空間,(2)粗略調整 anchors 的位置和大小,爲後續的迴歸提供更好的初始化。ODM 將 refined anchors 作​​爲輸入,進一步改善迴歸和預測多級標籤。同時,我們設計 transfer connection block 來傳輸 ARM 的特徵,用於 ODM 中預測目標的位置,大小和類別標籤。Multi-task loss function 使我們能夠以端到端的方式訓練整個網絡。 PASCAL VOC 2007,PASCAL VOC 2012 和 MS COCO 的實驗,證明了 RefineDet 實現了 state-of-the-art 的檢測精度和高效率。

 

1.Introduction & 2.Related Work

Classical Object Detectors:Haar+AdaBoost,DPM 等基於滑動窗口方法手工製造特徵和分類器,在密集圖像網格上的目標尋找。

Two-Stage Approach:R-CNN,SPPNet,Fast R-CNN,Faster R-CNN,R-FCN,FPN,Mask R-CNN 等
兩階段方法包括兩部分:第一部分(例如,Selective Search,EdgeBoxes,DeepMask,RPN )生成一個稀疏的候選對象提議集,第二部分進一步分類和迴歸,使用卷積網絡確定準確的對象區域和相應的類別標籤。進一步改進性能,如架構圖,訓練策略,上下文推理和多層利用。

 兩階段相比一階段有三個優點:

           (1) 採用帶採樣啓發式的兩階段結構處理類不平衡問題;

           (2) 使用兩步級聯迴歸對象框參數;

           (3) 使用兩階段特徵描述對象。

One-Stage Approach:OverFeat,YOLO,YOLOv2,SSD,DSSD,DSOD,RetinaNet 等
       通過對位置、比例和縱橫比進行定期密集採樣來檢測目標,主要優點是計算效率高,但是,檢測精度通常落後於兩階段方法。OverFeat 方法基於端對端的深度 ConvNets 來分類、定位和檢測。YOLO 使用單個前饋卷積網絡直接預測對象類和位置,非常快速。之後,YOLOv2 改進了 YOLO 的幾個方面:添加所有卷積層上的批量標準化,使用高分辨率分類器,使用帶 anchor boxes 的卷積層替代全連接層來預測 bounding boxes 等。SSD 方法在多個 ConvNet 層擴展了不同尺度的 anchors,強制每個層專注於預測確定的尺寸對象。 DSSD 在 SSD 中引入了額外的上下文,通過反捲積來提高準確性。 DSOD 在 SSD 結構的基礎上,設計了一個有效的框架和一套原則來從頭開始學習目標檢測器。

       一階段方法檢測精度低的一個主要原因是類不平衡問題。爲了提高準確性,一些新方法通過重新設計損失函數或分類來解決類不平衡問題。 RetinaNet 重塑標準交叉熵損失,來聚焦訓練在一組稀疏的 hard examples,降低分配給分類良好的例子的損失權重。雖然一階段檢測器取得了良好的進展,但準確性仍然落後於兩階段方法。

Two-Stage 和 One-Stage 方法的結合:RON,RefineDet 等
       RON 研究設計了反向連接,使網絡能夠檢測多層 CNN 中的對象;提出了 objectness prior 來引導搜索目標對象,在卷積特徵圖上顯着減少對象的搜索空間;利用多任務損失函數優化整個網絡,這樣網絡就能直接預測最終檢測結果。

       RefineDet 繼承了一階段和兩階段方法的優點,並克服它們的缺點。它使用兩個相互連接的模塊,即 ARM 和 ODM,來改進一階段方法的體系結構。

       ARM 識別並刪除 negative anchors,以減少分類器的搜索空間;粗略調整 anchors 的位置和大小,爲後續提供更好的初始化迴歸。 這部分類似 Faster R-CNN 算法中的 RPN 網絡,主要用來得到 bbox(類似 Faster R-CNN 中的 ROI 或 proposal)和去除一些負樣本(這是因爲負樣本數量遠大於正樣本)。因此基於 4 層特徵最後得到的還是兩條支路,一個 bbox 的座標迴歸支路,另一個是 bbox 的二分類支路。我們知道在 Faster R-CNN 算法中 RPN 網絡存在的意義就是生成 proposal(或者叫 ROI),這些 proposal 會給後續檢測網絡提供較好的初始信息,這也是 one stage 的 object detection 算法和 two stage 的 object detection 算法的重要區別,這裏的 ARM 基本上扮演了 RPN 網絡的角色,如果一定要說不同點的話,那應該就是這裏的輸入利用了多層特徵,而 RPN 網絡的輸入是單層特徵。

       ODM 採用 ARM 產生的 refined anchors 作爲輸入,進一步改善迴歸和預測多類標籤。這兩個互連模塊模仿兩階段結構,因此繼承了其三個優點來產生準確的檢測結果,效率也高。這部分就基本上是 SSD 了,也是融合不同層的特徵,然後做 multi class classification 和 regression。主要的不同點一方面在於這部分的輸入 anchors 是 ARM 部分得到的 refined anchors,類似 RPN 網絡輸出的 proposal。另一方面和 FPN 算法類似,這裏的淺層 feature map(size 較大的藍色矩形塊)融合了高層 feature map 的信息,然後預測 bbox 是基於每層 feature map(每個藍色矩形塊)進行,最後將各層結果再整合到一起。而在 SSD 中淺層的 feature map 是直接拿來用的(並沒有和高層的 feature map 融合),也就是對 bbox 的預測是在每一層上進行的,預測得到結果後再將各層結果整合在一起,這是非常重要的區別。這樣做的好處就是對小目標物體的檢測效果更好,這在 FPN 和 RON 等算法中已經證明過了。

       TCB 將 ARM 中的特徵傳輸到 ODM 中用以預測位置、大小和類別標籤。這部分是做特徵的轉換操作,也就是將 ARM 部分的輸出 feature map 轉換成 ODM 部分的輸入,這部分其實和 FPN 算法的特徵融合很像,FPN 也是這樣的 upsample 後融合的思想。

主要貢獻:

(1)提出了一個新穎的一階段框架用於目標檢測,由兩個相互連接的模塊組成,即 ARM 和 ODM。性能比兩階段方法更好,同時保持一階段方法的高效率。

(2)爲確保有效性,設計了 TCB 來傳輸 ARM 的特徵,來處理更具挑戰性的任務,即預測 ODM 中準確的對象位置、大小和類別標籤。

(3)實現了最新的 state-of-the-art 通用目標檢測(PASCAL VOC 2007,PASCAL VOC 2012 和 MS COCO)。

 

3.Network Architecture

 圖 1 RefineDet 結構

       與 SSD 類似,RefineDet 基於前饋卷積網絡生成 bounding boxes 和目標的不同類的預測分數,通過非最大值抑制來產生最終結果。RefineDet 由兩個相互連接的模塊組成,即 ARM 和 ODM。刪除 VGG-16 和 ResNet-101 的分類層並添加輔助結構來構建 ARM,它們在 ImageNet 上進行了預訓練來滿足我們的需求。

       網絡結構構建,以 ResNet101,輸入圖像大小爲 320 爲例,在 Anchor Refinement Module 部分的 4 個灰色矩形塊(feature map)的 size 分別是 40*40,20*20,10*10,5*5,其中前三個是 ResNet101 網絡本身的輸出層,最後 5*5 輸出是另外添加的一個 residual block。有了特徵提取的主網絡後,就要開始做融合層操作了,首先是 5*5 的 feature map 經過一個 transfer connection block 得到對應大小的藍色矩形塊(P6),transfer connection block 後面會介紹 ,對於生成 P6 的這條支路而言只是 3 個卷積層而已。接着基於 10*10 的灰色矩形塊(feature map)經過 transfer connection block 得到對應大小的藍色矩形塊(P5),此處的 transfer connection block 相比 P6 增加了反捲積支路,反捲積支路的輸入來自於生成 P6 的中間層輸出。P4 和 P3 的生成與 P5 同理。

       因此,整體來看該網絡和 two stage 的結構很像(都可以概括爲 two-step cascaded regression),一個子模塊做 RPN 的事,另一個子模塊做 SSD 的事。因此 SSD 是直接在 default box 的基礎上進行迴歸的,而在 RefineDet 中是先通過 ARM 部分生成 refined anchor boxes(類似 RPN 網絡輸出的 propsoal),然後在 refined anchor boxes 基礎上進行迴歸,所以能有更高的準確率,而且得益於特徵融合,該算法對於小目標物體的檢測更有效。 

       以下解釋 RefineDet 的三個核心組件:(1)傳輸連接塊(TCB),傳輸 ARM 的特徵到 ODM 進行檢測; (2)兩步級聯迴歸,準確地迴歸物體的位置和大小; (3)負錨過濾,在早期拒絕分類良好的負錨,緩解類不平衡問題。

Transfer Connection Block

圖 2 TCB 結構

       爲了建立 ARM 和 ODM 的聯繫,我們引入 TCB 來將 ARM 中的特徵圖轉換到 ODM 中,這樣 ODM 可以共享 ARM 的特徵。值得注意的是,從 ARM 中,我們只在與 anchors 有聯繫的特徵圖上使用 TCBs。 TCB 通過添加高級特徵來整合大規模上下文,以改善檢測精度。 要匹配它們之間的尺寸,我們使用反捲積操作來擴大高級特徵圖,並以元素方式對它們求和。 然後,我們在求和後添加捲積層以確保檢測特徵的可辨性。

Two-Step Cascaded Regression
       目前的一階段方法依靠基於具有不同尺度的特徵圖層的一步迴歸來預測位置和物體的大小,在某些場景中相當不準確,尤其是小目標檢測。因此,我們提出了一個兩步級聯迴歸策略迴歸對象的位置和大小。我們先使用 ARM 調整 anchors 的位置和大小,爲 ODM 中的迴歸提供更好的初始化。我們定期關聯 n 個 anchor boxes 在特徵圖上劃分單元格。最初的位置每個 anchor boxes 相對於其對應的單元是固定的。在每個特徵映射單元格中,我們預測 refined anchors 的四個偏移量相對於原始 anchors 和指示前景存在的兩個置信度分數。因此,我們可以在每個特徵圖單元格產生 n 個 refined anchors。獲得 refined anchors 後,我們將其傳到 ODM 相應的特徵圖中,進一步生成對象類別和準確的對象位置、尺寸。ARM 和 ODM 中相應的特徵圖具有相同的維度。我們計算 refined anchors 的 c 個類別分數和四個準確的偏移量,產生 c + 4 的輸出以完成檢測任務。此過程類似於 SSD 中的默認框。但是,與 SSD 不同,RefineDet 使用兩步策略,即 ARM 生成 refined anchor boxes,ODM 採取其作爲輸入進一步檢測,因此檢測結果更精準,特別適用於小物體。

Negative Anchor Filtering
    One-stage精度落後於 two-stage的一個主要原因是類別不平衡問題。爲了解決這種問題,作者採用了 negative anchor過濾。在訓練階段,針對 ARM 中的 anchor,如果negative confidence大於一個閾值θ(θ=0.99,經驗值),那麼在訓練 ODM 時將它捨棄。也就是通過hard negative anchor和 refined anchor 來訓練 ODM。 與此同時,在預測階段,如果 refined anchor box 負置信度大於θ,則在 ODM 進行檢測時丟棄。

 

4.Training and Inference

Data Augmentation
       使用了幾種數據擴充方法生成訓練樣本,來構建一個強大的模型來適應對象的變化,包括隨機擴展,隨機剪裁,隨機光度失真和翻轉。

Backbone Network
      使用在 ILSVRC CLS-LOC 數據集上預訓練的 VGG-16 和 ResNet-101 作爲 RefineDet 中的骨幹網絡。RefineDet 也可以在其他預訓練網絡上工作,如 Inception v2 ,Inception ResNet 和 ResNeXt101。 與 DeepLab-LargeFOV 類似,通過子採樣參數,將 VGG-16 的 fc6 和 fc7 轉換成卷積層 conv_fc6 和 conv_fc7。與其他層相比,conv4_3 和 conv5_3 具有不同的特徵尺度,所以使用 L2 正則化來擴展特徵到 10 和 8 中,然後在反向傳播中學習尺度。 同時,爲了捕捉高層次多種尺度的信息和引導對象檢測,還分別在剪裁的 VGG-16 和 ResNet101 的末尾添加了額外的卷積層(即 conv6_1 和 conv6_2)和額外的剩餘塊(即 res6)。

Anchors Design and Matching
       處理不同的規模對象,在 VGG-16 和 ResNet101 上選擇尺寸分別爲 8,16,32 和 64 像素步幅大小的特徵層,與幾種不同尺度的 anchor 相關聯進行預測。 每個特徵圖層都與一個特定特徵 anchor 的尺度(尺度是相應層步幅的 4 倍)和三個比率(0.5,1.0 和 2.0)相關聯。 我們遵循不同層上的 anchor 尺度設計,確保了不同尺度的 anchor 在圖像上具有相同的平鋪密度。 同時,在訓練期間階段,我們確定之間的對應關係基於 anchors 和 ground truth boxes 的 jaccard 重疊率(IoU),並端到端地訓練整個網絡。具體來說,我們首先將每個 ground truth boxes 與具有最佳重疊分數的 anchor boxes 相匹配,然後匹配 anchor 重疊高於 0.5 的任何 ground truth boxes。

Hard Negative Mining
        關於正負樣本界定的標準基本上和其他 object detection 類似,比如和 ground truth 的 IoU 超過閾值 0.5 的 box 爲正樣本,也就是 label 是 1。顯然這樣做後很多 box 的標籤都是背景標籤,也就是所謂的負樣本,通過前面說的 ARM 部分可以過濾掉一些負樣本,但接下來還是要採用類似 SSD 算法中的 hard negative mining 來設定正負樣本的比例(一般設定爲 1:3),當然負樣本不是隨機選的,而是根據 box 的分類 loss 排序來選的,按照指定比例選擇 loss 最高的那些負樣本即可。

Loss Function
       損失函數方面主要包含 ARM 和 ODM 兩方面。在 ARM 部分包含 binary classification 損失 Lb 和迴歸損失 Lr;同理在 ODM 部分包含 multi-class classification 損失 Lm 和迴歸損失 Lr。需要注意的是雖然本文大致上是 RPN 網絡和 SSD 的結合,但是在 Faster R-CNN 算法中 RPN 網絡和檢測網絡的訓練可以分開也可以 end to end,而這裏的訓練方式就純粹是 end to end 了,ARM 和 ODM 兩個部分的損失函數都是一起向前傳遞的。 

圖 2 TCB 結構

      其中i表示一個 batch 中的第幾個 anchor,l 表示anchor_i的 ground truth 的類別 ,g 表示anchor_i的 ground truth 位置和大小,p 表示置信度,x 表示 ARM 中 anchor 的座標。c 表示預測類別,t 表示 ODM 中的預測框座標信息。N_arm和N_odm分別表示 ARM 和 ODM 中的positive anchor數量。L_b表示二值分類損失(有目標 \ 沒有目標),L_m表示多類別損失,L_r表示迴歸損失。[l>=1]就表示如果negative confidence大於一個閾值θ,那麼返回 1,否則返回 0。如果N_arm=0,設置L_b=0 和L_r(x)=0;如果N_odm=0,那麼設置L_m=0 和L_r(t)=0。

Optimization
       用 “xavier” 方法隨機初始化基於 VGG-16 的 RefineDet 的兩個添加的卷積層中(conv6_1 和 conv6_2)的參數。對於基於 ResNet-101 的 RefineDet,繪製參數來自具有標準的零均值高斯分佈,額外殘餘塊(res6)的偏差爲 0.01。 

1.default batch size:32
2.momentum:0.9(加速收斂)
3.weight decay:0.0005(防止過擬合)
4.initial learing rate:0.01
5.different learning rate decay
Inference
      在預測階段,首先,ARM 過濾掉負置信度分數大於閾值θ的 anchors,refine 剩餘 anchors 的位置和大小。然後, ODM 輸出每個檢測圖像前 400 名高置信度的 anchors。 最後,應用 NMS,jaccard 重疊率限定爲 0.45 ,並保留前 200 名高置信度 anchors,產生最終的檢測結果。

5.Experiments

Table1

Table1 是非常詳細的實驗結果對比,測試數據包括 VOC2007 和 VOC2012 數據集。以 VGG-16 爲特徵提取網絡的 RefineDet320 在達到實時的前提下能在 VOC 2007 測試集上達到 80 以上的 mAP,這個效果基本上是目前看到過的單模型在相同輸入圖像情況下的最好成績了。表格中最後兩行在算法名稱後面多了 +,表示採用 multi scale test,因此效果會更優一些。 

6.Conclusion

在本文中,提出了一種新的單次目標檢測器,由兩個相互連接模塊組成,即 ARM 和 ODM。使用 multi-task loss 對整個網絡進行 end-to-end 訓練。在 PASCAL VOC 2007,PASCAL VOC 2012 和 MS COCO 數據集上進行了幾次實驗,結果表明 RefineDet 實現了目標最先進的檢測精度和高效率。

       將來,計劃使用 RefineDet 來檢測一些其他特定類型的物體,例如行人,車輛和麪部,並在 RefineDet 中引入注意機制以進一步改善性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章