目標檢測基本網絡
RCNN
SS:Selective Search 一種提取候選區域的方法。
一張圖片通過SS產生1000到2000個候選區域,然後將每個候選區域(Region Proposal)縮放到同一尺寸,輸入到CNN網絡,然後使用提取的圖像特徵訓練SVM和Bounding Box。
- 訓練過程
- 預訓練CNN:
正樣本:Region Proposals 與 GT IOU大於0.5 20個類。
負樣本:Region Proposals 與 GT IOU小於0.2 1個背景類。
CNN+Softmax 21 分類,進行預訓練,然後去掉Softmax層,使用前面層提取特徵。 - 訓練SVM:
舉例1個SVM進行訓練。
正樣本:GT區域提取的特徵。
負樣本:與GT IOU小於0.3提取的特徵。
二分類進行訓練。 - Bounding Box訓練:
某一個類的迴歸訓練。
用IOU大於0.6的候選區域提取的特徵,對4個邊界框偏移量進行迴歸。 - 測試過程
- SS選擇1000到2000個Region Proposals。
- 尺寸統一到同樣大小(後面有全連接層)。
- 利用CNN提取特徵。
- 某一個Region Proposal提取的特徵輸入到20個SVM,哪個分類器的分數高,用來確定類別。
- 計算好所有Region Proposals的label後,使用NMS操作,獲得沒有冗餘的子集。
- 將剩下區域的特徵輸入到Bounding Box模型。
- 根據SVM打標籤,BB畫框。
SPPNet
- 共享卷積計算。
- RCNN將SS檢測的區域裁剪成固定的大小輸入網絡,會有重複的卷積計算。
- SPPNet先共享卷積,然後在特徵圖上裁剪。
- 空間金字塔池化
- 原圖上的區域映射到特徵圖上後,大小可能不一樣,因此SPP將輸入特徵分成16份、4份、1份,最終拼接在一起輸入全連接層。
Fast RCNN
- 多任務損失函數
- 使用softmax代替SVM。
- 分類和迴歸一起計算損失。
- 提出了ROI Pooling Layer
- SPP相當於一種多尺度Pooling,ROIPooling是單一尺度。
Faster RCNN
整體流程
訓練RPN
正樣本:與GT IOU大於0.7
負樣本:與GT IOU小於0.3
損失函數:
訓練Fast RCNN
- RPN產生將近20000(40x60x9x)個anchors。
- 按照每個框的positive score從大到小排序,選擇前eg 6000個。
- 限定超出圖像邊界的positive anchors。
- 刪除較小的positive anchors。
- 對剩下的anchors進行NMS操作,產生將近2000個ROIs。
正樣本:ROIs與GT IOU大於0.5。
負樣本:與GT IOU 等於0。
損失函數和RPN損失一樣,分類損失從2分類變成21分類。
Faster RCNN講的很仔細的文章:一文讀懂Faster RCNN.