兩階段目標檢測發展史(R-CNN,Fast R-CNN,Faster R-CNN)

 
在探討RCNN之前可以先大概知道一個目標檢測發展歷史時間軸
最早期CNN提出之後,陸續從2014年到2016年雙階段目標檢測的技術陸續被提出。

在目標檢測技術的發展歷程中,兩階段式偵測方法是一個很重要的里程碑。
它的核心概念是:先找出可能存在目標的區域(Region Proposal),再對這些區域進行分類與邊界框回歸。這類方法的代表模型依序包括 R-CNN、Fast R-CNN、Faster R-CNN,可以看出整體演進方向就是:從準確率提升,逐步走向更高效率與端到端訓練。


1. R-CNN(Region-Based CNN)

提出時間:2014 年
作者:Ross Girshick
論文名稱: Rich feature hierarchies for accurate object detection and semantic segmentation
論文連結:
Rich feature hierarchies for accurate object detection and semantic segmentation(2014初版8頁)
Rich feature hierarchies for accurate object detection and semantic segmentation Tech report (v5)(21頁)


R-CNN 是早期兩階段目標檢測的重要代表作,首次明確將 Region Proposal(區域提議) 的概念引入目標檢測流程中。
它先透過 Selective Search 從影像中產生大量大小不一的候選區域(約2000個候選框),再將每一個候選區域分別送入 CNN 萃取特徵,最後使用 SVM 進行分類,並搭配 Bounding Box Regression 做邊界框位置修正。

這種方法大幅提升了目標檢測的效果,也讓深度學習正式成為目標檢測的重要主流技術之一。

優點:
  • 首次成功結合區域提議與 CNN 特徵提取
  • 顯著提升傳統目標檢測的準確率

缺點:
  • 每個候選區域都要各自跑一次 CNN,計算成本非常高。
    設想每一張圖片都要跑2000次候選區域的CNN,若有1萬張圖片那就是1萬乘上2000這麼多運算成本。
  • 訓練流程複雜,速度過慢,不利於實務應用


2. Fast R-CNN

提出時間:2015 年
作者:Ross Girshick
論文名稱:Fast R-CNN
論文連結:


Fast R-CNN 是為了改善 R-CNN 計算效率過低的問題而提出。
它仍然使用 Selective Search 來產生候選區域,但與 R-CNN 最大的不同在於:不再對每個區域各自跑一次 CNN,而是先對整張影像進行一次卷積運算,生成特徵圖(Feature Map)。

之後依然是在原始影像上執行Selective Search選出約略2000個候選框,對於原始影像中每一個候選框都會在特徵圖上找到對應它的位置。

接著模型透過 ROI Pooling 來將每個大小不一的候選框給堆疊再一起,在這過程需要縮放成統一大小的候選框。

從特徵圖中擷取每個候選區域對應的固定大小特徵,再送入全連接層攤平展開進行分類與邊界框回歸。分類部分由原本的 SVM 改為使用 Softmax,而bbox regressor則用於確認目標的位置。

優點:
  • 整張圖片只需做一次 CNN 運算,大幅減少重複計算
  • 引入 ROI Pooling,提升整體效率
  • 訓練流程比 R-CNN 更簡潔

缺點:
  • 區域提議仍依賴 Selective Search,執行效能瓶頸依舊存在
  • 雖然比 R-CNN 快很多,但仍難以達到真正即時偵測


3. Faster R-CNN

提出時間:2016 年
作者:Ross Girshick、任少卿(Shaoqing Ren)、何凱明(Kaiming He)
論文名稱:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

後期頁數比較多較完整的論文
https://arxiv.org/pdf/1506.01497



Faster R-CNN 進一步解決了 Fast R-CNN 的核心瓶頸,也就是 Selective Search 太慢的問題。
它提出了 RPN(Region Proposal Network,區域提議網路),直接利用卷積特徵圖來產生候選區域,不再依賴傳統的外部演算法。

作法如下
首先仍然是針對整張圖片做一次CNN卷積得到特徵圖。
之後對特徵圖中每一個像素小格子都創建Anchor Box,每一個像素格子都有9個Anchor Box。
這9個Anchor Box有不同形狀、大小。
後續把輸出的Feature map跟每個小格子上的AnchorBox當作參數傳入到RPN。
RPN可將其視為一個迷你版卷積網路,首先藉由Anchor Box判斷特徵圖中的每一塊是否有物體。
採用算法就是透過IoU(Intersection-over-Union),來輸出兩個內容。
第一個內容就是有無檢測到物體,若IoU值大於0.7就判定有物體,若小於0.3就判定為沒有物體。介於0.3~0.7之間的內容就忽略掉。
第二個內容就是候選框位置
透過網路初步判斷候選框寬高大小為多少,依賴於Anchor Box。
根據Anchor Box判斷要靠右、靠左還是靠上或下,要大一點還小一點。
後面處理就跟Fast RNN一樣

RPN 與後續的檢測網路可以共享卷積特徵,因此整體模型可以進行更有效率的 端到端訓練。
此外,Faster R-CNN 也首次系統化引入 Anchor Box 的概念,用不同尺寸與長寬比的預設框來偵測各種類型的物體,成為後續許多檢測模型的重要基礎。

優點:
  • 以 RPN 取代 Selective Search,大幅提升速度
  • 區域提議與目標檢測共享特徵,計算效率更高
  • 可進行端到端訓練,整體架構更完整
  • 引入 Anchor Box,對後續目標檢測發展影響深遠

缺點:
  • 雖然速度大幅提升,但整體結構仍較複雜
  • 相較於後來的單階段方法(如 YOLO、SSD),即時性仍稍弱


後期單階段目標檢測
->SSD (只有出一個版本就無後續了)
2016年 劉偉等人發明的
可在不同尺度特徵圖上直接預測邊界框和類別概率,採用多尺度默認框(Anchor Boxes)

YOLO系列
->YOLOv1 由2016年Joseph Redmon提出
開創者只參與YOLOv1~YOLOv3,後期版本都跟他無關。
把檢測視為單次回歸問題,單一CNN預測網路中的邊界框和分類概率。
在當時檢測性能是不如SSD的。

->YOLOv2 由2016年Joseph Redmon,Ali Farhadi提出
引入Anchor Boxes、批次正規化、多尺度訓練
支援檢測9000類物體。

->YOLOv3 由2018年Joseph Redmon,Ali Farhadi提出
使用Darknet-53網路,引入多尺度預測(類似FPN),改進小目標檢測。

到後期YOLO創始者他發現YOLOv3被用於軍事目的,就不再參與後期版本研發。
後繼者就沿用該作者的YOLO名稱繼續v4,v5......v12...

YOLOv後面接的數字不見得一定是越大就比前一版厲害,只是隸屬不同研發團隊的區隔用途。


留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義

鼎新ERP_會計系統_總帳管理_財務參數設定_傳票處理