SSD回歸類物體檢測


本寶寶最近心情不會,反正這篇也是搬用別人博客的了:(SSD就是YOLO+anchor(不同feature map 作為input))

這篇文章是在YOLO[1]之后的一篇文章,這篇文章目前是一篇the-art-of-state的方法。這篇文章可以看到很多前人的影子,我所感受到這篇文章主要借鑒前人的有DeepNultiBox[2]、Faster R-CNN[3]、YOLO[1]、VGG16[4]等。

對於object detection,之前的方法都沒有特別快,雖然YOLO很快,但是在准確性上下降了較多。作者就提出了一個速度很好,准確性還好的方法——SSD。

整個圖片做輸入,之后在輸出層回歸出box的位置和object的類別。與YOLO不同的是,SSD在輸出層只用conv layer,而不是全鏈接層。

model
這個模型,是以VGG16進行修改的,把VGG16的fc層換成conv層,中間還夾雜了maxpooling層。每個額外添加的conv層都輸出一個Feature map,並以此作為預測一個輸入,換句話說,這些不同scale的Feature map都作為預測的輸入,以此來達到不同scale。作者舉了一個例子,如果一個Feature map是m×n×p(width×height×channel)的,那么用3×3×p的kernel去產生value,產生了m×n個value。

為了方便讀者理解這個網絡結構,我把VGG[4]論文中的圖粘貼過來了,作者用的是D這個模型進行修改的。VGG

作者在這里提到的default boxes與faster R-CNN中的Anchor很類似,這里是按照YOLO中的想法,把每個Feature map(不同scale的)分成m×n個cell,每個cell有默認出k個default boxes,最后的predict box與default box有4個offset,並為每個predict box計算c個類的值。最后產生了(c+4)kmn個值。這里與faster R-CNN Anchor最大的不同就是,faster R-CNN是通過改變Anchor的大小來實現scalable的,SSD是改變Feature map大小來實現的。frameword

損失函數:這個與Faster R-CNN中的RPN是一樣的,不過RPN是預測box里面有object或者沒有,所以,沒有分類,SSD直接用的softmax分類。location的損失,還是一樣,都是用predict box和default box/Anchor的差 與 ground truth box和default box/Anchor的差 進行對比,求損失。 
loss

以下,是我根據我的理解畫的一張簡單示意圖。這個default box存在求損失,就是盡可能把X與Y的數值做到差值最小。

loss

如果我們用m個Feature maps進行預測,那么尺度最大的是smax,最小的是smin,那么第k個Feature map的default boxes的尺度sk:scale
使用不同的長寬比,ar∈{1,2,3,1/2,1/3},長度(wr = sk × squr(ar)),高度(hr = sk / squr(ar))。除此之外,對於ar=1,還有一個情況sk‘= squr(sk × sk+1)。

這種方法會產生很多個negative的數據,使positive與negative失去平衡,作者把negative:positive控制在3:1。

data_augmentation

VOC2007

VOC2012

COCO

data_augmentation_effect

目前,我還沒有明白atrous是什么。

multiple_layers

因為他把定位和分類放在一步里解決。

analysis

因為在top layer中,獲得小目標的信息不多,擴大圖片大小輸入,會有改善。通過數據擴大也會有改善。

smallobject

使用 Titan X 、 cuDNN v4 、 Intel Xeon E5-2667v3@3.20GHz。

speed

  • SSD的各種特定和優點。
  • SSD將會獲得更為廣泛的應用。

這篇文章在很早之前就想拜讀,但是,到今天才扣完。之前讀的object Detection文章基本都是在為了這篇做基礎。這篇文章看完了,想法有很多,現在簡單敘述一下把。

  • DeepMultiBox:這篇文章主要講的多個scale的問題,利用圖片放縮的方法進行不同scale多個框預測。文章在最后提到把定位分類放到one-shot的網絡里面,我覺得作者可能受到這個的啟發。
  • YOLO:YOLO這篇文章就是把定位和分類放在一個網絡里面,同時徹底擺脫了之前位置推薦的方式。SSD中的default box的生成借鑒了YOLO中cell的想法。SSD在很多方面都是在於YOLO做對比。畢竟YOLO是發表在CVPR2016上的成果。
  • Faster R-CNN:這篇文章主要借鑒了Faster R-CNN中anchor的想法。正如作者在提到“similar to Faster R-CNN”,SSD里面提到的“default bounding box”直接按照anchor理解的話,便容易理解多了,SSD與Faster R-CNN中關於Anchor的使用區別主要在Scalable上。
  • VGG16:這個主要說的是個網絡結構,SSD主要就是根據VGG16改的,VGG16中拋棄了之前用的5×5、7×7、11×11等大的卷積核,而是全用3×3的卷積核(VGG文章中提到了具體原因,大主要有1.更多個non-linear rectification layers.)。
    • “How to design the optimal tiling is an open question as well”,這是作者在提到default box的尺度問題時候說的。
    • 針對small object的問題,這個跟YOLO是一致的,我覺得這很可能是這樣划分cell的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM