SSD浅层网络_目标检测SSD
一、目標檢測之SSD
SSD: Single Shot MultiBox Detector
論文鏈接:https://arxiv.org/abs/1512.02325
論文翻譯:https://blog.csdn.net/denghecsdn/article/details/77429978
論文詳解:https://blog.csdn.net/WZZ18191171661/article/details/79444217
論文代碼:https://github.com/balancap/SSD-Tensorflow
二、SSD算法
1、整體框架
圖1:
圖2:算法步驟:
1、輸入一幅圖片(300x300),將其輸入到預訓練好的分類網絡中來獲得不同大小的特征映射,修改了傳統的VGG16網絡;
將VGG16的FC6和FC7層轉化為卷積層,如圖1上的Conv6和Conv7;
去掉所有的Dropout層和FC8層;
添加了Atrous算法(hole算法);
將Pool5從2x2-S2變換到3x3-S1;
2、抽取Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2層的feature map,然后分別在這些feature map層上面的每一個點構造6個不同尺度大小的bbox,然后分別進行檢測和分類,生成多個bbox,如圖2所示;
3、將不同feature map獲得的bbox結合起來,經過NMS(非極大值抑制)方法來抑制掉一部分重疊或者不正確的bbox,生成最終的bbox集合(即檢測結果);
2、算法細節
(1)多尺度特征映射
SSD算法中使用到了conv4_3,conv_7,conv8_2,conv7_2,conv8_2,conv9_2,conv10_2,conv11_2這些大小不同的feature maps,其目的是為了能夠準確的檢測到不同尺度的物體,因為在低層的feature map,感受野比較小,高層的感受野比較大,在不同的feature map進行卷積,可以達到多尺度的目的。
Why?:我們將一張圖片輸入到一個卷積神經網絡中,經歷了多個卷積層和池化層,我們可以看到在不同的卷積層會輸出不同大小的feature map(這是由于pooling層的存在,它會將圖片的尺寸變小),而且不同的feature map中含有不同的特征,而不同的特征可能對我們的檢測有不同的作用。總的來說,淺層卷積層對邊緣更加感興趣,可以獲得一些細節信息,而深層網絡對由淺層特征構成的復雜特征更感興趣,可以獲得一些語義信息,對于檢測任務而言,一幅圖像中的目標有復雜的有簡單的,對于簡單的patch我們利用淺層網絡的特征就可以將其檢測出來,對于復雜的patch我們利用深層網絡的特征就可以將其檢測出來,因此,如果我們同時在不同的feature map上面進行目標檢測,理論上面應該會獲得更好的檢測效果。
(2)Defalut box
如上圖所示,在特征圖的每個位置預測K個bbox,對于每一個bbox,預測C個類別得分,以及相對于Default box的4個偏移量值,這樣總共需要?(C+4)×K個預測器,則在m×n的feature map上面將會產生?(C+4)×K×m×n個預測值。
分析:
SSD中的Defalut box和Faster-rcnn中的anchor機制很相似。就是預設一些目標預選框,后續通過softmax分類+bounding box regression獲得真實目標的位置。對于不同尺度的feature map 上使用不同的Default boxes。如上圖所示,我們選取的feature map包括38x38x512、19x19x1024、10x10x512、5x5x256、3x3x256、1x1x256,Conv4_3之后的feature map默認的box是4個,我們在38x38的這個平面上的每一點上面獲得4個box,那么我們總共可以獲得38x38x4=5776個;同理,我們依次將FC7、Conv8_2、Conv9_2、Conv10_2和Conv11_2的box數量設置為6、6、6、4、4,那么我們可以獲得的box分別為2166、600、150、36、4,即我們總共可以獲得8732個box,然后我們將這些box送入NMS模塊中,獲得最終的檢測結果。
Defalut box生成規則:
以feature map上每個點的中點為中心(offset=0.5),生成一系列同心的Defalut box(然后中心點的坐標會乘以step,相當于從feature map位置映射回原圖位置)
使用m(SSD300中m=6)個不同大小的feature map 來做預測,最底層的 feature map 的 scale 值為 Smin=0.2,最高層的為Smax=0.95,其他層通過下面的公式計算得到:
使用不同的ratio值,[1, 2, 3, 1/2, 1/3],通過下面的公式計算 default box 的寬度w和高度h
而對于ratio=0的情況,指定的scale如下所示,即總共有 6 中不同的 default box。(3)Loss
loss函數分為兩部分:計算相應的default box與目標類別的confidence loss以及相應的位置回歸。
其中N是match到Ground Truth的default box數量;而alpha參數用于調整confidence loss和location loss之間的比例,默認alpha=1。
位置回歸則是采用?Smooth L1 loss,loss函數為:
confidence loss是典型的softmax loss:
總結
以上是生活随笔為你收集整理的SSD浅层网络_目标检测SSD的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: open函数返回-1_python常用函
- 下一篇: Ignite中的机器学习介绍