天天看點

SSD論文筆記SSD: Single Shot MultiBox Detector

SSD: Single Shot MultiBox Detector

One-Stage Detection 看一下和 two-stage 的方法主要差別,如何用一個單一網絡實作檢測。

主要就是利用設定預設框和回歸的方式,替代了 region proposal 的方法。

Abstract

SSD 的一些簡單介紹

  • 僅使用一個單一網絡實作目标檢測
  • 将邊界框的輸出空間離散化為一組不同比例、尺寸的預設框,分布在每個特征圖的位置上
    • 暫時的了解:與two-stage對候選框進行回歸的方法相比,SSD預設了一組預設框,該組預設框能夠覆寫所有的輸出
  • At prediction time :
    • 在每個預設框中,以分數表示是否存在某個類别的目标(所有類别都有一個分數)
    • 生成對預設框的調整,以更好地比對對象形狀(調整包括什麼?框的尺寸、比例以及位置變化?)
  • 網絡結構特點
    • 網絡結合了來自具有不同分辨率的多個特征圖的預測,以對應各種大小對象的檢測
    • 完全消除了(two-stage中)的提案生成(proposal generation)和後續的像素或特征重采樣階段(pixel or feature resample stages),并将所有計算封裝在一個網絡中 —— 這也是檢測速度巨大增加的原因
    • 為訓練和預測提供了統一的架構

1 Introduction

  • 以前的主要方法 :
    • 假設邊界框 - 為每個框重采樣像素或特征 - 應用到高品質的分類器
    • 計算量太大,在實際應用中太慢
  • SSD的一些改進
    • 使用小型卷積來預測邊界框中的對象類别和邊界框偏移量
    • 使用 separate predictors (filters) 進行不同的寬高比預測
    • 将過濾器應用于網絡後期的多個特征圖,以便實作在多個尺度上的檢測

利用上述改進,能夠使用更小分辨率的輸入,進一步也能提升檢測速度

  • Contributions
    • SSD 速度 + 精度 并存
    • 将小型卷積核應用到特征圖上,預測一組固定的預設邊界框的類别分數和偏移量
    • 從不同比例的特征圖産生不同比例的預測

2 The Single Shot Detector (SSD)

2.1 Model

  • PipeLine
    • a feed-forward convolutional network : 生成固定大小的邊界框集合,并對這些框中存在的對象執行個體進行類型評分
    • a non-maximum suppression step : 生成最終的檢測結果
  • 網絡結構 : the base network + auxiliary structure
    • Multi-scale feature maps

      在基礎網絡的末尾添加卷積特征層

    • Convolutional predictors

      生成一組固定的 predictions

    • Default boxes and aspect ratios

      存在多個具有不同分辨率的特征圖,在每個特征圖單元(cell)上,關聯了一組固定的、具有不同縱橫比的預設框

      對于每個預設框,最終會輸出類别分數以及偏移量,c + 4

      每個單元輸出: (c + 4)k

      每個特征圖輸出: (c + 4)kmn

2.2 Training

  • 與使用 region proposals 的傳統檢測器的主要差別 :

    Ground truth information needs to be assigned to specific outputs in the fixed set of detector outputs

    SSD 訓練圖像中的 ground truth 需要賦予到那些固定輸出的 boxes 上(SSD 輸出的是一系列固定大小、比例的boxes)

  • 需要提前設定的内容
    • 預設框
    • the hard negative mining : 對應正負樣本不平衡的問題
    • data augmentation strategies

Matching strategy

  • 配對的目标:将 Ground truth box 與 default box 比對
  • 與 MultiBox 中使用的方法有所不同,在SSD中,每個 GT box 可以對應多個 default boxes,隻要其 jaccard overlap 大于某一門檻值

Training objective

  • SSD 的訓練目标來源于 MultiBox ,但是将其進行了擴充以對多個類别目标進行檢測
  • The localization loss
    • Smooth L1 loss (from Faster R-CNN)
    • 框中心點位置、框的尺寸
    • 結合公式和代碼

      multibox_loss.py

    # loc_p : predicted localization 
    # loc_t : true localization
    loss_l = F.smooth_l1_loss(loc_p, loc_t, size_average=False)
               
  • The confidence loss
    • softmax loss
    • 輸入每個類别的置信度
  • 兩類loss權重求和

