Saturday, March 10, 2018

深入淺出 Deep Learning():R-CNN

深入淺出 Deep Learning():R-CNN

2018/02/03

前言:

施工中...


-----


Summary:



-----



-----

Outline

一、SVM
二、SMO
三、DPM
四、SS
五、FCN

六、R-CNN

七、SPPNet
八、Fast R-CNN
九、Faster R-CNN
十、YOLO
十一、SSD

-----

一、SVM

-----


-----



-----


Fig. 1. Support Vector Machine [3].

-----

二、SMO

SMO is a better SVM




-----

三、DPM

DPM1 = Fixed Window + HOG + SVM

DPM2 = Sliding Window + HOG + SVM



Fig. 3.3. An overview of the feature extraction and object detection chain, p. 2 [6].


Fig. 3.2. The HOG detectors cue mainly on silhouette contours, p. 7 [6].




Fig. 7.1. The matching process at one scale, p. 1633 [1].

-----

四、SS

SS = SS + SIFT + SVM






-----

五、FCN








-----


-----





-----

六、R-CNN

R-CNN = SS + CNN + SVM
多次提取、有 crop/warp





-----

七、SPPNet

SPPNet = SS + CNN (SPP) + SVM
一次提取、無 crop/warp









「一張圖片會有〜2k 個候選框,每一個都要單獨輸入 CNN 做卷積等操作很費時。SPPNet 提出:能否在 feature maps 上提取 ROI 特徵,這樣就只需要在整幅圖像上做一次卷積。」

「空間金字塔池化層是 SPPNet 的核心,其主要目的是對任意尺寸的輸入產生固定大小的輸出。思路是對任意大小的特徵映射首先分成16,4,1個塊,然後在每個塊上最大池化,池化後的特徵拼接得到一個固定維度的輸出。以滿足全連接層的需要不過因為不是針對於目標檢測的,所以輸入的圖像為一整副圖像。」

「空間金字塔最大池化的過程,其實就是從這21個圖片塊中,分別計算每個塊的最大值,從而得到一個輸出神經元。最後把一張任意大小的圖片轉換成了一個固定大小的21維特徵(當然你可以設計其它維數的輸出,增加金字塔的層數,或者改變劃分網格的大小)。上面的三種不同刻度的劃分,每一種刻度我們稱之為:金字塔的一層,每一個圖片塊大小我們稱之為:windows size了。如果你希望,金字塔的某一層輸出n*n個特徵,那麼你就要用windows size大小為:(w/n,h/n)進行池化了。 」

「R-CNN 和 SPPNet 的訓練過程類似,分多個階段進行,實現過程較複雜。這兩種方法首先選用 Selective Search 提取 proposals,然後用 CNN 實現特徵提取,最後基於 SVMs 算法訓練分類器, 在此基礎上還可以進一步學習檢測目標的 Bounding Box。」

-----

八、Fast R-CNN

Fast R-CNN = SS + CNN + CNN
一次提取、無 crop/warp、SVM 改用 CNN
ROI pooling,類似 SPP,但只有一種 7x7 網格






-----

九、Faster R-CNN

Faster R-CNN = CNN (RPN) + CNN + CNN
一次提取、無 crop/warp、SS 改用 CNN (RPN)
RPN 加入九種 anchors、從 20000 個輸出 300 個 proposals





-----

十、YOLO

-----



-----






-----


十一、SSD


-----




-----







-----





「比較 Faster R-CNN、YOLO、SSD 這幾種算法,有一個問題要先回答,YOLO、SSD 為什麼快?

最主要的原因還是提 proposal(最後輸出將全連接換成全卷積也是一點)其實總結起來我認為有兩種方式:一、RPN。二、暴力劃分。

RPN 的設計相當於是一個 sliding window 對最後的 feature map 每一個位置都進行了估計,由此找出 anchor 上面不同變換的 proposal,設計非常經典,代價就是 sliding window 多花的時間。

相比較 YOLO 比較暴力,直接劃為 7x7 的網格,估計以網格為中心兩個位置也就是總共 98 個「proposal」。快的很明顯,精度和格子的大小有關。

SSD 則是結合:不同 layer 輸出 的輸出的不同尺度的特徵映射提出來,劃格子,多種尺度的格子,在格子上提「anchor」。結果顯而易見。」

-----


-----

結論:





-----

References

PyTorch(六):Seminar
https://hemingwang.blogspot.tw/2018/01/pytorchseminar.html

一、SVM

DRL實作團0008:SVM
http://hemingwang.blogspot.tw/2017/05/drl0008svm.html

讀者提問:什麼是支持向量機 (SVM) – David's Perspective
https://taweihuang.hpd.io/2016/09/21/%E8%AE%80%E8%80%85%E6%8F%90%E5%95%8F%EF%BC%9A%E4%BB%80%E9%BA%BC%E6%98%AF%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%A9%9F-svm/

二、SMO

DRL實作團0009:SMO
https://hemingwang.blogspot.tw/2017/05/drl0009smo.html

SVM by Sequential Minimal Optimization (SMO) - ppt video online download
http://slideplayer.com/slide/6982257/ 

三、DPM

AI從頭學(三三):DPM
http://hemingwang.blogspot.tw/2017/07/aiobject-detection-with.html


四、SS

论文笔记:Selective Search for Object Recognition _ Jermmy's Lazy Blog
http://jermmy.xyz/2017/05/04/2017-5-4-paper-notes-selective-search/



八、SPPNet

SPPNet-引入空间金字塔池化改进RCNN
https://zhuanlan.zhihu.com/p/24774302

目标检测(3)-SPPNet
https://zhuanlan.zhihu.com/p/27485018

RCNN学习笔记(3) Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net) - CSDN博客
http://blog.csdn.net/u011534057/article/details/51219959

Detection梳理:R-CNN-)SPPNet_Fast R-CNN-)Faster R-CNN-)SSD_FPN
https://zhuanlan.zhihu.com/p/33643708

九、Faster R-CNN

1. Introduction to How Faster R-CNN, Fast R-CNN and R-CNN Works - YouTube
https://www.youtube.com/watch?v=v5bFVbQvFRk
物体检测之从RCNN到Faster RCNN - CSDN博客
http://blog.csdn.net/Young_Gy/article/details/78873836

十、YOLO

物体检测-回归方法(YOLO+SSD) - CSDN博客
http://blog.csdn.net/ben_ben_niao/article/details/52014285

十一、SSD

论文笔记 SSD  Single Shot MultiBox Detector - CSDN博客
http://blog.csdn.net/syoung9029/article/details/68938635 

深度学习目标检测:RCNN,Fast,Faster,YOLO,SSD比较 - CSDN博客
http://blog.csdn.net/ikerpeng/article/details/54316814

No comments: