目標檢測系列——Fast R-CNN原理詳解

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第26天,點選檢視活動詳情

目標檢測系列——Fast R-CNN

寫在前面

  在上一篇,我們介紹過RCNN的原理,詳情戳☞☞☞瞭解🌱🌱🌱這裡再來簡要概述一下RCNN的演算法步驟:

  1. 候選區域生成
  2. 神經網路提取特徵
  3. SVM分類器分類
  4. 迴歸器修正候選框位置

  繼RCNN釋出後,RGB大神又發表了Fast R-CNN🍍🍍🍍先來看看論文中表示Fast R-CNN結果的圖片,如下:

image-20220620165139796

  關於這張經典的圖片,現在大家只要又一個直觀的感受即可,後面會深度解析。此篇文章較RCNN有了較大提示,Fast R-CNN其主要步驟如下:

  1. 候選區域生成
  2. 完整影象輸入網路,候選框投影到特徵圖得到特徵矩陣
  3. 特徵矩陣經ROI pooling層縮放至統一大小,後將特徵圖展平得到預測結果

  可以看到,僅從RCNN和Fast R-CNN的步驟來看,它們還是存在一些差異的,下面將會具體談談這些步驟的具體細節,一起來看看吧🍀🍀🍀

候選區域生成

  候選區域生成和R-CNN沒有區別,同樣採用的是SS演算法,這裡就不重複介紹了,不清楚的可以參考上篇R-CCN博文🍂🍂🍂

完整影象輸入網路,候選框投影到特徵圖得到特徵矩陣

  還記得在R-CNN中我們輸入網路的是什麼嘛?這裡就不賣關子了,在R-CNN中我們輸人的是經SS演算法得到的2000個候選框,這顯然需要巨大的計算量;而在Fast R-CNN中,我們僅需要將原始影象輸入到特徵提取網路中得到原始影象的特徵圖即可。🌼🌼🌼這裡你或許存在這樣的問題:既然輸入網路的是原始影象,那第一步在原始影象中生成的候選框該怎麼利用呢? 其實這一部分是借鑑了何凱明的SPP-Net——原始影象中的某個候選框經過神經網路後會對映到所得特徵圖的相應位置,這個位置是可計算的。 為方便大家理解,我畫了下圖供大家參考:

image-20220621152723342

  關於上述的對映規則,大家可以參考這篇博文:SPP-net 🍉🍉🍉

特徵矩陣經ROI pooling層縮放至統一大小,後將特徵圖展平得到預測結果

  在Fast R-CNN中,我們沒有像R-CNN中一樣對圖片進行強制縮放,而是我們在得到特徵圖上的對映後(也即候選框),將這些候選框進行ROI pooling操作將不同大小的候選框統一縮放至統一的大小,ROI pooling的操作如下圖所示:即不論原始特徵圖大小如何,我們都先將特徵圖分成77=49等份,然後每一份採用最大池化或平均池化,將原特徵圖下采樣成77統一大小。image-20220621160714577

  特徵圖變成統一尺寸後,就可以將其展平送入全連線層了,之後再接上softmax層和regressor層即可輸出。

Fast R-CNN完整流程

  通過上文的講述,現在相信大家再看這個圖會更加深刻。大致過程和上文所述一致,這裡不在敘述🌵🌵🌵

image-20220621163932038

損失函式

  損失函式共有兩部分組成,一部分是分類損失,一部分是邊界框迴歸損失。

image-20220621171009785

image-20220621171020089

小結

  Fast R-CNN的原理部分就介紹到這裡了,希望可以對大家有所幫助。🍀🍀🍀後續會更新Faster_RCNN的內容以及相關程式碼講解,一起加油吧!!!

參考連結

RCNN理論合集🍁🍁🍁

深度學習_FasterRCNN論文詳解🍁🍁🍁

\