【論文筆記】: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的檢測精度和高效率。

YOLO和SSD系列的單階段檢測算法本質上與RPN網絡無異,只不過RPN網絡不做多類別預測,只是簡單地區分物體和背景。在雙階段方法中,RPN起到的作用是給出Region proposals做出粗糙檢測,而對於單階段算法想一步到位,直接採用”RPN”做出精確預測,因此要在網絡設計上做出很多tricks。

RefineDet 是基於SSD算法的改進。繼承了兩種方法(例如,單一階段設計方法,兩階段設計方法)的優點,並克服了它們的缺點。它改進了採用單一階段設計的方法,使用兩個相連的模塊(見圖1),即 anchor 細化模塊(the anchor refinement module,ARM)和目標檢測模塊(the object detection module,ODM)。

Introduction & 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 )生成一個稀疏的候選對象提議集,第二部分進一步分類和迴歸,使用卷積網絡確定準確的對象區域和相應的類別標籤。進一步改進性能,如架構圖,訓練策略,上下文推理和多層利用。

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

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

    • 使用兩步級聯迴歸對象框參數;

    • 使用兩階段特徵描述對象。

  • 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)。

Network Architecture

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

網絡結構構建,以ResNet101,輸入圖像大小爲320爲例,在Anchor Refinement Module部分的4個灰色矩形塊(feature map)的size分別是4040,2020,1010,55,其中前三個是ResNet101網絡本身的輸出層,最後55輸出是另外添加的一個residual block。有了特徵提取的主網絡後,就要開始做融合層操作了,首先是55的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

在這裏插入圖片描述
爲了建立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進行檢測時丟棄。

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兩個部分的損失函數都是一起向前傳遞的。
在這裏插入圖片描述
在這裏插入圖片描述

optimization

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

  • default batch size:32
  • momentum:0.9(加速收斂)
  • weight decay:0.0005(防止過擬合)
  • initial learing rate:10-3
  • different learning rate decay

Inference

在預測階段,首先,ARM過濾掉負置信度分數大於閾值θ的anchors,refine剩餘anchors的位置和大小。然後, ODM輸出每個檢測圖像前400名高置信度的anchors。 最後,應用NMS,jaccard重疊率限定爲0.45 ,並保留前200名高置信度anchors,產生最終的檢測結果。

Experiments

在這裏插入圖片描述
在這裏插入圖片描述

Conclusion

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

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

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