
何恺明,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預訓練後再微調(灰色線)兩種方法的邊界框平均檢測率(AP)。
可以看出,随機權重初始化法開始不及預訓練方法效果好,但随着疊代次數的增加,逐漸達到了和預訓練法相當的結果。
為了探索多種訓練方案,何恺明等人嘗試了在不同的疊代周期降低學習率。
結果顯示,随機初始化方法訓練出來的模型需要更多疊代才能收斂,但最終收斂效果不比預訓練再微調的模型差。
主幹網絡換成ResNet-101 FPN,這種從零開始訓練的方法依然呈現出一樣的趨勢:從零開始先是AP不及預訓練法,多次疊代後兩者終趨于不分上下。
效果究竟能有多好?答案前面也說過了,和COCO 2017冠軍選手平起平坐。
從零開始模型的效果,由COCO目标檢測任務來證明。在2017版驗證集上,模型的bbox(邊界框)和mask(執行個體分割)AP分别為50.9和43.2;
他們還在2018年競賽中送出了這個模型,bbox和mask AP分别為51.3和43.6。
這個成績,在沒有經過ImageNet預訓練的單模型中是最好的。
這是一個非常龐大的模型,使用了ResNeXt-152 8×32d基幹,GN歸一化方法。從這個成績我們也能看出,這個大模型沒有明顯過拟合,非常健壯(robust)。
實驗中,何恺明等人還用ImageNet預訓練了同樣的模型,再進行微調,成績沒有任何提升。
這種健壯性還有其他展現。
比如說,用更少的資料進行訓練,效果還是能和預訓練再微調方法持平。何恺明在論文中用“Even more surprising”來形容這個結果。
當他們把訓練圖像數量縮減到整個COCO資料集的1/3(35000張圖)、甚至1/10(10000張圖)時,經過多次疊代,随機初始化看起來還略優于預訓練法的效果。
不過,10000張圖已經是極限,繼續降低資料量就不行了。當他們把訓練資料縮減到1000張圖檔,出現了明顯的過拟合。
怎樣訓練?想抛棄ImageNet預訓練,用不着大動幹戈提出個新架構。不過,兩點小改動在所難免。
第一點是模型的歸一化方法,第二點是訓練長度。
我們先說模型歸一化(Normalization)。
因為目标檢測任務的輸入資料通常分辨率比較高,導緻批次大小不能設定得太大,是以,批歸一化(Batch Normalization,BN)不太适合從零開始訓練目标檢測模型。
于是,何恺明等人從最近的研究中找了兩種可行的方法:群組歸一化(Group Normalization,GN)和同步批歸一化(Synchronized Batch Normalization,SyncBN)。
GN是吳育昕和何恺明合作提出的,發表在ECCV 2018上,還獲得了最佳論文榮譽提名。這種歸一化方法把通道分成組,然後計算每一組之内的均值和方差。它的計算獨立于批次次元,準确率也不受批次大小影響。
SyncBN則來自曠視的MegDet,和香港中文大學Shu Liu等人的CVPR 2018論文Path Aggregation Network for Instance Segmentation。這是一種跨GPU計算批次統計資料來實作BN的方法,在使用多個GPU時增大了有效批次大小。
歸一化方法標明了,還要注意收斂問題,簡單說是要多訓練幾個周期。
道理很簡單:你總不能指望一個模型從随機初始化狀态開始訓練,還收斂得跟預訓練模型一樣快吧。
是以,要有耐心,多訓練一會兒。
上圖就是這兩種方法的對比。假設微調的模型已經預訓練了100個周期,那麼,從零開始訓練的模型要疊代的周期數是微調模型的3倍,見到的像素數量才能差不多,執行個體級、圖檔級的樣本數量依然差距很大。
也就是說,要想從随機初始化狀态開始訓練,要有大量樣本。
到底要不要用ImageNet預訓練?這篇論文還貼心地放出了從實驗中總結的幾條結論:
● 不改變架構,針對特定任務從零開始訓練是可行的。
● 從零開始訓練需要更多疊代周期,才能充分收斂。
● 在很多情況下,甚至包括隻用10000張COCO圖檔,從零開始訓練的效果不遜于用ImageNet預訓練模型微調。
● 用ImageNet預訓練能加速在目标任務上的收斂。
● ImageNet預訓練未必能減輕過拟合,除非資料量極小。
● 如果目标任務對定位比識别更敏感,ImageNet預訓練的作用較小。
是以,關于ImageNet預訓練的幾個關鍵問題也就有了答案:
它是必需的嗎?并不是,隻要目标資料集和計算力足夠,直接訓練就行。這也說明,要提升模型在目标任務上的表現,收集目标資料和标注更有用,不要增加預訓練資料了。
它有幫助嗎?當然有,它能在目标任務上資料不足的時候帶來大幅提升,還能規避一些目标資料的優化問題,還縮短了研究周期。
我們還需要大資料嗎?需要,但一般性大規模分類級的預訓練資料集就不用了,在目标領域收集資料更有效。
我們還要追求通用表示嗎?依然需要,這還是個值得贊賞的目标。
原文釋出時間為:2018-11-23
本文來自雲栖社群合作夥伴“
量子位”,了解相關資訊可以關注“
”。