R-CNN、Fast-RCNN和Faster-RCNN三者對比總結

R-CNN、Fast-RCNN和Faster-RCNN三者對比總結

1.R-CNN

1.1 R-CNN的關鍵點

1) 用CNN對每張圖片生成的大約2K張建議窗口進行特徵提取;
2)當樣本較少時,使用大量的輔助樣本對模型進行預訓練,之後用自己的樣本對網絡進行微調。

1.2 R-CNN的整體框架

1)用Selective Search生成RP(Region Proposals),RP的大小不一樣,之後通過warp,把RP變成統一的227×227的大小。
2) 將227×227的RP輸入到CNN中進行特徵提取。
3) 用獨立的SVM對RP進行特徵分類。
4) 用Bb迴歸(Bounding box regression)校正原來的RP,生成預測窗口的座標。
歸納:RP——>特徵提取——>SVM分類——>Bb迴歸。
原論文中的圖如下:
在這裏插入圖片描述

2. Fast-RCNN

2.1 Fast-RCNN的整體框架

1)用Selective Search生成約2K個RP。
2)強整張圖像輸入CNN中,提取feature map。
3)把RP映射到CNN的最後一層卷積的feature map上。
4)通過RoI pooling層使得每個RP成爲固定尺寸的feature map。
5)利用Softmax Loss和Smooth L1 Loss對分類概率和Bb迴歸聯合訓練。
測試:
1)至4)同測試。
5)用Softmax Loss探測分類概率。
6)用Smooth L1 Loss探測邊框迴歸。
7)用Bb迴歸值校正原來的RP,最終生成預測窗口的座標。
歸納:RP——>整張圖像feature map——>RP映射——>RoI Pooling——>Softmax Loss分類——>Smooth L1 Loss迴歸——>Bb迴歸
原論文圖如下:
在這裏插入圖片描述

2.2 Fast-RCNN和RCNN的區別

Fast-RCNN融入了SPPnet的特點。
1)R-CNN是將每個RP送入CNN中進行特徵提取,導致RP之間的大量重疊,特徵提取冗餘。Fast-RCNN將整張圖像歸一化後送入CNN進行特徵提取,在最後一層feature map上將RP進行映射,避免了重複特徵的提取,共享了特徵,減少了運算能力的浪費。
2)R-CNN在用SVM分類之前,把通過CNN提取的特徵存儲在硬盤上。在硬盤上大量讀寫數據會造成訓練性能低、訓練速度慢。Fast-RCNN的訓練數據在GPU內存裏直接進入Loss層,不再需要把大量的數據存儲在硬盤。
3) R-CNN中獨立的SVM和Bb迴歸需要大量的特徵作爲訓練樣本,需要大量的硬盤空間。Fast-RCNN把分類和迴歸都用深度網絡實現,不需要額外存儲。

3. Faster-RCNN

3.1 Faster-RCNN的整體框架

訓練
1)把整張圖像送入CNN中進行feature map的提取。
2)用RPN生成RP,每張圖片生成300個。
3)RP映射到最後一層feature map。
4)在RoI pooling層把每個RoI生成固定大小的feature map。
5)利用Softmax Loss和Smooth L1 Loss對分類概率和Bb迴歸聯合訓練。
測試。
1)至4)同測試。
5)用Softmax Loss探測分類概率。
6)用Smooth L1 Loss探測邊框迴歸。
7)用Bb迴歸值校正原來的RP,最終生成預測窗口的座標。

3.2 Fast-RCNN和Faster-RCNN的區別

1)Fast-RCNN中用Selective Search進行RP的生成,Faster-RCNN中用RPN生成RP。
2)Faster-RCNN中的產生RP的RPN和目標檢測的CNN共享。

PS:這周在搭建運行Faster-RCNN的環境,遇到了很多問題,不過死磕應該是每個程序員的精神吧,加油咯!

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