何愷明等研究者:真的需要減少ImageNet預訓練嗎?

選自arXiv

作者:Kaiming He、Ross Girshick、Piotr Dollar

機器之心編輯部

我們真的需要減少使用 ImageNet 預訓練模型了嗎?在檢測和分割任務上,何愷明等研究者最近「Rethink」了一下 ImageNet 預訓練模型。如果你的數據和計算力足夠多,那麼 ImageNet 預訓練只能加快收斂而不提升準確率;如果數據太少,那麼還是老老實實使用預訓練模型吧。

ImageNet 圖像預訓練在各種視覺任務中一直都極爲常見,我們會假定預訓練模型的前面層級能抽取到足夠的一般圖像信息。因此保留預訓練模型前面層級的權重就相當於遷移了一般的圖像知識,並可以用於各種下游任務。但是在 ImageNet 上的預訓練模型通過千類圖像識別任務也只能學習到近似的一般圖像知識。所以離千類圖像識別任務越近,下游任務遷移的知識就越多。如果離千類圖像識別任務非常遠,說不定預訓練也就起個初始化的作用。

不過近來很多視覺任務都會使用 ImageNet 預訓練模型,因爲這種方法簡單方便啊。我們可以從各種模型庫中下載各式各樣的預訓練卷積網絡及權重,把它們作爲整體模型的某個組件後就可以重訓練部分權重了,這樣至少比隨機初始化好吧。在何愷明等研究者的這篇「Rethink」論文中,他主要關注預訓練模型在目標檢測與圖像分割等應用下的性能,這種位置敏感型的任務和千類圖像識別任務還是有一些差別的。

爲此,何愷明等研究者表示這種利用預訓練模型抽取「通用」特徵,並藉此解決大多數視覺任務的方法是值得質疑的。因爲即使在比 ImageNet 還大 3000 倍的數據集上進行預訓練,它們對目標檢測任務的性能提升仍然不是很大。

這篇論文通過探索隨機初始化進一步質疑了預訓練的範式,他們表示當隨機初始化的模型在 COCO 數據集上進行訓練,它不需要任何預訓練也能在目標檢測和實例分割上獲得最好的性能。更令人驚奇的是,在從頭訓練的條件下,他們可以使用基線系統和專門爲預訓練模型優化過的超參數實現相近的性能。

這篇論文主要表示 COCO 數據集(目標檢測與實例分割)上的隨機初始化模型最後可以獲得很好的性能,且能與基於 ImageNet 預訓練的模型相媲美。此外,研究者發現即使在訓練數據只有 COCO 的 10%,預訓練獲得的準確率都與從頭訓練差距不大。最後研究者主要得出以下發現:

  • ImageNet 預訓練可以加速收斂,特別是在訓練前期。但如果加上事先預訓練和微調的時間,兩者差不多。
  • ImageNet 預訓練並不會自動給出更好的正則化,在小數據集上還是需要微調超參數。
  • 當下遊任務是空間位置敏感的定位預測,ImageNet 預訓練並不會獲得顯著的優勢。因此,基於分類任務的 ImageNet-like 預訓練方式,與位置敏感型目標任務之間的存在顯著差異,這可能會限制預訓練模型的優勢。

當然,已經有很多研究者在關注檢測與分割任務不能利用 ImageNet 預訓練的優勢,例如緩解圖像分類與目標檢測任務之間差距的 DetNet。我們在使用 ImageNet 預訓練模型之前應該先要考慮下游任務與分類之間的差異,也許「Rethink」的意義在於不要盲從任何範式,說不定以後會出現更接近於目標檢測或實例分割下游任務的預訓練方法。

這篇論文在知乎也有非常廣泛的討論,感興趣的讀者可以查看不同開發者的觀點:

知乎問答地址:https://www.zhihu.com/question/303234604

論文:Rethinking ImageNet Pre-training

論文地址:https://arxiv.org/pdf/1811.08883.pdf

摘要:我們使用從隨機初始化開始訓練的標準模型在 COCO 數據集上取得了目標檢測和實例分割的有力結果。這些結果可以媲美那些在 ImageNet 上進行預訓練的模型的結果,即使使用爲微調預訓練模型而優化的基線系統(Mask R-CNN)的超參數也是如此,唯一的例外是增加訓練迭代次數,以便隨機初始化的模型可以收斂。從隨機初始化開始訓練的模型的魯棒性出人意料;我們的結果在以下情況下得以保持:(i)僅用 10% 的訓練數據;(2)針對較深、較廣泛的模型;(3)用於多個任務及矩陣。實驗表明,ImageNet 預訓練可以在訓練早期加速收斂,但未必會提供正則化或提高最終目標任務的準確率。爲挑戰極限,我們在 COCO 目標檢測數據集上在不使用任何外部數據的前提下得到了 50.9 AP,該結果可以媲美 COCO 2017 挑戰賽冠軍使用 ImageNet 預訓練得到的結果。這些觀察挑戰了獨立任務中關於 ImageNet 預訓練的常識,我們希望這些發現可以激勵大家重新思考計算機視覺中預訓練和微調的當下實際範式。

圖 1:我們在 COCO train2017 設定中利用 ResNet-50 FPN [26]+GN [48] 骨幹網絡訓練 Mask R-CNN [13],在 val2017 設定中評估邊界框 AP(bbox AP),通過隨機權重或 ImageNet 預訓練來初始化模型。我們通過改變迭代次數來探索不同的訓練計劃,臨近迭代次數上的學習率會降低(準確率躍升)。從隨機初始化開始訓練的模型需要更多的迭代才能收斂,但會收斂到不亞於微調方案的性能。表 1 顯示了具體的 AP 值。

方法

歸一化

爲了更好地理解 ImageNet 預訓練會產生什麼影響,我們希望能夠在架構修改最少的情況下從頭開始訓練典型架構。我們描述了僅有的兩個認爲必要的修改,與模型歸一化和訓練長度有關,將在下一步討論。

批量歸一化(BN)[20] 是用來訓練現代網絡的常用歸一化方法,但它也是讓從零開始訓練檢測器變得困難的部分原因。與圖像分類器不同,目標檢測器通常用高分辨率輸入來訓練。這樣做減少了受內存限制的批大小,而小批量嚴重降低了 BN[19, 34, 48] 的準確率。如果使用預訓練,這個問題可以避免,因爲微調可以採用預訓練批量統計作爲固定參數 [17];但是,在從頭開始訓練時固定 BN 是無效的。

我們探索了最近的研究提出的兩種歸一化策略,其有利於解決小批量問題:

  • 羣組歸一化(GN)[48]:GN 是最近提出的 BN 的一種替代,執行獨立於批維度的計算,其準確率對批大小不敏感 [48]。
  • 同步批歸一化(SyncBN)[34, 27]:BN 的一種實現 [20],批量統計在多個設備(GPU)上進行計算。使用多個 GPU 時,這樣可以提高用於 BN 的有效批大小,從而避免小批量。

我們的實驗表明,GN 和 SyncBN 都允許檢測模型從頭開始訓練。

收斂

典型的 ImageNet 預訓練涉及超過一百萬張圖像並迭代上百個 epoch。除了從這個大規模數據集中學習到的語義信息以外,預訓練模型還學習到了在微調過程中不需要再學習的低級特徵(例如,邊緣、紋理等)。另一方面,從零開始訓練模型時需要同時學習低級和高級特徵,因此需要更多的迭代次數才能收斂。

基於此,我們認爲從零開始訓練模型必然比典型的微調方案需要更長的訓練時間。這可以從模型在訓練過程中見過的樣本數量進行公平比較,如圖 2 所示。

圖 2:在所有訓練迭代中模型所見到的圖像、實例和像素數量,預訓練(灰色)+微調(綠色)vs 隨機初始化(紫色)。其中,紫色條帶普遍比綠色條帶更長,意味着需要更大的迭代次數才能收斂。

結果與分析

我們第一個驚奇的發現是,當僅使用 COCO 數據集時,從零開始訓練的模型可以達到和微調模型相當的準確率。

圖 1 和圖 3 展示了當在 ResNet-50 (R50) 和 ResNet-101 (R101) 網絡骨幹上使用 GN 時的驗證 bbox AP 曲線(目標檢測平均精度),圖 4 展示了在 R50 上使用 SyncBN 時的驗證 bbox AP 曲線。其中灰色曲線爲 ImageNet 預訓練+微調的結果,紫色曲線爲隨機初始化訓練的結果。

圖 3:使用 Mask R-CNN 和 R101-FPN 以及 GN 在 COCO val2017 數據集上得到的 bbox AP 學習曲線。

圖 4:使用 Mask R-CNN 和 R50-FPN 以及 SyncBN(在 GPU 上同步批量統計)在 COCO val2017 數據集上得到的 bbox AP 學習曲線。

以下總結了圖 1、3、4 的相似現象:

  • 典型的微調方案(2x)結合預訓練模型可以很好地收斂到近最優結果(參見表 1,「w/ pre-train」)。但是這樣的迭代次數對於從零開始訓練的模型並不足夠。
  • 從零開始訓練的模型在足夠多的迭代次數(5× 或 6×)下可以達到和微調變體相當的性能。

表 1:在 COCO val2017 數據集上的目標檢測性能對比。其中 2x 表示 180k 迭代數,6x 表示 540k 迭代數。

實際上,在很多種訓練條件設置下,對於目標檢測和實例分割任務,隨機初始化方案都能和預訓練+微調方案達到相似的性能,如圖 5 所示。

圖 5:隨機初始化 vs 預訓練+微調的性能對比,包括(1)使用 FPN 和 GN 的基線模型;(2)訓練時間多尺度增強的基線模型;(3)使用 Cascade R-CNN 和訓練時間增強的基線模型;(4)使用 Cascade R-CNN、訓練時間增強以及測試時間多尺度增強的基線模型。頂部:R50,底部:R101。

用更少數據從零開始訓練

我們第二個發現更令人驚訝,是當使用顯著更少的數據訓練時(例如,1/10 個 COCO),從零開始訓練的模型並不比預訓練+微調的模型更差。圖 7 展示了兩種方法用 35k 樣本數和 10k 樣本數的 COCO 數據集訓練的結果對比。

圖 7:使用更少的 COCO 數據集圖像(左/中:35k;右:10k)進行訓練。模型爲帶有 R50-FPN 和 GN 的 Mask R-CNN,在 val2017 上評估 bbox AP。左:使用 35k COCO 圖像進行訓練,用了爲 118k train2017 選取的默認超參數。在學習率改變之前及之後表現出了過擬合。中:使用 35k COCO 圖像進行訓練,用了針對『w/ pre-train』進行優化的超參數(相同的超參數接下來會應用到從隨機初始化開始訓練的模型中)。右:用 10k COCO 圖像進行訓練,用了針對『w/ pre-training』進行優化的超參數。

但是樣本數再少也有個極限,如圖 8 所示,用 1k 樣本數訓練時,隨機初始化模型會強烈地過擬合。

圖 8:用 1k COCO 圖像進行訓練。模型是帶有 R50-FPN 和 GN 的 Mask R-CNN。和之前一樣,我們使用爲預訓練模型優化過的超參數,並把同樣的超參數應用於隨機初始化的模型。隨機初始化的模型可以彌補訓練損失,但驗證準確率(3.4 AP)低於預訓練模型(9.9 AP)。這是一個強烈過擬合的跡象,是由嚴重缺乏數據造成的。

我們還發現了另一個從零開始訓練不如預訓練+微調的案例:PASCAL VOC 數據集。我們在 trainval2007+train2012 數據集上進行訓練,並在 val2012 上進行評估。利用 ImageNet 預訓練,我們的 Faster R-CNN 基線(使用了 R101-FPN 和 GN,僅訓練時間增加)在 18k 次迭代中達到了 82.7 mAP。相對的,在 VOC 上從頭開始的訓練在 144k 次迭代中達到了 77.6 mAP,並且繼續增加訓練時間也無法超越前者。

討論

我們對實驗中獲得的主要觀察結果進行了總結,如下所示:

  • 無需更改架構,就可以在目標任務上從頭開始訓練並取得不錯的結果。
  • 從頭開始訓練需要更多的迭代才能充分收斂。
  • 在很多情況下,從頭開始訓練不會比 ImageNet 預訓練差多少,且訓練樣本數最少可達 10k COCO 圖像。
  • ImageNet 預訓練加快了目標任務的收斂速度。
  • ImageNet 預訓練不一定有助於減少過擬合,除非我們訪問的是非常小的數據範圍。
  • 如果目標任務對定位比分類更敏感,ImageNet 預訓練的作用會減小。

ImageNet 預訓練是必要的嗎?——如果我們有足夠的目標數據和計算資源,就不必要。

ImageNet 有用嗎?是的,ImageNet 預訓練對計算機視覺社區的發展來說是一項重要的輔助任務。

我們需要大數據嗎?是的,但如果考慮收集和清理數據所需的額外努力,一個通用的大規模、分類級別的預訓練集並不划算。

我們應該追求通用表徵嗎?是的。我們認爲學習通用表徵是一個不錯的目標。我們的結果並沒有偏離這個目標。

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