Fast R-CNN筆記

作者:Ross Girshick

ICCV 2015

概要

         FastRCNN是RCNN和SPPnet的改進版。Fast RCNN在訓練的時候比RCNN快9倍,比SPPnet快3倍;測試的時候比RCNN快213倍,比SPPnet快10倍。最後在PASCAL VOC 2012上達到66%的mAP。


RCNN與SPPnet存在的缺點

1.      訓練是多階段的。先提proposal,然後CNN提取特徵,之後用SVM分類器,最後再做bounding-box regression。

2.      訓練非常耗費時間和空間(存儲)。在訓練SVM和bbox regression的時候,需要先將之前提取出來的特徵寫入磁盤中,這些特徵需要花費的空間很大;這個過程也非常耗費時間。

3.      物體檢測非常慢。測試的時候,特徵需要從每個圖片中的每個proposal提取,使用VGG16網絡大概每張圖片耗費47s(在一個GPU上)。

 

Fast RCNN的優點

1.      比RCNN,SPPnet有更高的準確率(mAP)。

2.      訓練是單階段的,使用多任務的loss。

3.      訓練可以更新所有的網絡層(SPPnet只能更新fc層)。

4.      特徵緩存的時候不需要硬盤存儲。

 

Fast RCNN結構與訓練



第一步,將這個完整的圖片經過若干卷積層與max pooling層,得到一個feature map。

第二步,用selective search算法從這完整的圖片中提取出object proposals,即RoI。

第三步,根據映射關係,可以得到每個object proposal對應的feature map。

第四步,將第三步得到的feature map經過RoI pooling layer得到固定大小的feature map(變小了)。

第五步,經過2層全連接層(fc),得到固定大小的RoI特徵向量。

第六步,特徵向量經由各自的FC層,得到兩個輸出向量:第一個是分類,使用softmax,第二個是每一類的bounding box迴歸。

 

簡要流程圖如下:


說明:在訓練的時候,分類與迴歸是一起訓練的,總的loss是分類的loss加上回歸的loss。計算公式如下:


在本文中λ取1,詳細情況可以查看論文。

 

關於RoI pooling layer

 

        這是SPP pooling層的一個簡化版,只有一級“金字塔”,輸入是N個特徵映射和一組R個RoI,R>>N。N個特徵映射來自於最後一個卷積層,每個特徵映射都是Hx W x C的大小。每個RoI是一個元組(n, r, c, h, w),n是特徵映射的索引,n∈{0, ... ,N-1},(r, c)是RoI左上角的座標,(h, w)是高與寬。輸出是max-pool過的特徵映射,H' * W' * C的大小,H'≤H,W'≤W。對於RoI,bin-size = h/H' * w/W',這樣就有H'*W'個輸出bin,bin的大小是自適應的,取決於RoI的大小。

下圖中,H'=W'=3



參考文章:

DL論文心得之Fast RCNN

論文筆記Fast R-CNN

【目標檢測】Fast RCNN算法詳解


發佈了43 篇原創文章 · 獲贊 105 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章