最近在準備找工作面試,本文在此梳理了目標檢測中涉及的面試要用的知識點,包含了一下幾方面:
My paper reading 過程總結:
實際步驟 | 所花時間 | 評價 | 改進 |
---|---|---|---|
先看了abstract, 1 introduction 以及 4 related works這三個部分,對objection detection 有了大致瞭解 | 0.5U | ||
看了2.1的Model部分,上網查找RCNN系列以及SSD和YOLO系列的總結對比 | 0.75U | 對這些模型底層實現都不瞭解,所以網上的總結整理有點沒太看懂 | 先看SSD的具體原理,再速看YOLO系列原理,和SSD對比,R-CNN系列可以不看 |
focus on SSD |
模型列表:
- R-CNN
- SPPnet
- Fast R-CNN
- Faster R-CNN
- YOLO
- SSD
閱讀博客(主要閱讀):
- Deep Learning for Object Detection: A Comprehensive Review
學習ow these object detection models both inspire and diverge from one another
- 目標檢測之YOLO,SSD
- SSD目標檢測 (五星)
參考博客:
博客筆記:
筆記:
(1) 分類:
1 以RCNN爲代表的基於Region Proposal的深度學習目標檢測算法(RCNN,SPP-NET,Fast-RCNN,Faster-RCNN等);
2 以YOLO爲代表的基於迴歸方法的深度學習目標檢測算法(YOLO,SSD等)。
RCNN系列:
模型 | 原理總結 | 優點 | 缺點 |
---|---|---|---|
傳統方法 | 區域選擇(滑窗)、特徵提取(SIFT、HOG等)、分類器(SVM、Adaboost等)三個部分 | 一方面滑窗選擇策略沒有針對性、時間複雜度高,窗口冗餘;另一方面手工設計的特徵魯棒性較差 | |
RCNN |
流程; 1 使用Selective Search提取Proposes,然後利用CNN等識別技術進行分類。 2 使用識別庫進行預訓練,而後用檢測庫調優參數。 3 使用SVM代替了CNN網絡中最後的Softmax,同時用CNN輸出的4096維向量進行Bounding Box迴歸。 4 流程前兩個步驟(候選區域提取+特徵提取)與待檢測類別無關,可以在不同類之間共用;同時檢測多類時,需要倍增的只有後兩步驟(判別+精修),都是簡單的線性運算,速度很快。 |
1 訓練分爲多個階段,步驟繁瑣: 微調網絡+訓練SVM+訓練邊框迴歸器。 2 訓練耗時,佔用磁盤空間大:5000張圖像產生幾百G的特徵文件。 3 速度慢: 使用GPU, VGG16模型處理一張圖像需要47s。 |
|
SPP net |
more details: http://lanbing510.info/2017/08/24/RCNN-FastRCNN-FasterRCNN.html |
1 通過Spatial Pyramid Pooling解決了深度網絡固定輸入層尺寸的這個限制,使得網絡可以享受不限制輸入尺寸帶來的好處。 2 解決了RCNN速度慢的問題,不需要對每個Proposal(2000個左右)進行Wrap或Crop輸入CNN提取Feature Map,只需要對整圖提一次Feature Map,然後將Proposal區域映射到卷積特徵層得到全鏈接層的輸入特徵。
|
|
Fast R-CNN |
1 Fast-RCNN直接使用Softmax替代了RCNN中SVM進行分類,同時在網絡中加入了多任務函數邊框迴歸,實現了端到端的訓練(除SS Region Proposal階段)。 2 借鑑SPP-NET,提出了一個ROI層。ROI Pooling Layer實際上是SPP-NET的一個精簡版,SPP-NET對每個Proposal使用了不同大小的金字塔映射,而ROI Pooling Layer只需要下采樣到一個7x7的特徵圖。對於VGG16網絡conv5_3有512個特徵圖,這樣所有Region Proposal對應了一個7*7*512維度的特徵向量作爲全連接層的輸入。 3 使用了不同於SPP-NET的訓練方式,訓練時,把同張圖片的Prososals作爲一批進行學習,而Proposals的座標直接映射到conv5層上,這樣相當於一張圖片的所有訓練樣本只卷積了一次。 4 論文在迴歸問題上並沒有用很常見的2範數作爲迴歸,而是使用所謂的魯棒L1範數作爲損失函數。 5 論文將比較大的全鏈接層用SVD分解了一下使得檢測的時候更加迅速。 |
使用Selective Search提取Region Proposals,沒有實現真正意義上的端對端,操作也十分耗時。 |
|
Faster R-CNN |
1 提出了Region Proposal Network(RPN),將Proposal階段和CNN分類融到了一起,實現了一個完全的End-To-End的CNN目標檢測模型。RPN可以快速提取高質量的Proposal,不僅加快了目標檢測速度,還提高了目標檢測性能。 2 將Fast-RCNN和RPN放在同一個網絡結構中訓練,共享網絡參數。 |
雖然現在也是用的滑動窗口策略,但是,滑動窗口操作是在卷積層特徵圖上進行的,維度較原始圖像降低了16*16倍(16如何得到的可參見前文);多尺度採用了9種Anchor,對應了三種尺度和三種長寬比,加上後邊接了邊框迴歸,所以即便是這9種Anchor外的窗口也能得到一個跟目標比較接近的Region Proposal。 | |
總結 |
YOLO和SSD:
相比較於RCNN系列:利用迴歸的思想(既給定輸入圖像,直接在圖像的多個位置上回歸出這個位置的目標邊框以及目標類別),很大的加快了檢測的速度
模型 | 原理總結 | 優點 | 缺點 |
---|---|---|---|
YOLO |
yolo :之前處理目標檢測的算法都歸爲了分類問題,然而作者將物體檢測任務當做一個regression問題來處理,使用一個神經網絡,直接從一整張圖像來預測出bounding box 的座標、box中包含物體的置信度和物體的probabilities。整個檢測流程都在一個網絡中,實現了end-to-end來優化目標檢測。 一、大致流程 1 給個一個輸入圖像,首先將圖像劃分成7*7的網格。 2 對於每個網格,我們都預測2個邊框(包括每個邊框是目標的置信度以及每個邊框區域在多個類別上的概率)。 3 根據上一步可以預測出7*7*2個目標窗口,然後根據閾值去除可能性比較低的目標窗口,最後NMS去除冗餘窗口即可。
|
版本一: 1 將物體檢測作爲迴歸問題求解。基於一個單獨的End-To-End網絡,完成從原始圖像的輸入到物體位置和類別的輸出,輸入圖像經過一次Inference,便能得到圖像中所有物體的位置和其所屬類別及相應的置信概率。 2 YOLO網絡借鑑了GoogLeNet分類網絡結構。不同的是,YOLO未使用Inception Module,而是使用1*1卷積層(此處1*1卷積層的存在是爲了跨通道信息整合)+3*3卷積層簡單替代。 3 Fast YOLO使用9個卷積層代替YOLO的24個,網絡更輕快,速度從YOLO的45fps提升到155fps,但同時損失了檢測準確率。 4 使用全圖作爲 Context 信息,背景錯誤(把背景錯認爲物體)比較少。 5 泛化能力強。在自然圖像上訓練好的結果在藝術作品中的依然具有很好的效果。 版本二:
|
|
SSD |
設計思想: ssd 在特徵圖上採用卷積核來預測一系列的 default bounding boxes 的類別分數、偏移量,同時實現end-to-end 的訓練。 特點:
|
版本二:
速度對比: |
|
YOLO V2 |
yolo v2 的改進的點:
|
||
YOLO 9000 | |||
YOLO V3 |
筆記:
Faster R-CNN
- canonical model