Choosing scales and aspect ratios for default boxes

  • 首先要說明的是,預設框如何設計是可以根據實際應用需求來決定的
  • 根據卷積網絡固有的層次特點,SSD使用了單個網絡中多個不同層的特征圖進行預測
  • 不同層次的特征圖具有不同大小的感受野,是以每層特征圖對應的 default box 尺寸存在差異(詳細介紹看論文和代碼

    prior_box.py

    • 假設使用m個特征圖進行預測,每個特征圖中 default box 的尺寸:
      SSD論文筆記SSD: Single Shot MultiBox Detector
    • 另還設定有一組 aspect ratios,由此即可計算每個框的 width,height
  • 由此可獲得涵蓋了各種輸入對象大小和尺寸的預測

Hard negative mining

  • 在比對階段結束後,得到的大多數 default box 都是 negative 的,造成了正負樣本之間的嚴重不平衡。
  • 解決方法:使用每個預設框的最高置信度損失對它們進行排序,并選擇置信度最高的框,以使正負樣本比例約為1:3.(移除部分 negative 預測框)
  • 具體實作看看代碼,該步驟應該是目标檢測的常用手段。
    # multibox_loss.py
    pos = conf_t > 0 # positive samples
    # 中間進行了一系列看不太懂的操作
    neg = torch.clamp(self.negpos_ratio*num_pos, max=pos.size(1)-1)
               
    看起來大概是先選取了 positive 樣本,然後根據預先設定好的比例來确定 negative 樣本數量。
  • 題外話:facal loss 就是針對正負樣本的不平衡提出的。

Data augmentation

  • 每張訓練圖像通過以下某一種方式随機采樣:
    • 使用原始圖像
    • 采樣一個 patch,與目标的 jaccard overlap 最小為 0.1, 0.3, 0.5, 0.7, 0.9
    • 随機采樣一個 patch
  • 采樣的 patch 與原圖相比縮放尺度、縱橫比都有範圍限制
  • 執行上述采樣之後,每個 patch 被 resize 到固定大小,并以0.5的機率進行水準翻轉

3 Experimental Results

使用 VGG16 作為 base network,但是進行了一些改動(詳細看論文和代碼)

訓練設定也看論文和代碼就行。

  • 将 fc6 和 fc7 轉換成了卷積層
  • 将 2x2 的池化層 pool5 轉換成了 3x3
  • 使用了空洞卷積
  • 移除了所有的 dropout 以及 fc8
  • SGD lr = 0.001 momentum=0.9 weight decay = 0.0005

3.1 PASCAL VOC2007

首先介紹了實驗中使用的網絡模型結構,具體看代碼。

  • SSD300 model
    • predict layers : conv4_3, conv7, conv8_2, conv9_2, conv10_2, conv11_2
    • 在 conv4_3, conv10_2, conv11_2 中,每個位置使用了4個預設框,aspect ratios=1/3 or 3
    • 其餘預測層每個位置上使用了6個預設框
    • L2 normalization
    • 0.001 learning rate for 40k iterations, 10-4 and 10-5 for 10k iterations
  • 實驗結果
    • SSD在相似的對象類别上容易出現混淆,部分原因是共享了多個類别的位置
    • SSD在檢測較小對象時表現較差
    • SSD能很好地識别尺寸較大的對象,并且對不同比例的對象能夠實作檢測

3.2 Model analysis

Data augmentation is crucial

More default box shapes is better

Atrous is faster

use the atrous version of a subsampled VGG16 - base network 的結構,具體細節需要看代碼,論文裡沒怎麼說。

Multiple output layers at different resolutions is better

Using default boxes of different scales on different output layers.

說起來,這樣的方法和 FPN (feature pyramid network)是不是挺像的噢

在實驗過程中,減少了網絡預測層數,并通過在每一層添加更多的 default box 來保持 box 總數基本不變,發現準确率有下降。

The SSD architecture combines predictions from feature maps of various resolutions to achieve comparable accuracy to Faster R-CNN, while using lower resolution input images.

3.3 PASCAL VOC2012

SSD is significantly more accurate, likely due to the use of convolutional default boxes from multiple feature maps and our matching strategy during training.

3.4 COCO

因為 COCO 資料集中的對象要小一些,是以使用了更小的 default boxes 設計

就還是拿 SSD 和 Fast R-CNN, Faster R-CNN, YOLO 作比較。

3.5 Preliminary ILSVRC results

換了個資料集作比較:)

3.6 Data Augmentation for Small Object Accuracy

針對檢測小型對象的問題,提出了新的 data augmentation strategy

a “zoom out" operation : 将圖像随機放置在原始圖像尺寸的16倍的畫布上,使用平均值填充,然後再執行随機裁剪操作

3.7 Inference time

Non-maximum suppression(NMS) 基本操作,查一下自己

首先是 confidence threshold = 0.01 過濾一批框,然後再使用 jaccard overlap=0.45 的NMS,每張圖檔留下200個框

依然和那幾個模型進行了對比。

4 Related Work

  • 以前的方法: based on sliding windows or region proposals
  • 有了卷積網絡之後(R-CNN):Region proposals with CNN
    • SPPnet : 引入了空間金字塔池化
    • Fast R-CNN : 在 SPPnet 的基礎上,對分類置信度和邊界回歸損失進行了整合
  • 改進了 region proposal 的過程
    • Faster R-CNN :RPN(region proposal network) 取代了之前的 selective search proposals
  • 不進行 region proposal 的過程
    • YOLO : 使用整個最上層的特征圖來預測多個類别的置信度和邊界框
    • OverFeat

5 Conclusions

A key feature of our model is the use of multi-scale convolutional bounding box outputs attached to multiple feature maps at the top of the network.

This representation allows us to efficiently model the space of possible box shapes.

繼續閱讀