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