Rethinking Training from Scratch for Object Detection
一. 概述
正常訓練目標檢測的流程分為以下幾種:
- 在imagenet上進行預訓練,然後在特定資料集進行tune
- 直接在資料集上進行從頭訓練
兩種方式各有千秋,前者可以很快收斂(在特定資料集收斂快),但是訓練複雜(預訓練實際長)。後者直接訓練較為容易(尤其在修改模型結構時),但是訓練週期較長(比tune階段長很多)。這篇文章就是解決從頭訓練的時長問題,從而達到整合兩者的優點(誇大其詞的說法)。
二. 流程
論文比較簡單,這裡進行總結如下:
- 精度和 \(batchsize\) 有關,且在一定範圍內,越大越好。
- 精度和影象的解析度(大小)有關,且影象越大解析度越好,影象過小對精度影響較小。
- 精度和縮放有關,按照分類的縮放進行,不僅提高速度,且精度也比正常縮放效果好。
- 精度和BN層有關,正相關。
按照上述的總結,論文進行改進的訓練如下:
使用BN層(當前網路基礎結構)
Pretrained先用小尺度影象進行訓練,\(batchsize\)設定較大
資料處理部分-->先將影象縮放到 \((H,W)\times(1.0,1.2)\) ,隨機RandomCrop-->\((H,W)\),最後進行Padding到 \((h,W)\)
Finetune階段按照正常訓練即可
三. 總結
- 有一定使用意義,對於大資料集,直接使用此方法較好。
- 對於小的資料集,還是重新訓練imagenet比較好
- VOC的資料集太小,而且分佈較為散亂,這裡對比意義不大。
- 筆者會在實際資料集上嘗試之後進行補充(TODO)