何愷明「終結」ImageNet預訓練時代:從0開始訓練神經網路,效果比肩COCO冠軍
夏乙 安妮 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
何愷明,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預訓練的幾個關鍵問題也就有了答案:
它是必需的嗎?並不是,只要目標數據集和計算力足夠,直接訓練就行。這也說明,要提升模型在目標任務上的表現,收集目標數據和標註更有用,不要增加預訓練數據了。
它有幫助嗎?當然有,它能在目標任務上數據不足的時候帶來大幅提升,還能規避一些目標數據的優化問題,還縮短了研究周期。
我們還需要大數據嗎?需要,但一般性大規模分類級的預訓練數據集就不用了,在目標領域收集數據更有效。
我們還要追求通用表示嗎?依然需要,這還是個值得讚賞的目標。
想更深入地理解這個問題,請讀論文:
傳送門
論文:
Rethinking ImageNet Pre-training
Kaiming He,Ross Girshick,PiotrDollár
https://arxiv.org/abs/1811.08883
—完—
年度評選申請
加入社群
量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
※實測華為Mate 20 Pro:配備麒麟980晶元後AI到底有多強
※吳恩達團隊新研究:用X光片識別14種疾病,AI準確度部分超越人類
TAG:量子位 |