天天看點

我讀Faster R-CNN背景方法實驗部分後記

論文位址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

代碼位址:GitHub

背景

R-CNN 三部曲之完結篇,在上一篇物體檢測需要 Selective Search 擷取 proposal,然後神經網絡分類基礎上,将擷取 proposal 和 detection 合并為同一個神經網絡,算法更加 graceful 并且速度和準确度都有提升。

我讀Faster R-CNN背景方法實驗部分後記

方法

可以了解為将提取 proposal 的步驟也抽象為了一種 R-CNN。conv 層最後一層每個像素為中心,提取不同尺寸,不同比例的 proposal(RPN),之後計算是否屬于前景,并且求得 bounding box regression(是不是很像 Fast R-CNN 幹的事情?)。在這之後再使用 Fast R-CNN 中的 RoI Layer,進而對 proposal 分類。過程圖:

我讀Faster R-CNN背景方法實驗部分後記

圖檔來源1

RPN

對于最後一層卷積層産生的 feature map,使用 3x3 的全連接配接層(類似卷積),每個點就會産生與 conv 層相同 feature 次元的一個向量。後面又接了 ReLU,這樣每個點的 feature 就有了。

下面再說說對每個點提取 proposal,作者提出 anchor 的概念,咱就暫且叫他“茴”吧2,每個點不同尺寸,不同比例提取 k 個 proposal 。此處不明白,k 個 proposal 的 feature 有什麼不同,每個 proposal 會對應産生是否是前景/背景值,以及位置回歸值。很奇怪作者未做任何提及,難道是在每個 anchor box 裡面 pooling 了一把?

我讀Faster R-CNN背景方法實驗部分後記

圖檔來源3

Loss Function

與 Fast R-CNN 非常相似,

L({pi},{ti})=1Ncls∑iLcls(pi,p∗i)+λ1Nreg∑ip∗iLreg(ti,t∗i)

等号右面第一項是前背景分類的目标函數,第二項是 bounding box regression 的目标函數。最小化兩者之和,關于等式定義,首先說系數。作者想要前後兩項的比重基本上是1:1,是以不管系數有何意義,咱都可以認為系數為 1 即可。

第一項 pi 表示每個茴的 四種寫法前背景的預測值, p∗i=1{i是前景} , Lcls 是 ln 函數。

第二項可以參考前一篇 Fast R-CNN,具體值如下:

我讀Faster R-CNN背景方法實驗部分後記

圖檔來源 4

訓練方法

使用 batch 進行訓練,每個 batch 大小約為 256 個茴,正負樣本 1:1。

如何确定正負樣本?正樣本标定規則:

  1. 如果茴與 ground truth 有最大 IoU,标記為正樣本;
  2. 如果茴與 ground truth 的 IoU > 0.7,标記為正樣本。

事實上,采用第 2 個規則基本上可以找到足夠的正樣本,但是對于一些極端情況,例如所有的茴與 groud truth 的 IoU 不大于 0.7,可以采用第一種規則生成。

負樣本标定規則:如果茴與 ground truth 的 IoU < 0.3,标記為負樣本。剩下的既不是正樣本也不是負樣本,不用于最終訓練。

訓練網絡時,卷積層使用前面模型 (ZF/VGG net) 初始化參數,後面随機初始化。使用 VOC 資料集訓練。

整個網絡訓練方式

由于擷取 proposal 和 detection 兩個網絡共用卷積層,采用交替訓練方式。具體方式:

  1. 先訓練 RPN 網絡,conv 層使用 Imagenet 資料集 pre-trained 參數初始化,訓練全部網絡層;
  2. 再訓練 R-CNN 網絡,conv 層使用 Imagenet 資料集 pre-trained 參數初始化,訓練全部網絡層。每幅圖檔的 proposal 從上步得到,此時這兩個網絡是全部分離的;
  3. 使用上步中的參數初始化網絡,隻 fine-tune 特有層,不修改 conv 層;
  4. 保持 conv 層不變,fine-tune 特有層,不修改 conv 層。

測試圖檔時,最後還需要加入非最大值抑制,減少不必要的重疊 proposal。

實驗部分

準确度提升:

我讀Faster R-CNN背景方法實驗部分後記

時間縮短:

我讀Faster R-CNN背景方法實驗部分後記

後記

感覺有點怪怪的,行文方法和前兩篇有些差異,沒有達到我預想到的高度。下篇 YOLO。

  1. 使用Faster-Rcnn進行目标檢測 ↩
  2. 魯迅,《孔乙己》,《呐喊》,1919年4月《新青年》第六卷第四号 ↩
  3. Faster R-CNN學習筆記 ↩
  4. 深度學習檢測方法梳理 ↩

繼續閱讀