It has been 1083 days since the last update, the content of the article may be outdated.
OB前言筆記整理

這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容原文於文末參考

RCNN

ob
RCNN使用Selective Search找出2000–3000個region proposal,將取出的region proposal 壓縮成一樣大小之後再丟入CNN擷取特徵,利用SVM加以分類,並對bounding box做線性回歸。

RCNN流程

ob

  1. 使用Selective Search產生~2000可能區域 (Region proposal)
  2. 將每一個region proposal經過Crop/ Warp 後丟入已訓練完成的CNN得到固定維度的輸出(CNN feature)
  3. 利用SVM (Support Vector Machine)分類器區分屬於哪類
  4. 經由線性回歸模型校正bounding box position

RCNN架構

ob

RCNN問題

  1. RCNN 一開始必須產生~2000個region proposal,每個區域都要放入CNN提取特徵,有很多重複運算的部分非常花時間 (總共有三個模型 )
    • 用於提取特徵的CNN
    • 辨識候選區域的SVM
    • 調整邊界的回歸模型
  2. 在將候選區域放入CNN前需要先將候選區域重新調整尺寸至227 x 227
  3. CNN提取特徵的層數較高,因此候選區域對於小區域較不敏感
  4. 需要對bounding box訓練線性回歸模型以便回歸物體精確的位置

Fast-RCNN

ob
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流程

  1. Fast-RCNN一樣需要使用Selective Search選出~2000個Region proposal
  2. 只需要計算一次CNN ,利用RoIpooling對應到Feature map,因為region proposal的xyhw通常是小數,因此在對應Feature map之前會先取一次整數,整數化後的邊界平均分割成k x k個單元,對每一個單元的邊界做整數化如下圖,經過取整數之後,特徵位置和feature map 所對應的位置就會有所偏差,後來就演進了RoIAlign。
RoIpooling相關文章筆記指路

RoIpooling就是下圖中藍色框框的那塊
ob

Faster-RCNN

上述提到了Fast-RCNN的改進,包括了減少冗贅的特徵提取動作,將ROI映射到feature maps上,並用ROI pooling 統一維度等等。但是為了迎來更快的偵測速度,在Proposals上的處理也需要納入整個模式的NN之中,一起用convolution來解決。於是Faster-RCNN就此成型,它運用Region Proposals Network (RPN)搭配anchor box的設計

Faster-RCNN架構

ob
這張圖雖然簡單,但是點出了一個大重點就是在”Region Proposal Network”,後續我們會簡稱為RPN。RPN等於是在原本的Fast-RCNN的中間,多了一個分支來處理region proposals的小網路。所以今天這篇的重點就是來介紹Faster-RCNN加了anchor和RPN之後是如何運作的。

Anchor相關文章筆記指路

建議閱讀👉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的物件偵測模型出人頭地,但是一樣有著不夠好的地方:

  1. 雖然有9種anchor的雛形可供RPN使用,但是只在單一個解析度的feature map上進行提取,對於影像中不同大小的物體解析力不夠全面。
  2. 網路架構越來越大,對於計算設備和記憶體的需求也越來越高。除了限制了應用層面的硬體要求以外,偵測速度5fps距離real time的願景還有些差距要克服。
  3. 整體架構的複雜度比one-stage的模型複雜許多,較難理解,且運行速度也差很多。

References

  1. Object Detection : R-CNN, Fast-RCNN, Faster RCNN
  2. 一文读懂Faster RCNN
  3. [物件偵測] S3: Faster R-CNN 簡介