物體檢測及分類方法總結
原文:http://blog.csdn.net/yimingsilence/article/details/53995721
方法選擇:
========DPM=========
使用傳統的slider window的方法 計算量非常大
========OverFeat====
改進了Alex-net,並用影象縮放和滑窗方法在test資料集上測試網路;提出了一種影象定位的方法;最後通過一個卷積網路來同時進行分類,定位和檢測三個計算機視覺任務,並在ILSVRC2013中獲得了很好的結果。
========SPPNet======
RCNN在全連線層輸入需要歸一化影象尺寸,這裡不需要,在全連線層前加了一個spatial pyramid pooling空間金字塔pooling層。提取到的特徵有更好的尺度不變性,降低過擬合的可能。
========DeepID-Net==
人臉識別用的多
========RCNN =======
使用聚類的方法,對影象進行分個分組,得到多個候選框的層次組。原始圖片用Selective Search提取2k個候選框->候選框縮放成固定大小->經過CNN->經過兩個全連線層,分類。RCNN系列都有Caffe的原始碼
========Fast RCNN===
去掉RCNN中的重複計算,並微調候選框位置。原圖經過CNN提取特徵->提取域候選框->把候選框投影到特徵圖上Pooling取樣成固定大小->經過兩個全連線後分類與微調候選框位置
========Faster RCNN=
使用CNN來預測候選框。CNN提取特徵->經過核為3x3x256的卷積,每個點上預測k個anchor box是否是物體,並微調anchor box的位置->提取出候選框後,採用FastRCNN同樣的方式進行分類->選框與分類共用一個CNN網路。
========R-FCN=======
效仿R-CNN,採用流行的物體檢測策略,包括區域建議和區域分類兩步。用Faster R-CNN中的區域建議網路(RPN)提取候選區域,該RPN為全卷積網路。效仿Faster R-CNN,同享RPN和R-FCN的特點。
========YOLO========
FasterRCNN要對20k個anchor box判斷是否是物體,然後在進行物體識別,分成了兩步。這裡的物體框的選擇和識別進行了結合,一步輸出,You Only Look Once.把原圖縮放成448x448大小->執行單個CNN->計算物體中心是否落入單元格、物體的位置、物體的類別。在7x7的框架下識別物體,遇到大量小物體時難以處理
========SSD=========
在不同層級的feature map下進行識別,能夠覆蓋更多的範圍。結合了YOLO和Faster的anchor。
========NMS=========
非極大值抑制,用來去重
========xywh VS syxy
兩種位置表示方法,誤差不一樣
http://www.cosmosshadow.com/ml/應用/2015/12/07/物體檢測.html
RCNN
- 原始圖片通過Selective Search提取候選框,約有2k個
- 侯選框縮放成固定大小
- 經過CNN
- 經兩個全連線後,分類
Fast RCNN
Fast R-CNN
RCNN中有CNN重複計算,Fast RCNN則去掉重複計算,並微調選框位置。
- 整圖經過CNN,得到特徵圖
- 提取域候選框
- 把候選框投影到特徵圖上,Pooling取樣成固定大小
- 經兩個全連線後,分類與微調選框位置
Faster RCNN
- 整圖經過CNN,得到特徵圖
- 經過核為
3×3×256 3×3×256 的卷積,每個點上預測k個anchor box是否是物體,並微調anchor box的位置 - 提取出物體框後,採用Fast RCNN同樣的方式,進行分類
- 選框與分類共用一個CNN網路
anchor box的設定應比較好的覆蓋到不同大小區域,如下圖:
一張
R-FCN
R-FCN: Object Detection via Region-based Fully Convolutional Networks
RCNN系列(RCNN、Fast RCNN、Faster RCNN)中,網路由兩個子CNN構成。在圖片分類中,只需一個CNN,效率非常高。所以物體檢測是不是也可以只用一個CNN?
圖片分類需要相容形變,而物體檢測需要利用形變,如何平衡?
R-FCN利用在CNN的最後進行位置相關的特徵pooling來解決以上兩個問題。
經普通CNN後,做有
普通CNN後,還有一個RPN(Region Proposal Network),生成候選框。
假設一個候選框大小為
類似的,RPN也可以採用空間pooling的結構,生成一個channel為
空間pooling的具體操作可以參考下面。
訓練與SSD相似,訓練時拿來做lost計算的點取一個常數,如128。
除去正點,剩下的所有使用概率最高的負點。
YOLO
You Only Look Once: Unified, Real-Time Object Detection
Faster RCNN需要對20k個anchor box進行判斷是否是物體,然後再進行物體識別,分成了兩步。
YOLO則把物體框的選擇與識別進行了結合,一步輸出,即變成”You Only Look Once”。
- 把原始圖片縮放成
448×448 448×448大小 - 執行單個CNN
- 計算物體中心是否落入單元格、物體的位置、物體的類別
模型如下:
- 把縮放成統一大小的圖片分割成
S×S S×S的單元格 - 每個單元格輸出B個矩形框(冗餘設計),包含框的位置資訊(x, y, w, h)與物體的Confidence
- 每個單元格再輸出C個類別的條件概率
P(Class∣Object) P(Class∣Object) - 最終輸出層應有
S×S×(B∗5+C) S×S×(B∗5+C)個單元 - x, y 是每個單元格的相對位置
- w, h 是整圖的相對大小
Conficence定義如下:
在原論文中,S = 7,B = 2,C = 20,所以輸出的單元數為
代價函式:
其中
一般,
注: 開方的解釋是我自己的估計,可能不對。
SSD
SSD: Single Shot MultiBox Detector
YOLO在
SSD則在不同層級的feature map下進行識別,能夠覆蓋更多範圍。
假設在
比如
在基本比例上,再取多個長寬比,令