1. 程式人生 > 實用技巧 >目標檢測論文筆記一:RefineDet《Single-Shot Refinement Neural Network for Object Detection》

目標檢測論文筆記一:RefineDet《Single-Shot Refinement Neural Network for Object Detection》

摘要:作者提出了一種網路結構RefineDet,既能取得比二階段目標檢檢測演算法更高的精度,也能保持與一階段目標檢測演算法相當的效率。網路主要由ARM、ODM和TCB三個模組組成,,並且應用多工損失函式來完成網路的端到端訓練。

(一)Introduction

作者認為目前SOTA的二階段目標檢測演算法有三個優點:

using two-stage structure with sampling heuristics to handle class imbalance;

using two-step cascade to regress the object box parameters;

using two-stage features to describe the objects

1. ARM(the achor refinement module)

ARM模組主要包含兩部分功能,第一部分是識別和去除negativeanchors,以此來減少分類器的搜尋空間。第二部分是粗略的調整目標框的位置和大小,為後續的網路迴歸提供更好的初始化。

2. ODM(theobjectdetectionmodule)

ODM模組將ARM提供的精細的anchor作為網路的輸入,進一步提高目標框迴歸和多標籤分類的準確率。

這兩個相互連線的模組(ARM和ODM)模仿了二階段目標檢測的結構,從而繼承了上述三個優點,產生了高效率的精確檢測結果。

3. TCB(thetransfer connectionblock)

TCB模組負責將ARM中的特徵傳輸到ODM中,來預測物體的目標框位置、大小和類別標籤

(二)Network Architecture

與SSD的結構相似,RefineDet基於一個前饋卷積網路生成固定數量的bbox和對應的分數,緊接著NMS來得到最終結果。

ARM模組是由在ImageNet上預訓練的VGG-16和ResNet101兩個基準網路,去除分類層和增加一些輔助結構構成的。ODM模組是由TCB模組的輸出,緊跟預測層(3x3卷積)構成的。

1. Transfer Connection Block

TCB的引入是為了轉換ARM中不同層的特徵到ODM中。對於ARM模組,TCB僅僅與anchor相關的特徵圖進行連線。TCB的另一個功能是將高階語義特徵新增到傳輸的特徵中來整合大規模的上下文資訊,以此來提高檢測精度。

另外,為了匹配ARM和ODM中的特徵圖維度,作者使用了反捲積操作來增大高層特徵圖,並且將他們進行相加。最後再增加一個卷積層來確保特徵的區分度。

2. Two-Step Cascaded Regression

目前一階段的目標檢測演算法都依賴於不同尺度的特徵圖來預測物體的目標框位置和大小,這在一些具有挑戰性的場景中準確率會比較欠缺,特別是對於小目標的檢測。因此作者提出了兩步級聯迴歸的策略來回歸出物體的目標框位置和大小。

首先使用ARM模組來調整anchor的位置和大小,為ODM模組的迴歸提供更好的初始化。作者將n個anchorboxes與特徵圖上規則劃分的單元格相關聯,每一個anchorbox的初始位置相對於它對應的單元格是固定的。在每一個特徵圖的網格中,預測四個精細的anchorboxes與原本平鋪的anchor的偏移量,和兩個指出bbox中是否含有前景物體的置信度分數。

在獲得精細的anchorboxes之後,將其送入ODM中對應的特徵圖當中 ,進一步生成物體的類別和目標框的位置的大小。ARM和ODM對應位置的特徵圖中有同樣的維度。作者計算了c個類別的分數和4個正確的偏移量,對於每一個精細的anchorboxes都獲得了c+4輸出。

相比於SSD直接使用平鋪的預設anchorboxes,RefineDet的做法可以獲得更優的檢測效果,特別是對於小物體的檢測。

3. Negative Anchor Filtering

