1. 程式人生 > >物體檢測及分類方法總結

物體檢測及分類方法總結

原文: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×2563×3×256 的卷積,每個點上預測k個anchor box是否是物體,並微調anchor box的位置
  • 提取出物體框後,採用Fast RCNN同樣的方式,進行分類
  • 選框與分類共用一個CNN網路

anchor box的設定應比較好的覆蓋到不同大小區域,如下圖:

一張1000×6001000×600的圖片,大概可以得到20k個anchor box(60×40×960×40×9)。

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後,做有 k2(C+1)k2(C+1) 個 channel 的卷積,生成位置相關的特徵(position-sensitive score maps)。 
CC 表示分類數,加 11 表示背景,kk 表示後續要pooling 的大小,所以生成 k2k2 倍的channel,以應對後面的空間pooling。

普通CNN後,還有一個RPN(Region Proposal Network),生成候選框。 
假設一個候選框大小為 w×hw×h,將它投影在位置相關的特徵上,並採用average-pooling的方式生成一個 k×k×k2(C+1)k×k×k2(C+1) 的塊(與Fast RCNN一樣),再採用空間相關的pooling(k×kk×k平面上每一個點取channel上對應的部分資料),生成 k×k×(C+1)k×k×(C+1)的塊,最後再做average-pooling生成 C+1C+1 的塊,最後做softmax生成分類概率。 
類似的,RPN也可以採用空間pooling的結構,生成一個channel為 4k24k2的特徵層。 
空間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×448448×448大小
  • 執行單個CNN
  • 計算物體中心是否落入單元格、物體的位置、物體的類別

模型如下:

  • 把縮放成統一大小的圖片分割成S×SS×S的單元格
  • 每個單元格輸出B個矩形框(冗餘設計),包含框的位置資訊(x, y, w, h)與物體的Confidence
  • 每個單元格再輸出C個類別的條件概率P(ClassObject)P(Class∣Object)
  • 最終輸出層應有S×S×(B5+C)S×S×(B∗5+C)個單元
  • x, y 是每個單元格的相對位置
  • w, h 是整圖的相對大小

Conficence定義如下:

Confidence=P(Class)IOUtruthpred=P(ClassObject)P(Object)IOUtruthpredConfidence=P(Class)⋅IOUpredtruth=P(Class∣Object)⋅P(Object)⋅IOUpredtruth

在原論文中,S = 7,B = 2,C = 20,所以輸出的單元數為7×7×307×7×30

代價函式:

J=λcoordi=0S2j=0B1objij(xix̂ i)2+(yiŷ i)2+λcoordi=0S2j=0B1objij(wi‾‾√ŵ i‾‾√)2+(hi‾‾√ĥ i‾‾√)2+i=0S2j=0B1objij(CiĈ i)2+λnoobji=0S2j=0B1noobjij(CiĈ i)2+i=0S21objijcclasses(pi(c)p̂ i(c))2J=λcoord∑i=0S2∑j=0B1ijobj(xi−x^i)2+(yi−y^i)2+λcoord∑i=0S2∑j=0B1ijobj(wi−w^i)2+(hi−h^i)2+∑i=0S2∑j=0B1ijobj(Ci−C^i)2+λnoobj∑i=0S2∑j=0B1ijnoobj(Ci−C^i)2+∑i=0S21ijobj∑c∈classes(pi(c)−p^i(c))2

其中 λcoord=5λcoord=5λnoobj=0.5λnoobj=0.5。 
一般,ww 與 hh 不是在 [0,1][0,1] 上的均勻分佈,偏小,所以開方。  
注: 開方的解釋是我自己的估計,可能不對。 

SSD

SSD: Single Shot MultiBox Detector 
YOLO在 7×77×7 的框架下識別物體,遇到大量小物體時,難以處理。 
SSD則在不同層級的feature map下進行識別,能夠覆蓋更多範圍。

假設在 mm 層 feature map 上進行識別,則第 kk 層的基本比例為

sk=smin+smaxsminm1(k1)k[1,m]sk=smin+smax−sminm−1(k−1)k∈[1,m]

比如 smin=0.2smin=0.2smax=0.95smax=0.95,表示整張圖片識別物體所佔比最小 0.2,最大 0.95。 
在基本比例上,再取多個長寬比,令 a={1,2,3,1/2,1/3}a={1,2,3,1/2,1/3}