Pre-training到底有沒有用?何愷明等人新作:Rethinking ImageNet Pre-training

源/專知

使用基於ImageNet預訓練(Pre-training)的網絡已成爲計算機視覺任務中一種常規的操作。何愷明等人在新作Rethinking ImageNet Pre-training中使用詳細的對比實驗和分析提出了對基於ImageNet預訓練的新的思考。研究發現,對於在COCO數據集上的目標檢測和實例分割任務,使用隨機初始化的參數會收斂的更慢,但最終所達到的結果不比使用在ImageNet上預訓練的參數差。

預訓練

預訓練模型一般指在大規模數據集上對特定任務訓練的深度模型。對大多數人來說,預訓練模型的訓練一般很難進行,因爲它需要消耗大量的計算資源。在ImageNet預訓練的卷積網絡是最常見的預訓練模型之一,它包含1400萬張圖像(大約1000類,每一類約120萬張圖像),大約100萬張圖像包含Bounding Box標註信息。

當特定任務訓練完成後,學習到的參數即爲預訓練模型。很多預訓練模型都可以從Github中找到,當然最簡單的方法還是直接使用各個深度學習框架(如TensorFlow、Keras)內置的庫來調用預訓練模型。

消去實驗

論文《Rethinking ImageNet Pre-training》建立在基於COCO數據集的消去實驗上。在基於COCO數據集的目標檢測和實例分割任務上,對比使用基於ImageNet預訓練參數和隨機初始化參數(即消去ImageNet預訓練)的結果,對基於ImageNet的預訓練所能帶來的影響進行了分析。

有趣的統計

在論文中有一項有趣的統計,如下圖所示。統計包含了在訓練過程中,模型見到圖像、示例和像素的次數。其中淡藍色表示在ImageNet預訓練時的統計數據,深藍色代表在COCO上進行微調(Fine-Tuning)時的統計數據,紫色代表如果使用隨機初始化從頭訓練的統計數據。

歸一化

在目標檢測任務中,由於輸入的分辨率大且網絡對顯存消耗大,batch size只能被設置爲比較小的值,這會損傷模型中Batch Normalization的效果。使用預訓練模型可以繞過這個問題,因爲我們可以在微調時將Batch Normalizaiton的參數固定。但是,如果使用隨機初始化的參數從頭訓練則不能使用這個技巧。

在論文中,使用了兩種較新的歸一化方法來減輕小batch問題:

  1. Group Normalization (GN): https://arxiv.org/abs/1803.08494
  2. Synchronized Batch Normalization (SyncBN): https://arxiv.org/abs/1711.07240 https://arxiv.org/abs/1803.01534

引入Group Normalization或Synchronized Batch Normalization使得我們可以用隨機初始化的參數從頭開始訓練模型。另外,利用appropriately normalized initialization(https://arxiv.org/abs/1502.01852),我們可以從頭訓練一個基於VGG的目標檢測模型,且不需要使用Batch Normalization或者Group Normalization。

主要實驗結果

結論

  1. 使用ImageNet預訓練模型可以加速收斂,尤其在訓練的早期。但是基於隨機初始化參數的模型會在一段時間後達到同樣的效果,這個時間大約是ImageNet預訓練和微調時間的總和。它需要去學低/中等級的特徵(例如邊緣、材質等),這些特徵在預訓練中已經學到。由於ImageNet預訓練的時間往往在目標任務中被忽略,只考慮短時間的微調訓練過程,基於隨機初始化的訓練的真正的表現往往被遮蓋。
  2. ImageNet預訓練並不能自動提供更好的正則化。當用更少的圖片訓練時(COCO數據集的10%),我們發現必須從預訓練參數中選擇新的超參來防止過擬合。如果用隨機初始化參數來進行訓練,模型可以在不添加額外正則的情況下來達到同樣的效果,甚至只用10%的COCO數據集。
  3. 如果目標任務/指標對局部空間信息比較敏感,ImageNet預訓練並沒有什麼優勢。當從頭開始訓練時,高重疊閾值部分的AP有顯著的提升,另外,需要優質空間定位的keypoint AP會收斂的相對快一些。直觀地說,基於分類的類ImageNet預訓練和局部信息敏感的任務之間的鴻溝,會限制預訓練的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章