為了儘早拋棄分類良好的negativeanchors,並且緩解類別不平衡的問題,作者設計了一個negativeanchor過濾機制。在訓練階段,對於一個精細的anchorbox,如果他的negative置信度分數大於一個預設值θ ,那它將會在ODM的訓練過程中被拋棄。也就是說,在ODM的訓練中,只會用到困難負樣本和良好的正樣本。在推理階段,如果一個精細的anchorbox的 negative -confidence大於預設值θ ,則在ODM模組的推理中被丟棄掉。

(三)Trainingand Inference

1. 資料增強

Randomly expand and crop the original training images with additional random photometric distortion and flipping to generate the training samples.

2. 主幹網路

使用在ImageNet資料集上預訓練的VGG-16和ResNet-101作為主幹網路。通過重取樣引數將VGG-16的 fc6 和 fc7轉換為conv_fc6和 conv_fc7,因為conv4_3和conv5_3相比於其他層有著不同的特徵圖尺度,使用L2normalization將conv4_3和conv5_3的特徵縮放到10和8,然後通過反向傳播來進行放縮尺度的學習。

另外,為了捕獲高階語義特徵資訊和驅動多尺度的物體檢測,作者在去除了全連線層的VGG-16的尾部加入兩個額外的卷積層(conv6_1和conv6_2),在去除了全連線層的ResNet-101的尾部增加了一個額外的殘差塊(res6)。

3. 錨框的設計和匹配

為了檢測不同尺度的物體,作者選擇了四個特徵層來進行預測,步長分別為8,16,32和64。每一個特徵層都與一個特定尺度的anchor(尺度是對應層總步長的四倍)和三個橫縱比(0.5,1.0和2.0)相聯絡。在訓練階段,anchor和真值之間的對應關係是根據交併比來確定的,首先匹配真值與anchor之間有著最大交併比的,其次匹配其餘交併比大於0.5的anchor和真值框。

4. 難例挖掘

在匹配步驟完成後,大部分的anchorboxes都是負的,即使是ODM中,一些簡單的負anchors都會被ARM提前拋棄掉。與SSD類似,作者使用了難例挖掘來緩解極端的前景-背景類別不平衡問題。挑選那些有著最高loss值得負的anchorboxes來使得負的和正的數量比值為3:1,而不是使用所有的負anchor或者隨機挑選一部分負的anchor。

5.訓練

使用ImageNet預訓練模型初始化網路,對於VGG-16版本的RefineDet,額外新增的層(i.e., conv6_1和 conv6_2)使用 ”xavier“的方法來隨機初始化網路引數。對於ResNet101版本的RefineDet,額外的殘差塊(i.eres6)則從零均值高斯分佈(標準差為0.01)中提取引數。

設定訓練的batchsize=32,使用SGD優化器來微調網路,動量=0.9,權值衰減為0.0005,初始學習率為0.001.

6.推理

在推理階段,ARM模組首先過濾掉負置信度大於預設值θ的常規平鋪anchor,然後精調剩餘的anchor的位置和大小。在那之後,ODM模組接管這些精調後的anchor,每幅影象輸出最高置信度的400個檢測框。最後使用閾值為0.45的的NMS進行後處理,保留200個高置信度的目標框。

(四) Ablation Study

1. Negative Anchor Filtering

為了證明負anchor的過濾是有效地,作者在訓練和測試階段的anchor置信度閾值都設定為1.0,RefineDet的其餘部分保持不變,這樣所有精細的anchor都會被送到ODM模組中檢測。實驗結果表明,移除negativeanchorfiltering會導致0.5%的map下降,原因是因為大部分這些分類良好的負anchor在訓練階段會被過濾掉,這會在一定程度上解決類別不平衡的問題。

2. Two-Step Cascaded Regression

為了驗證兩步迴歸方法的有效性,作者重新設計網路結構,直接使用常規平鋪anchor的方式,而不是先使用ARM模組來對anchor進行初篩。實驗結果表明,這帶來了巨大的效能下降(2.2% map)。