天天看點

【目标檢測 論文泛讀】Fast R-CNN (一張表格對比 R-CNN SPP FRCN)

文章目錄

  • ​​R-CNN和SPP模型回顧​​
  • ​​Fast R-CNN提出背景​​
  • ​​作者提出的改進方法​​
  • ​​ROI池化​​
  • ​​Multi-task loss​​
  • ​​截斷的SVD​​
  • ​​Fast R-CNN整體結構​​
  • ​​小總結​​

R-CNN系列推演:

  • ​​R-CNN 論文解讀​​
  • ​​SSPnet 論文解讀​​
  • ​​Fast R-CNN 論文解讀​​
  • ​​Faster R-CNN 論文解讀​​
  • ​​FPN 論文解讀​​
  • ​​Mask R-CNN 論文解讀​​

每一篇都是前一篇或者前幾篇的改造版,是以按順序看會比較好。

論文題目:Fast R-CNN

下載下傳位址:​​https://arxiv.org/pdf/1504.08083.pdf​​

看這篇論文之前建議先過一下下面這兩篇論文:

  • ​​R-CNN精讀​​
  • ​​SPP泛讀​​

這篇論文是在R-CNN以及SPP的基礎上進行的改進,題目寫的也非常直白, Fast R-CNN 更快的R-CNN,這篇論文的東西不是很多,精讀R-CNN之後我覺得泛讀一下這篇就可以了。

R-CNN和SPP模型回顧

SPP是R-CNN的改進版,這篇論文是基于R-CNN和SPP寫的,是以先回顧一下這倆模型,完整的精讀泛讀可以看上面的連接配接,懶得看的直接看下面的表格,一目了然。

R-CNN SPP
一張圖檔提取2000個候選框 ,并強制縮放到固定尺寸後送給CNN 整張圖檔直接送給CNN
CNN提取每個候選框的feature map CNN得到整張圖的feature map,通過SS得到候選區域與feature map直接映射得到特征向量
将CNN提取的feature map 送給SVM分類,送給BB回歸進行定位修複 映射的特征向量給SSP,SSP輸出固定大小的特征向量,再給 FC,再SVM+回歸

Fast R-CNN提出背景

R-CNN有諸多缺點,比如訓練速度慢,需要多階段,重複計算等等。即使改進之後的SPP雖然不需要先提取2000個候選框了,也不需要固定輸入大小了,但也沒有辦法逃脫多階段的訓練模式。

這兩個模式都需要feature map,将其存儲在磁盤上,并且都需要SVM+BB回歸。

是以就有幾個大問題待解決,訓練速度的問題,存儲空間占用的問題,目辨別别過程慢的問題(R-CNN在GPU上要47秒)。

作者提出的改進方法

ROI池化

關于ROI:

region of interest,可以了解為特征圖上的框,在Fast RCNN中, RoI是指Selective Search完成後得到的“候選框”在特征圖上的映射,在Faster RCNN中,候選框是經過RPN産生的,然後再把各個“候選框”映射到特征圖上,得到RoIs。

在之前的SPP和R-CNN論文中已經說過,全連接配接需要固定尺寸的輸入,R-CNN的做法是直接強制變換輸入圖檔尺寸固定為227 * 227。 SPP的做法是不強制變換輸入尺寸,在CNN之後加入SPP金字塔池化結構,SPP可以輸出固定尺寸的大小給FC。

作者在本文中提出使用ROI 池化做法代替SPP子產品。

ROI 池化具體操作:

  • 1.首先,RoI 池化層将接收卷積特征圖作為輸入;
  • 2.針對每一個輸入圖像中的 RoI,在卷積特征圖中得到映射區域;
  • 3.将這個 RoI 進行區域分割為 H×W 的網格,以 7×7 為例,則将從 RoI 的-映射區域中劃分出 49 個分割區域;
  • 4.在每個區域中進行 max pooling 操作,即選出區域最大值;
  • 5.提取 7×7 的 RoI 特征圖。

在知乎上看到一個動圖可以幫助了解:

