1. 程式人生 > >Faster R-CNN : end2end 和 alternative 訓練

Faster R-CNN : end2end 和 alternative 訓練

文章目錄


Faster R-CNN 實際上就是由 Fast R-CNN 和 RPN 兩個網路結合的,可以使用 end2end 和 alternative 兩種方式來訓練,兩種方法訓練出來的網路準確度基本沒有多大的區別,但是使用 end2end 訓練,即端到端訓練可以節省很多時間。這篇文章參考 Ross’ Girshick 在 ICCV15 上的演講報告,主要講 end2end 方法。


一、alternative 訓練

在 Faster RCNN 中論文使用了 alternative optimization 。分為四步進行:
(1)首先訓練 RPN。這個網路使用一個 ImageNet 預訓練模型來初始化,然後端到端地 fine-tune,來進行區域建議。
(2)第二步,使用第一步 RPN 生成的建議通過 Fast R-CNN 訓練另外一個檢測網路。這個檢測網路同樣也使用 ImageNet 預訓練模型來初始化。在這一步兩個網路還沒有共享卷積層。
(3)第三步,使用檢測網路來初始化 RPN 訓練,完成共享卷積層,且只 fine-tune RPN 特有的層。這一步兩個網 絡共享卷積層了。
(4)最後,保持共享卷積層, fine-tune Fast R-CNN 的全卷積層。

二、end2end 訓練

在 Ross’ Girshick 在 ICCV15 上的演講報告上,介紹了一種近似聯合優化,Approx. joint optimization。與論文中 的方法不一樣,近似聯合優化把 Fast R-CNN 和 RPN 網路寫在了同一個網路中去,同時地訓練兩個網路。這種方法 訓練的網路終 mAP 與 alternative 訓練的相差無幾,但是訓練時間花費卻大大的縮減了。

(一)訓練時間花費

slow R-CNN 和 SPP-net 的訓練時間:

  • Fine-tuning (backprop, SGD): 18 hours / 16 hours
  • Feature extraction: 63 hours / 5.5 hours
    • Forward pass time (SPP-net helps here)
    • Disk I/O is costly (it dominates SPP-net extraction time)
  • SVM and bounding-box regressor training: 3 hours / 4 hours
  • Total: 84 hours / 25.5 hours

slow R-CNN 訓練花費了太多的時間。

Fast R-CNN 訓練只有一個階段,訓練網路中所有的層。

(二)端到端訓練 Fast R-CNN

  • 在一個網路中有兩個 Loss 分支
    • Branch 1: softmax classifier
    • Branch 2: linear bounding-box regressors
    • 全域性的 Loss 就是兩個 Loss 的和
  • 使用 SGD 來聯合 Fine-tune 網路
    • 優化兩個任務的特徵
  • 錯誤後向傳播至卷積層