Rethinking Training from Scratch for Object Detection

Rethinking Training from Scratch for Object Detection

一. 概述

正常訓練目標檢測的流程分為以下幾種:

  • 在imagenet上進行預訓練,然後在特定數據集進行tune
  • 直接在數據集上進行從頭訓練

兩種方式各有千秋,前者可以很快收斂(在特定數據集收斂快),但是訓練複雜(預訓練實際長)。後者直接訓練較為容易(尤其在修改模型結構時),但是訓練周期較長(比tune階段長很多)。這篇文章就是解決從頭訓練的時長問題,從而達到集成兩者的優點(誇大其詞的說法)。

二. 流程

論文比較簡單,這裡進行總結如下:

程式碼地址: 鏈接地址
論文地址: 鏈接地址

  • 精度和 \(batchsize\) 有關,且在一定範圍內,越大越好。
  • 精度和影像的解析度(大小)有關,且影像越大解析度越好,影像過小對精度影響較小。
  • 精度和縮放有關,按照分類的縮放進行,不僅提高速度,且精度也比正常縮放效果好。
  • 精度和BN層有關,正相關。

按照上述的總結,論文進行改進的訓練如下:

  1. 使用BN層(當前網路基礎結構)

  2. Pretrained先用小尺度影像進行訓練,\(batchsize\)設置較大

  3. 數據處理部分–>先將影像縮放到 \((H,W)\times(1.0,1.2)\) ,隨機RandomCrop–>\((H,W)\),最後進行Padding到 \((h,W)\)

  4. Finetune階段按照正常訓練即可

image-20210616120236529

三. 總結

  1. 有一定使用意義,對於大數據集,直接使用此方法較好。
  2. 對於小的數據集,還是重新訓練imagenet比較好
  3. VOC的數據集太小,而且分布較為散亂,這裡對比意義不大。
  4. 筆者會在實際數據集上嘗試之後進行補充(TODO

image-20210616120614242
image-20210616141749371