天天看點

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

何恺明,RBG,Piotr Dollár。

三位從Mask R-CNN就開始合作的大神搭檔,剛剛再次聯手,一文“終結”了ImageNet預訓練時代。

他們所針對的是目前計算機視覺研究中的一種正常操作:管它什麼任務,拿來ImageNet預訓練模型,遷移學習一下。

但是,預訓練真的是必須的嗎?

這篇重新思考ImageNet預訓練(Rethinking ImageNet Pre-training)就給出了他們的答案。

FAIR(Facebook AI Research)的三位研究員從随機初始狀态開始訓練神經網絡,然後用COCO資料集目标檢測和執行個體分割任務進行了測試。結果,絲毫不遜于經過ImageNet預訓練的對手。

甚至能在沒有預訓練、不借助外部資料的情況下,和COCO 2017冠軍平起平坐。

結果

訓練效果有圖有真相。

他們用2017版的COCO訓練集訓練了一個Mask R-CNN模型,基幹網絡是用了群組歸一化(GroupNorm)的ResNet-50 FPN。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

随後,用相應的驗證集評估随機權重初始化(紫色線)和用ImageNet預訓練後再微調(灰色線)兩種方法的邊界框平均檢測率(AP)。

可以看出,随機權重初始化法開始不及預訓練方法效果好,但随着疊代次數的增加,逐漸達到了和預訓練法相當的結果。

為了探索多種訓練方案,何恺明等人嘗試了在不同的疊代周期降低學習率。

結果顯示,随機初始化方法訓練出來的模型需要更多疊代才能收斂,但最終收斂效果不比預訓練再微調的模型差。

主幹網絡換成ResNet-101 FPN,這種從零開始訓練的方法依然呈現出一樣的趨勢:從零開始先是AP不及預訓練法,多次疊代後兩者終趨于不分上下。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

效果究竟能有多好?答案前面也說過了,和COCO 2017冠軍選手平起平坐。

從零開始模型的效果,由COCO目标檢測任務來證明。在2017版驗證集上,模型的bbox(邊界框)和mask(執行個體分割)AP分别為50.9和43.2;

他們還在2018年競賽中送出了這個模型,bbox和mask AP分别為51.3和43.6。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

這個成績,在沒有經過ImageNet預訓練的單模型中是最好的。

這是一個非常龐大的模型,使用了ResNeXt-152 8×32d基幹,GN歸一化方法。從這個成績我們也能看出,這個大模型沒有明顯過拟合,非常健壯(robust)。

實驗中,何恺明等人還用ImageNet預訓練了同樣的模型,再進行微調,成績沒有任何提升。

這種健壯性還有其他展現。

比如說,用更少的資料進行訓練,效果還是能和預訓練再微調方法持平。何恺明在論文中用“Even more surprising”來形容這個結果。

當他們把訓練圖像數量縮減到整個COCO資料集的1/3(35000張圖)、甚至1/10(10000張圖)時,經過多次疊代,随機初始化看起來還略優于預訓練法的效果。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

不過,10000張圖已經是極限,繼續降低資料量就不行了。當他們把訓練資料縮減到1000張圖檔,出現了明顯的過拟合。

怎樣訓練?

想抛棄ImageNet預訓練,用不着大動幹戈提出個新架構。不過,兩點小改動在所難免。

第一點是模型的歸一化方法,第二點是訓練長度。

我們先說模型歸一化(Normalization)。

因為目标檢測任務的輸入資料通常分辨率比較高,導緻批次大小不能設定得太大,是以,批歸一化(Batch Normalization,BN)不太适合從零開始訓練目标檢測模型。

于是,何恺明等人從最近的研究中找了兩種可行的方法:群組歸一化(Group Normalization,GN)和同步批歸一化(Synchronized Batch Normalization,SyncBN)。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

GN是吳育昕和何恺明合作提出的,發表在ECCV 2018上,還獲得了最佳論文榮譽提名。這種歸一化方法把通道分成組,然後計算每一組之内的均值和方差。它的計算獨立于批次次元,準确率也不受批次大小影響。

SyncBN則來自曠視的MegDet,和香港中文大學Shu Liu等人的CVPR 2018論文Path Aggregation Network for Instance Segmentation。這是一種跨GPU計算批次統計資料來實作BN的方法,在使用多個GPU時增大了有效批次大小。

歸一化方法標明了,還要注意收斂問題,簡單說是要多訓練幾個周期。

道理很簡單:你總不能指望一個模型從随機初始化狀态開始訓練,還收斂得跟預訓練模型一樣快吧。

是以,要有耐心,多訓練一會兒。

何恺明“終結”ImageNet預訓練時代:從0開始訓練神經網絡,效果比肩COCO冠軍

上圖就是這兩種方法的對比。假設微調的模型已經預訓練了100個周期,那麼,從零開始訓練的模型要疊代的周期數是微調模型的3倍,見到的像素數量才能差不多,執行個體級、圖檔級的樣本數量依然差距很大。

也就是說,要想從随機初始化狀态開始訓練,要有大量樣本。

到底要不要用ImageNet預訓練?

這篇論文還貼心地放出了從實驗中總結的幾條結論:

 ●  不改變架構,針對特定任務從零開始訓練是可行的。

 ●  從零開始訓練需要更多疊代周期,才能充分收斂。

 ●  在很多情況下,甚至包括隻用10000張COCO圖檔,從零開始訓練的效果不遜于用ImageNet預訓練模型微調。

 ●  用ImageNet預訓練能加速在目标任務上的收斂。

 ●  ImageNet預訓練未必能減輕過拟合,除非資料量極小。

 ●  如果目标任務對定位比識别更敏感,ImageNet預訓練的作用較小。

是以,關于ImageNet預訓練的幾個關鍵問題也就有了答案:

它是必需的嗎?并不是,隻要目标資料集和計算力足夠,直接訓練就行。這也說明,要提升模型在目标任務上的表現,收集目标資料和标注更有用,不要增加預訓練資料了。

它有幫助嗎?當然有,它能在目标任務上資料不足的時候帶來大幅提升,還能規避一些目标資料的優化問題,還縮短了研究周期。

我們還需要大資料嗎?需要,但一般性大規模分類級的預訓練資料集就不用了,在目标領域收集資料更有效。

我們還要追求通用表示嗎?依然需要,這還是個值得贊賞的目标。

原文釋出時間為:2018-11-23

本文來自雲栖社群合作夥伴“

量子位

”,了解相關資訊可以關注“

”。

繼續閱讀