SSD 論文理解
阿新 • • 發佈:2018-12-17
paper:: SSD Single Shot MultiBox Detector(單攝多框檢測器)
link:SSD paper
code:https://github.com/weiliu89/caffe/tree/ssd
摘要
- 提出目標檢測方法SSD:
- one-stage的檢測方法,不需要額外的proposal生成過程;
- 將bbox的輸出空間離散化到每個feature map預設的多長寬比例和多尺度的boxes上;(具體含義是將學習到的bbox直接對映到預設的box上)
- 通過合併不同size feature map的方法來處理檢測目標多尺度的問題;
- SSD效能:
- 的輸入解析度,SSD在VOC07 test資料集上能達到74.3%mAP,59FPS(Titan X);
- 輸入解析度能達到76.9%mAP,比Faster-RCNN的精度更高;
- 在提升了資料增強策略後效能有了進一步的提升: 達到77.2%mAP, 達到79.8%mAP;
引言
- SSD方法帶來的提升和貢獻:
- 提出一個one-stage的目標檢測方法:在速度比同為one-stage方法YOLO v1快的同時精度能達到two-stage方法Faster-RCNN的水平;
- SSD的核心思想是用小尺寸卷積核對預設的bbox預測對應的classes score和coord offsets;
- 在不同尺寸的feature map上預測不同長寬比例的bbox提升檢測精度;
- 實現了同時權衡精度和速度的端到端的目標檢測訓練框架;
- 在實驗階段進行了全方位的速度和效能的對比;
Single Shot Detector
本節主要內容是針對SSD演算法框架和對應的訓練方法進行描述:
- SSD在訓練階段需要訓練影象以及對應object的ground truth label;
- 在卷積預測階段:針對不同尺寸feature map上每一個location按照不同長寬比例預測和預設bbox集合相對的座標偏移和類別置信度;
- 訓練階段的loss是座標Smooth L1 loss和類別Softmax loss的加權求和;
SSD model design
SSD原始實現的backbone是VGG-16,在此基礎上添加了一些輔助結構以產生最後的檢測預測結果:
- 多尺度feature map檢測:SSD同時在多個尺度的feature map上預測結果,相反在YOLO v1的方法中只在單一的feature map預測檢測結果;上圖SSD pipeline中最終會產生8732個bbox,對此number進行解析:
- feature map box數目:
- feature map box數目:
- feature map box數目:
- feature map box數目:
- feature map box數目:
- feature map box數目:
- YOLO v1最後使用全連線層來生成最後的預測結果,SSD則採用 直接對輸出的特徵圖進行卷積操作計算預測值(注意:同一個特徵圖中每個單元的先驗框數目相同,每一個單元的先驗框的設定<大小和長寬比>不同);
- 先驗框priorBox的設定:針對特徵圖上每一個cell需要預測k個bbox,因此每一個輸出的特徵圖都需要 個卷積核,其中c表示類別數(SSD中將背景也當做特殊的類別,SSD實際要預測c+1個類別置信度,其中包括bbox屬於背景的置信度,論文中c類別已經包含了背景這個類別),4表示座標相關數目,SSD中priorBox的設計參考了Faster-RCNN的anchor boxes,不同的是SSD的priorBox應用在不同解析度的特徵圖;
- 從priorBox到Bbox解析的實現細節(結合Faster-RCNN部分內容):
- 當背景類的置信度最高時,表示預測的bbox不包含目標,當其他類別置信度最高時就代表bbox所含目標的類別,SSD網路對feature map上的每一個cell的每一個priorBox都要預測兩組值 和 ,通常bbox的位置資訊由中心座標和長寬表示,但是實際上SSD的預測值只是priorBox到Bbox的轉換值(offset/transformation),SSD裡面使用的座標轉換策略和Faster-RCNN相同;
- 已知先驗框 和目標邊界框 ,其轉換過程為: ,在目標檢測領域中這個過程叫做bbox位置資訊的編碼encode,預測解析是其逆向過程為位置資訊的解碼decode,從預測值和priorBox解析得到預測Bbox;
- 位置資訊解碼階段: