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 簡介