【物體檢測】R-CNN家族

目標檢測評測指標

mAp(Mean Average Precision)
true prediction: IoU>threshold & ypred=y 而且,多個類似的預測,只取一個,其他認爲是false。即對一張圖的同一個物體,假設有5個預測的IoU > threshold, 且ypred=ygroudtruth ,我們則認爲有1個true + 4個false

Recall:TPTP+FN

理解R-CNN

這裏寫圖片描述

  • 輸入:圖像
  • 輸出:圖像中每個物體的邊界框(四個座標?兩個)和邊框內物體的類別

R-CNN是最早的結合CNN的目標檢測框架之一,當時在PASCAL, ILSVR上的評測效果達到最高。其主要思想就是判斷哪些區域可能存在物體,再判斷這些區域包含了那個物體。步驟如圖:

  1. 生成2k個可能包含物體的邊框
  2. warp圖片至統一大小,訓練CNN(fine-runing),然後用CNN提取fixed-size的特徵
  3. 用Linear SVM對所有特徵進行分類
  4. 迴歸模型生成邊框

一些需要明確的問題:
1. 如何生成邊框? Selective search《Efficient 》
2. 對2k個區域,我們截取圖片並resize至227x227大小(AlexNet的輸入圖片大小)。然後使用在大數據集(ImageNet 或VOC2007)下pre-trained的模型,進行fine-tuning,然後提取得到4096(6x6x256)維的特徵。

問:怎麼構建數據集用於fine-tune CNN呢?
X:每個propsal區域的圖像 fixed size(227x227)
Y:每個propsal區域,我們選和它overlap最大,且IoU>0.5的GT區域的標籤作爲label,這些被我們成爲positive example。其他proposal都被標記爲背景,是negtive examples。它們組成的數據集將被用於fine-tune CNNs

3. 存儲所有上一階段的特徵,訓練linear svm分類器。

問:怎麼構建數據集用於訓練SVM呢?
X:CNN features。
Y: 對每個類,只取GT的bbx作爲positive example,取IoU<0.3的爲negtive example,剩下的捨棄。
問:爲什麼不直接用fine-tuned CNN的最後一層softmax?
實驗證明再次使用SVM效果更好。原因可能是fine_tuning的時候樣本數量太少,我們通過‘jittered’增加30倍。fine-tuned的時候使用不是嚴格的GT,訓練SVM的時候是。

4. 如何最後確定邊框(class-specific bounding-box regression)

  • P=(px,py,pw,ph) 表示一個bbx,前兩個是p的座標,後兩個是bbx的寬和高。用G=(Gx,Gy,Gw,Gh) 表示真實值的bbx信息。我們希望學習一個 PG線性映射,或者說迴歸。
  • 我們只選有效的P用於訓練bbx。有效的定義:

    - 與GT的IoU>threshold = 0.6
    - 如果對一個GT有多個overlap的pred,取IoU最大的一個
    - 其他的不選
    

理解Fast R-CNN

理解Faster R-CNN

理解Mask R-CNN(semantic segmentation)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章