Faster RCNN 粗略理解

Faster RCNN 簡單來說,是將區域框的建議做成了一個可以訓練的網絡框架(RPN)。隨后對RPN出來的結果來進行 Fast RCNN 的篩選。

RPN 網絡如何做到建議框的推薦

首先,說到RPN框的推薦就不得不說,anchor box 一般來說,我個人理解相當于是一個區域覆蓋。比如對于一個 800 * 600 的圖片,對于 { 128128,256256, 512*512 } 【這個我理解成對原圖的像素覆蓋】,對應 { 1:2,1:1 ,2:1 } 的覆蓋方式,總共會有 9 中的覆蓋方式。好了,我們以原圖中心為起始點去看這九種方式的覆蓋面積:

我們可以看到,以中心點為起始,它的覆蓋面積基本上涵蓋了整張圖片。那么起始我們知道,anchor box 起始是對于最后一層卷積出來后每一點都擁有這么9個覆蓋方式。好了,到這里我們可以設想一下,(簡化說,比喻不恰當)特征圖是原圖的一種另一個意義上的縮放。那么我們特征圖最左上角一個點,那其實對應的是原圖左上角的一片區域信息,根據這個 anchor box 的覆蓋方式,我們以這篇區域信息為中心區域,就可以相當于覆蓋了左上角一大片的區域信息,以此類推。這樣每一個點都含有這9個 anchor box 那么在大概率上,我們其實已經覆蓋了原圖的所有的內容。
因為每一個點都會有 9個 anchor box,每一個點擁有 deep 深度的信息。所以這個 deep 深度信息需要轉化成包涵這個點的 anchor box 是否含有目標信息(就是一個二分類問題),且這個點與 ground truth 之間的坐標位置信息就有 4 個偏移量。所以可以理解成如下: 一個點的 feature (deep 維度 設 K-d)
-- one point K-d → 2 * 9 (用于每個 anchor box 的分類)
-- one point K-d → 4 * 9(用于每個 anchor box 的回歸)

訓練方式:

Faster R-CNN的訓練,是在已經訓練好的model(如VGG_CNN_M_1024,VGG,ZF)的基礎上繼續進行訓練。實際中訓練過程分為6個步驟:

  • 在已經訓練好的model上,訓練RPN網絡,對應stage1_rpn_train.pt
  • 利用步驟1中訓練好的RPN網絡,收集proposals,對應rpn_test.pt
  • 第一次訓練Fast RCNN網絡,對應stage1_fast_rcnn_train.pt
  • 第二訓練RPN網絡,對應stage2_rpn_train.pt
  • 再次利用步驟4中訓練好的RPN網絡,收集proposals,對應rpn_test.pt
  • 第二次訓練Fast RCNN網絡,對應stage2_fast_rcnn_train.p

總圖如下:

開始說明分圖訓練:
這里先看一個總的框架圖:

然后根據總的框架圖,我遮擋一些內容,就可以看到各部的訓練過程:
首先:

  1. RPN 網絡的訓練過程
  1. faster - rcnn 網絡訓練過程:

【參考資料】:

  1. https://zhuanlan.zhihu.com/p/31426458 【寫的巨好】
  2. https://zhuanlan.zhihu.com/p/24916624
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容