1. 程式人生 > >[論文理解]SSD:Single Shot MultiBox Detector

[論文理解]SSD:Single Shot MultiBox Detector

導致 目標檢測 alt sam 實驗 detection 置疑 增強 不同

SSD:Single Shot MultiBox Detector

Intro

SSD是一套one-stage算法實現目標檢測的框架,速度很快,在當時速度超過了yolo,精度也可以達到two-stage的精度,可以與faster rcnn媲美,這套算法裏用到了與faster rcnn的anchor相似的概念-default box,也解決了多尺度問題對one-stage的影響-對不同大小的feature map進行滑窗分類,使得不同尺度的feature map的分類器對原圖目標尺度更加敏感。

one-stage和two-stage的算法區別主要在於,two-stage算法在區域提取的時候做分類是前景和背景,只有兩個分類,然後再拿去給第二個專門用來分類的網絡去學習分類具體類別;而one-stage算法直接在區域提取的時候給分類結果(這其中其實還設計到訓練的時候default boxes 的label與ground truth label匹配的問題),我認為這是最大的不同。

Model

模型的結果其實很容易理解,就是在vgg16後面開始一邊對每個feature map直接做分類,一邊繼續壓縮feature map的size,然後繼續做分類,以此類推。最後把所有的detection結果做nms。

技術分享圖片

文章先介紹了SSD作為多尺度檢測器是通過對feature map的不同尺度進行的,而怎麽做這個檢測呢?利用類似於anchor的方法,在不同尺度的feature map上用3*3卷積核滑窗,這樣每個卷積核作用得到一個結果,而對每個feature map cell,作者又安排了一組對應的default boxes,這些default boxes在size上有所不同,比例是預先設計好的。每個cell安排(c+4)*k個卷積核,c表示類別,4表示offset,k表示default boxes種類,這樣,對每個default box而言,有不同的卷積核負責算類別概率、與bounding box的偏移值。因此,對於一個m*n的feature map而言,輸出的結果有m*n*k*(c+4)個。作者也說了,他們設計的default boxes其實是類似於anchor boxes的,這點毋庸置疑。

Training

之前說過,訓練很重要的一點是label的對應,因此作者在這裏首先講了匹配的策略。先從每個default box開始,把每個default box匹配一個與之重疊度最高的ground truth,這裏重疊度用的jaccard算法,其實跟iou是一樣的,交集比上並集,然後還沒完,又從ground truth出發,讓每個ground truth能夠對應與之jaccard重疊度大於0.5的default boxes,然後把小於0.5的去除。這樣減少了訓練的數量,大大簡化了訓練。舉個例子,一套簡單題,一個同學在班上分數最高,他肯定就是這個班最強的人了,但是他只有五十分,你說選他還是不選他,菜雞!當然不選了。

上面建立了從default box到ground truth box在空間上的映射,然後提出loss:

技術分享圖片

這裏又通過p將空間映射在類別上細分。我們知道每個default box的預測有(c+4)個值,所以對於l,只需要說明是第幾個參與訓練的default box和第m個位置預測,m當然是在那4個中選,至於你安排哪幾個預測位置,完全看你自己。兩者經過smooth L1函數運算完,再看看類別對應上沒有,顯然對應上了這個值就應該是1,以此來最小化loss。分類的loss是所有正例分類概率的-log乘上匹配值,顯然匹配上了是1,如果每匹配上,就是所有正例概率-log之和,加上負樣本預測背景的概率-log,就是全預測0就是背景,即對0的預測概率,顯然概率越高loss越小。

然後是hard negative mining,在經過matching之後,其實大多數default box是負樣本,這就導致了正負樣本極度不均衡,然後就把一些負樣本變正唄,把iou高的變正,保證正負樣本比例位1:3.

最後是數據增強,增強選項包括:

  1. 直接用原圖
  2. sample a patch(實在不知道咋翻譯但是會意就好了)使得iou是0.1 0.3 0.5 0.7 或者0.9
  3. 隨機sample a patch(不用保證是上面的0.1 0.3 0.5 0.7 0.9)

實驗部分到後面統一做,直接把看過的都用mxnet寫一遍吧。希望有一天買得起GPU,不用天天看書而無法正兒八經跑項目和比賽。真心想參加比賽!!

[論文理解]SSD:Single Shot MultiBox Detector