背景介紹
基於“Proposal + Classification”
的Object Detection
的方法,R-CNN
系列(R-CNN
、SPPnet
、Fast R-CNN
以及Faster R-CNN
),取得了非常好的結果,但是在速度方面離實時效果還比較遠,在提高mAP
的同時兼顧速度,逐漸成爲 Object Detection
未來的趨勢。YOLO
雖然能夠達到實時的效果,但是其mAP
與剛纔提到的state of art
的結果有很大的差距。YOLO
有一些缺陷:每個網格只預測一個物體,容易造成漏檢;對於物體的尺度相對比較敏感,對於尺度變化較大的物體泛化能力較差。針對YOLO
中的這些不足,該論文提出的方法 SSD
在這兩方面都有所改進,同時兼顧了mAP
和實時性的要求。在滿足實時性的條件下,接近 state of art
的結果。對於輸入圖像大小爲300*300
在VOC2007 test
上能夠達到 58 幀每秒( Titan X
的 GPU
),72.1% 的 mAP
。輸入圖像大小爲500 *500
, mAP
能夠達到 75.1%。作者的思路就是Faster R-CNN+YOLO
,利用YOLO
的思路和Faster R-CNN
的anchor box
的思想。
關鍵點
關鍵點1:網絡結構
該論文采用VGG16
的基礎網絡結構,使用前面的前 5 層,然後利用astrous
算法將 fc6
和fc7
層轉化成兩個卷積層。再格外增加了 3 個卷積層,和一個 average pool
層。不同層次的feature map
分別用於 default box
的偏移以及不同類別得分的預測(慣用思路:使用通用的結構(如前 5個conv
等)作爲基礎網絡,然後在這個基礎上增加其他的層),最後通過nms
得到最終的檢測結果。
這些增加的卷積層的 feature map
的大小變化比較大,允許能夠檢測出不同尺度下的物體: 在低層的feature map
,感受野比較小,高層的感受野比較大,在不同的feature map
進行卷積,可以達到多尺度的目的。觀察YOLO
,後面存在兩個全連接層,全連接層以後,每一個輸出都會觀察到整幅圖像,並不是很合理。但是SSD
去掉了全連接層,每一個輸出只會感受到目標周圍的信息,包括上下文。這樣來做就增加了合理性。並且不同的feature map
,預測不同寬高比的圖像,這樣比YOLO
增加了預測更多的比例的box
。(下圖橫向的流程)
關鍵點2:多尺度feature map得到 default boxs及其 4個位置偏移和21個類別置信度
對於不同尺度feature map
( 上圖中38x38x512
,19x19x512
, 10x10x512
, 5x5x512
, 3x3x512
, 1x1x256
) 的上的所有特徵點: 以5x5x256爲例 ,它的#defalut_boxes = 6
按照不同的 scale
和ratio
生成k
個 default boxes
,這種結構有點類似於Faster R-CNN
中的 Anchor
。(此處k=6
所以:5*5*6 = 150 boxes
)
新增加的每個卷積層的feature map
都會通過一些小的卷積核操作,得到每一個default boxes
關於物體類別的21個置信度 20個類別和1個背景) 和4偏移 (shape offsets
) 。
(1) 假設feature map
通道數爲p
,卷積核大小統一爲3*3*p
(此處p=256)。個人猜想作者爲了使得卷積後的feature map
與輸入尺度保持一致必然有 padding = 1
, stride = 1
:
(2) 假如feature map
的size
爲 m*n
, 通道數爲p
,使用的卷積核大小爲3*3*p
。每個 feature map
上的每個特徵點對應 k
個 default boxes
,物體的類別數爲c
,那麼一個feature map
就需要使用k*(c+4)
個這樣的卷積濾波器,最後有(m*n)*k*(c+4)
個輸出。
訓練策略
監督學習的訓練關鍵是人工標註的label
。對於包含default box
(在Faster R-CNN
中叫做anchor
)的網絡模型(如:YOLO
, Faster R-CNN
, MultiBox
)關鍵點就是如何把標註信息(ground true box,ground true category
) 映射到(default box
上)。
-
正負樣本: 給定輸入圖像以及每個物體的
ground truth
,首先找到每個ground true box
對應的default box
中IOU
最大的作爲(與該ground true box
相關的匹配)正樣本。然後,在剩下的default box
中找到那些與任意一個ground truth box
的IOU
大於 0.5的default box
作爲(與該ground true box
相關的匹配)正樣本。 一個ground truth
可能對應多個正樣本default box
而不再像MultiBox
那樣只取一個IOU
最大的default box
。其他的作爲負樣本(每個default box
要麼是正樣本box
要麼是負樣本box
)。下圖的例子是:給定輸入圖像及ground truth
,分別在兩種不同尺度(feature map
的大小爲8*8
,4*4
)下的匹配情況。有兩個default box
與貓匹配(8*8
),一個default box
與狗匹配(4*4
)。
目標函數,和常見的Object Detection
的方法目標函數相同,分爲兩部分:計算相應的 default box
與目標類別的 score
(置信度)以及相應的迴歸結果(位置迴歸)。置信度是採用 Softmax Loss
(Faster R-CNN
是log loss
),位置迴歸則是採用Smooth L1 loss
(與Faster R-CNN
一樣採用offset_PTDF
靠近 offset_GTDF
的策略:見下圖)。
其中:N代表正樣本的數目
該論文是在 ImageNet
分類和定位問題上的已經訓練好的 VGG16
模型中 fine-tuning
得到,使用 SGD
,初始學習率爲 , 衝量爲 0.9,權重衰減爲 0.0005,batchsize
爲 32。不同數據集的學習率改變策略不同。新增加的卷積網絡採用xavier
的方式進行初始化
- 在預測階段,直接預測每個
default box
的偏移以及對於每個類別相應的得分。最後通過nms
的方式得到最後檢測結果。
Default Box 的生成
該論文中利用不同層的 feature map
來模仿學習不同尺度下物體的檢測。
-
scale
: 假定使用 m 個不同層的feature map
來做預測,最底層的feature map
的scale
值爲,最高層的爲,其他層通過下面公式計算得到
-
ratio
: 使用不同的ratio
值 ,計算default box
的寬度和高度:,。另外對於ratio
= 1 的情況,額外再指定scale
爲 也就是總共有 6 中不同的default box
。 -
default box
中心:每個default box
的中心位置設置成 ,其中表示第k個特徵圖的大小, 。
Hard Negative Mining
用於預測的feature map
上的每個點都對應有 6 個不同的default box
,絕大部分的 default box
都是負樣本,導致了正負樣本不平衡。在訓練過程中,採用了 Hard Negative Mining
的策略(根據confidence loss
對所有的box
進行排序,使正負例的比例保持在1:3) 來平衡正負樣本的比率,這樣做能提高4%左右。
Data augmentation
爲了模型更加魯棒,需要使用不同尺寸的輸入和形狀,作者對數據進行了如下方式的隨機採樣:
- 使用整張圖片
- 使用
IOU
和目標物體爲0.1, 0.3, 0.5, 0.7, 0.9的patch
(這些patch
在原圖的大小的[0.1, 1]
之間, 相應的寬高比在[1/2, 2]
之間) - 隨機採取一個
patch
當ground truth box
的 中心(center
)在採樣的patch
中時,我們保留重疊部分。在這些採樣步驟之後,每一個採樣的patch
被 resize 到固定的大小,並且以 0.5 的概率隨機的水平翻轉(horizontally flipped
)。用數據增益通過實驗證明,能夠將數據mAP
增加8.8%。