【目标檢測 論文泛讀】Fast R-CNN (一張表格對比 R-CNN SPP FRCN)

每個 RoI 在輸入時具有四個資訊(r, c, h, w),其中 r 和 c 代表 RoI 方格區域左上角的頂點左邊,用來表征位置坐标,h 和 w 則分别代表 RoI 區域方格的長度和寬度。

是以采用 RoI pooling 無論輸入過程中 RoI 的大小,輸出都是固定大小的feature map,同時加速了處理速度。

Multi-task loss

SSP正向傳播需要處理整個ROI的感受野,這是非常低效的,作者提出了一種新的方法,可以在訓練期間共享特征。

一個minibatch的R個RoI來源于N張圖檔,即從每張圖檔中采樣R/N個RoIs,而來自同一張圖檔的RoI在前向和反向傳播中可以貢獻計算和記憶體,通常N=2,R=128,這樣的訓練方案通常要比從128張不同圖檔中采樣快64倍,加快了速度還節約了記憶體。

另一個就是SPP中有多級的訓練過程,就是單獨訓練SVM和BB的那一塊,這裡作者提出了整合的方法,就是将分類和回歸放到一個網絡裡,他們共享loss。

Fast R-CNN将不再使用SVM作為分類器,而是直接用softmax。

softmax層用于分類,輸出K+1維數組p,表示屬于K類和背景的機率。

bbx層用于調整候選區域位置,輸出4*K維數組t,表示分别屬于K類時,應該平移縮放的參數。

截斷的SVD

作者繼續思考可以加速他模型的方法,在普通的分類任務裡,就是CNN提取特征最後加全連接配接,基本上走一邊全連接配接就行了,而在目标檢測任務中,要處理很多候選框,就是上面提到的ROI,每一個候選框都得走一邊全連接配接,在向前傳播中很多的時間花費在了全連接配接層的計算上,進而提出了截斷的SVD分解加速全連接配接層計算的政策。

關于SVD,就全是數學了,感興趣的可以看一下,​​​SVD原理詳解​​。

Fast R-CNN整體結構

整合上面的思路提出了Fast R-CNN模型圖:

【目标檢測 論文泛讀】Fast R-CNN (一張表格對比 R-CNN SPP FRCN)

抽象之後的流程圖:

【目标檢測 論文泛讀】Fast R-CNN (一張表格對比 R-CNN SPP FRCN)

步驟:

  • 1.将整個圖檔和一組候選框輸入CNN(卷積+池化)。
  • 2.CNN提取出來feature map。
  • 3.對每個候選框,使用Rol池化層從feature map中提取固定長度的特征向量。
  • 4.将特征向量送入全連接配接。
  • 5.全連接配接之後送入softmax進行分類。
  • 6.全連接配接之後的另外一條路是送入bounding-box回歸(BB)修正候選框位置。

5和6這兩個步驟是并列的輸出層,就是在上面說到的合并loss的操作方法。

小總結

這篇論文在最後有很多問答式的小章節我覺得挺有意思,在之前看的論文中很少出現,總結一下問答中的幾個點:

  • 多尺度訓練雖然在精度上有一定提升,但時間代價也比較大。
  • Softmax略優于SVM。
  • 深度神經網絡分類器使用更多的候選區域沒有幫助,甚至稍微有點影響準确性。

其實可以發現,本文模型FRCN的候選框提取依舊使用的是SS算法,這和之前的R-CNN和 SPP是一樣的,非常耗時。

更新一下對比表格:

R-CNN SPP Fast R-CNN
一張圖檔提取2000個候選框 ,并強制縮放到固定尺寸後送給CNN 整張圖檔直接送給CNN 整張圖檔+一組候選框送給CNN
CNN提取每個候選框的feature map CNN得到整張圖的feature map,通過SS得到候選區域與feature map直接映射得到特征向量 CNN得到feature map 通過ROI池化層得到特征向量
将CNN提取的feature map 送給SVM分類,送給BB回歸進行定位修複

繼續閱讀