天天看點

RefineDet算法詳解

RefineDet算法詳解

    • 論文背景
    • 算法簡介
      • 算法提出背景
      • 實驗結果
      • 本文貢獻
    • 算法細節
      • 主要元素
      • TCB(Transfer Connection Block)
      • 負樣本過濾
    • 訓練
      • 資料增強
      • 錨的設計與比對
      • Hard Negative Mining
      • 損失函數
      • 優化
      • 推斷

論文背景

論文全稱:Single-ShotRefinementNeuralNetworkforObjectDetection

論文連結:https://arxiv.org/abs/1711.06897

論文日期:2018.1.3

對于目标檢測算法,目前準确率最高的算法都是兩階段的算法,然而單一神經網絡算法可以實作高效率,保證了檢測速度。為了結合兩者優勢,本文提出了一個新型單一神經網絡檢測算法,既保證了準确率又保障了效率。

RefineDet包含兩個連接配接模型,命名為提煉錨模型(ARM)與目标檢測模型(ODM)。

前者旨在濾除負樣本錨以減少分類器的搜尋空間,以及粗略調整錨的位置和大小,以便為後續的回歸器提供更好的初始化。

後者使用前者提煉的精确錨作為輸入來進一步提高回歸和對多類标簽的預測。

在其中,本文設計了一個轉換連接配接塊,将前者的特征轉化為後者中預測定位、尺寸、類别标簽。使得整體算法是一個端到端的算法。

算法簡介

算法提出背景

主流目标檢測算法可被分為兩類,一類是兩階段的目标檢測;另一類是一階段的目标檢測。

兩階段的目标檢測算法都是先提取稀疏的候選區域,然後進行分類與回歸。

一階段的目标檢測算法是在整張圖檔中采用不同的尺寸與比例進行正常密集的采樣。

目前兩階段的算法在準确率是表現優于一階段的算法,最主要的原因是樣本不平衡的問題。

兩階段目标檢測算法的優勢:

  1. 使用采用啟發式采樣的兩階段結構來處理類不平衡;
  2. 使用級聯的兩步式結構來回歸目标框參數;
  3. 使用兩步特征來描述目标。

是以結合兩階段目标檢測算法,本文提出了一個新型的算法。

RefineDet算法詳解

圖檔僅顯示了用于檢測的層,灰青色的平行四邊形表示與不同特征層相關聯的精煉的錨框,星星代表精煉的錨框的中心,這些錨框在圖像上沒有正常的鋪設。

實驗結果

準确率:

RefineDet算法使用VGG16神經網絡在VOC2007與2012資料集上準确率分别達到了85.8%和86.8% mAPs。

效率:

在 NVIDIA Titan X GPU上使用320×320和512×512尺寸的輸入,速度分别達到了40.2 FPS和24.1 FPS。

本文貢獻

  1. 引入了一種新型一階目标檢測架構;
  2. 為了確定有效性,我們設計TCB以傳遞ARM中的特征以處理更具挑戰性的任務,即在ODM中預測準确的對象位置,尺寸和類别标簽;
  3. RefineDet在通用資料集中取得了最新的成果。

算法細節

主要元素

  1. 使用TCB将ARM中的特征傳遞到ODM中;
  2. 使用兩步的級聯回歸,對于不同位置尺寸的目标進行準确回歸;
  3. 負樣本錨過濾,删除良好分類的負樣本錨來緩解不平衡樣本問題。

TCB(Transfer Connection Block)

通過TCB,ARM與ODM可以共享特征;

通過添加高等級特征來傳遞特征使大規模的文本資訊成為一個整體,進而提高檢測精度。

RefineDet算法詳解

為了比對次元,我們使用逆卷積操作來使高層的特征圖變大,然後使用像素級的方式相加, 然後,我們在求和之後添加卷積層以確定用于檢測的特征的可辨識性。

ARM會精煉邊界框,傳回相對于對應單元格的四個偏移量和兩個置信度分數。

淺層feature map(size較大的藍色矩形塊)融合了高層feature map的資訊,然後預測bbox是基于每層feature map(每個藍色矩形塊)進行,最後将各層結果再整合到一起。而在SSD中淺層的feature map是直接拿來用的(并沒有和高層的feature map融合),也就是對bbox的預測是在每一層上進行的,預測得到結果後再将各層結果整合在一起。

負樣本過濾

在訓練過程中,負樣本中置信度大于0.99的丢棄,

在推測階段,超過0.99的也有丢棄。

訓練

資料增強

拉伸,裁剪,翻轉。

錨的設計與比對

為了處理不同大小的目标,我們選擇了四個特征圖層,對于VGG-16和ResNet1015,其總步幅大小為8,16,32和64像素,結合用于預測的幾種不同尺度與比例的錨點。 每個特征層與一個特定尺度的錨(即,尺寸是相應層的總步幅尺寸的4倍)和三個縱橫比(即,0.5,1.0和2.0)相關聯。 我們按照[53]中不同層次的錨點尺度設計,確定不同尺度的錨點在圖像上具有相同的平鋪密度。 同時,在訓練階段,我們根據jaccard重疊确定錨點與地面執行個體框之間的對應關系,并據此對整個網絡進行跟蹤。 具體而言,我們首先将每個地面實況與具有最佳重疊分數的錨框比對,然後将錨框與任何重疊高于0.5的地面實況相比對。

Hard Negative Mining

與SSD相同,我們選擇一些具有最高損失值的負錨箱,使得負數和正數之間的比率低于3:1,而不是使用所有負數錨或在訓練中随機選擇負錨。

損失函數

RefineDet算法詳解

在ARM部分包含binary classification損失Lb和回歸損失Lr;同理在ODM部分包含multi-class classification損失Lm和回歸損失Lr。

Lb是交叉熵損失函數

Lm是softmax

Lr是L1損失函數

N是正樣本的數量

優化

本文對基于RefineDet的VGG-16的額外添加的兩層卷積層(例如conv6 1 and conv6 2)利用xaVier方法進行了初始化;

然後對于基于RefineDet的ResNet-101的額外的殘差塊(res6)進行歸一化;

訓練利用預設 batch size 設定為32;

微調使用0.9 momentum and 0.0005 weight decay的SGD;

初始化學習率為0.001.

推斷

對于所有提煉的框,對于每張圖檔輸出400個高置信度檢測器,對于每個類别使用門檻值為0.45的非極大值抑值,保留200個框。

繼續閱讀