轉(zhuǎn)載請(qǐng)注明作者:夢(mèng)里茶
Single Shot MultiBox Detector
Introduction
一句話概括:SSD就是關(guān)于類別的多尺度RPN網(wǎng)絡(luò)
基本思路:
- 基礎(chǔ)網(wǎng)絡(luò)后接多層feature map
- 多層feature map分別對(duì)應(yīng)不同尺度的固定anchor
- 回歸所有anchor對(duì)應(yīng)的class和bounding box
Model
- 輸入:300x300
- 經(jīng)過VGG-16(只到conv4_3這一層)
- 經(jīng)過幾層卷積衙傀,得到多層尺寸逐漸減小的feature map
- 每層feature map分別做3x3卷積,每個(gè)feature map cell(又稱slide window)對(duì)應(yīng)k個(gè)類別和4個(gè)bounding box offset裸卫,同時(shí)對(duì)應(yīng)原圖中6(或4)個(gè)anchor(又稱default box)
38x38, 最后3x3, 1x1三個(gè)feature map的每個(gè)feature map cell只對(duì)應(yīng)4個(gè)anchor,分別為寬高比: 1:1兩種泪电,1:2, 2:1兩種挎峦,因此總共有 38 * 38 * 4 + 19 * 19 * 6 + 10 * 10 * 6 + 5 * 5 * 6 + 3 * 3 * 4 + 1 * 1 * 4 = 8732 個(gè)anchor
其他feature map的feature map cell對(duì)應(yīng)6個(gè)anchor陈哑,分別為寬高比: 1:1兩種,1:2, 2:1兩種盲赊,1:3铣鹏, 3:1兩種
每層的feature map cell對(duì)應(yīng)的anchor計(jì)算方法如下
位置:假設(shè)當(dāng)前feature map cell是位于第i行,第j列哀蘑,則anchor的中心為 ((i+0.5)/|fk|,(j+0.5)/|fk|), fk是第k層feature map的size(比如38)
-
縮放因子:
Scale
其中smin為0.2诚卸,smax為0.9葵第,m為添加的feature map的層數(shù),縮放因子就是為不同feature map選擇不同的大小的anchor合溺,要求小的feature map對(duì)應(yīng)的anchor盡量大卒密,因?yàn)樵叫〉膄eature map,其feature map cell的感受野就越大 -
anchor寬高:
widthheight其中棠赛,ar∈{1,2,3,1/2,1/3}哮奇,可以理解為在縮放因子選擇好anchor尺寸后,用ar來控制anchor形狀睛约,從而得到多尺度的各種anchor鼎俘,當(dāng)ar=1時(shí),增加一種 sk=sqrt(sk-1sk+1)辩涝,于是每個(gè)feature map cell通常對(duì)應(yīng)6種anchor贸伐。
- 網(wǎng)絡(luò)的訓(xùn)練目標(biāo)就是,回歸各個(gè)anchor對(duì)應(yīng)的類別和位置
Training
樣本
正樣本
選擇與bounding box jaccard overlap(兩張圖的交集/并集)大于0.5的anchor作為正樣本樣本比例
Hard negative mining:由于負(fù)樣本很多怔揩,需要去掉一部分負(fù)樣本捉邢,先整圖經(jīng)過網(wǎng)絡(luò),根據(jù)每個(gè)anchor的最高類置信度進(jìn)行排序商膊,選擇置信度靠前的樣本歌逢,這樣篩選出來的負(fù)樣本也會(huì)更難識(shí)別,并且最終正負(fù)樣本比例大概是1:3
Loss
還是一如既往的location loss + classification loss翘狱,并為location loss添加了系數(shù)α(然而實(shí)際上α=1)進(jìn)行平衡,并在batch維度進(jìn)行平均
- x是xijp的集合xijp={1,0}砰苍,用于判斷第i個(gè)anchor是否是第j個(gè)bounding box上的p類樣本
- c是cip的集合潦匈,cip是第i個(gè)anchor預(yù)測(cè)為第p類的概率
- l是預(yù)測(cè)的bounding box集合
- g是ground true bounding box集合
其中定位loss與faster rcnn相同
這個(gè)式子里的k不是很明確,其實(shí)想表達(dá)不算背景0類的意思赚导,且前景類只為match的類算location loss
分類loss就是很常用的softmax交叉熵了
核心的內(nèi)容到這里就講完了茬缩,其實(shí)跟YOLO和faster rcnn也很像,是一個(gè)用anchor box充當(dāng)固定的proposal的rpn吼旧,并且用多尺度的anchor來適應(yīng)多種尺度和形狀的目標(biāo)對(duì)象凰锡。
Detail
在訓(xùn)練中還用到了data augmentation(數(shù)據(jù)增強(qiáng)/擴(kuò)充),每張圖片多是由下列三種方法之一隨機(jī)采樣而來
- 使用整圖
- crop圖片上的一部分圈暗,crop出來的min面積為0.1,0.3,0.5,0.7,0.9
- 完全隨機(jī)地crop
然后這些圖片會(huì)被resize到固定的大小掂为,隨機(jī)水平翻轉(zhuǎn),加入一些圖像上的噪聲员串,詳情可以參考另一篇論文:
Some improvements on deep convolutional neural network based image classification
從切除實(shí)驗(yàn)中勇哗,可以看到data augmentaion是很重要的(從65.6到71.6)
這個(gè)表中還提到了atrous,指的是空洞卷積寸齐,是圖像分割(deeplab)領(lǐng)域首先提出的一個(gè)卷積層改進(jìn)欲诺,基于相鄰像素冗余的假設(shè)抄谐,跳過相鄰像素進(jìn)行卷積,感受野更大扰法,測(cè)試速度也更快蛹含。
-
標(biāo)準(zhǔn)卷積:
conv.gif -
空洞卷積:
dilate_conv.gif
具體可以參考 ICLR2015 Deeplab
從這個(gè)表中也可以看出多種形狀的anchor可以提升準(zhǔn)確率
Result
輸入尺寸為300x300,batch size為8的SSD300可以做到實(shí)時(shí)(59FPS)且準(zhǔn)確(74.3% mAP)的測(cè)試
Summary
SSD算是一個(gè)改進(jìn)性的東西塞颁,站在Faster RCNN的肩膀上達(dá)到了實(shí)時(shí)且準(zhǔn)確的檢測(cè)