RCNN、Fast-RCNN、Faster-RCNN 筆記文章整理
這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容原文於文末參考
RCNN
RCNN使用Selective Search找出2000–3000個region proposal,將取出的region proposal 壓縮成一樣大小之後再丟入CNN擷取特徵,利用SVM加以分類,並對bounding box做線性回歸。
RCNN流程
- 使用Selective Search產生~2000可能區域 (Region proposal)
- 將每一個region proposal經過Crop/ Warp 後丟入已訓練完成的CNN得到固定維度的輸出(CNN feature)
- 利用SVM (Support Vector Machine)分類器區分屬於哪類
- 經由線性回歸模型校正bounding box position
RCNN架構
RCNN問題
- RCNN 一開始必須產生~2000個region proposal,每個區域都要放入CNN提取特徵,有很多重複運算的部分非常花時間 (總共有三個模型 )
- 用於提取特徵的CNN
- 辨識候選區域的SVM
- 調整邊界的回歸模型
- 在將候選區域放入CNN前需要先將候選區域重新調整尺寸至227 x 227
- CNN提取特徵的層數較高,因此候選區域對於小區域較不敏感
- 需要對bounding box訓練線性回歸模型以便回歸物體精確的位置
Fast-RCNN
Fast R-CNN是為了解決以上RCNN運算效能的問題而優化的演算法,R-CNN計算2000個Region proposal 放入CNN需要個別運算很多重複的區域,而Fast R-CNN就只算了一次CNN,再將CNN擷取出來的特徵讓2000個Region proposal做運用,再利用RoIpooling (Region of Interest Pooling)的將取出的Region 對應到Feature map輸出後各自接上FC去做softmax分類及bbox regressor。
Fast-RCNN流程
- Fast-RCNN一樣需要使用Selective Search選出~2000個Region proposal
- 只需要計算一次CNN ,利用RoIpooling對應到Feature map,因為region proposal的xyhw通常是小數,因此在對應Feature map之前會先取一次整數,整數化後的邊界平均分割成k x k個單元,對每一個單元的邊界做整數化如下圖,經過取整數之後,特徵位置和feature map 所對應的位置就會有所偏差,後來就演進了RoIAlign。
RoIpooling就是下圖中藍色框框的那塊
Faster-RCNN
上述提到了Fast-RCNN的改進,包括了減少冗贅的特徵提取動作,將ROI映射到feature maps上,並用ROI pooling 統一維度等等。但是為了迎來更快的偵測速度,在Proposals上的處理也需要納入整個模式的NN之中,一起用convolution來解決。於是Faster-RCNN就此成型,它運用Region Proposals Network (RPN)搭配anchor box的設計
Faster-RCNN架構
這張圖雖然簡單,但是點出了一個大重點就是在”Region Proposal Network”,後續我們會簡稱為RPN。RPN等於是在原本的Fast-RCNN的中間,多了一個分支來處理region proposals的小網路。所以今天這篇的重點就是來介紹Faster-RCNN加了anchor和RPN之後是如何運作的。
建議閱讀👉https://ivan-eng-murmur.medium.com/object-detection-s3-faster-rcnn-簡介-5f37b13ccdd2
aster-rcnn在region proposals的網路中採用了anchor,判斷anchor 內是否有物件,最後在挑選好的anchor形成的proposal交出去,後續的工作,就和Fast-RCNN一樣了。
Faster-RCNN把原先獨立處理proposals的部分也整合進了網路架構中,且也用全卷積網路處理,搭配不同尺度和比例的anchor予以proposals的預測。這整個流程的整併,讓Faster-RCNN的速度也出現明顯的提昇,且mAP的表現並沒有降低,反而讓表現又提升了。
雖然Faster-RCNN算是在two-stage的物件偵測模型出人頭地,但是一樣有著不夠好的地方:
- 雖然有9種anchor的雛形可供RPN使用,但是只在單一個解析度的feature map上進行提取,對於影像中不同大小的物體解析力不夠全面。
- 網路架構越來越大,對於計算設備和記憶體的需求也越來越高。除了限制了應用層面的硬體要求以外,偵測速度5fps距離real time的願景還有些差距要克服。
- 整體架構的複雜度比one-stage的模型複雜許多,較難理解,且運行速度也差很多。