- 深度學習高手筆記(卷2):經典應用
- 劉巖(@大師兄)
- 625字
- 2024-09-05 16:45:38
1.4.2 Faster R-CNN的訓練
由于RPN使用Fast R-CNN的網絡模型可以更好地提取候選區域,而Fast R-CNN可以使用RPN生成的候選區域進行目標檢測,兩者相輔相成。Faster R-CNN嘗試了多種模型訓練策略,并最終采用了交替訓練(alternating training)。
交替訓練可以分成4個步驟:
(1)使用無監督學習即ImageNet的訓練結果初始化網絡訓練RPN;
(2)使用RPN生成的候選區域訓練Fast R-CNN,Fast R-CNN和RPN使用的是兩個不同的輸出層,也是通過ImageNet任務進行初始化;
(3)使用Fast R-CNN初始化RPN,但是共享的卷積層固定,只調整RPN獨有的網絡層;
(4)固定共享的卷積層,訓練Fast R-CNN。
前面指出,RPN的輸出是候選區域的坐標以及它們的置信度得分,所以通過RPN生成候選區域的步驟如下:
(1)所有在圖像內部的錨點均輸入訓練好的網絡模型,得到樣本得分和預測坐標;
(2)使用NMS根據得分過濾錨點,NMS的IoU閾值固定為0.7,之后生成的便是候選區域。
從Faster R-CNN的開源代碼中可以看出,它使用的是近似聯合訓練(approximate joint training),即將RPN和Fast R-CNN的損失函數簡單地加在一起,作為一個多任務的損失函數進行學習。Faster R-CNN論文中也指出,這種方法忽略了“Fast R-CNN將RPN的輸出作為其輸入”這一事實。實際上,Faster R-CNN的RPN和Fast R-CNN并不是并行的多任務的關系,而是串行級聯的關系。圖1.17說明了并行多任務和串行級聯的區別。在實際應用中,并行訓練和串行訓練的差距其實不是很明顯,但是并行訓練的方式需要的人為干預更少且效率更高,因此后面得到了更廣泛的使用。

圖1.17 并行多任務和串行級聯的區別
Faster R-CNN的檢測流程在使用RPN生成候選區域后,剩下的便和Fast R-CNN一樣了。這里不贅述。