原文鏈接:https://arxiv.org/abs/1811.08883
摘要:
在COCO數(shù)據(jù)集上面做物體檢測(object detection)和實(shí)例分割(instance segmentation)的時候氛魁,我們發(fā)現(xiàn)通過使用隨機(jī)初始化來從頭開始訓(xùn)練模型得到的結(jié)果趟庄,并沒有比那些從ImageNet上面預(yù)訓(xùn)練搏色,然后再微調(diào)的模型得到的結(jié)果要差霹俺,當(dāng)然伴隨了訓(xùn)練迭代次數(shù)增加以及可能不收斂的缺點(diǎn)议惰。令人驚奇的是,這種訓(xùn)練方式是魯棒的寇荧,訓(xùn)練得到的結(jié)果在很多場合下都是成立的最易,例如i)僅僅使用百分之10的訓(xùn)練數(shù)據(jù)ii)更深更寬的模型iii)多種評判標(biāo)準(zhǔn)下的多任務(wù)模型粒没。實(shí)驗(yàn)結(jié)果表明:使用ImageNet預(yù)訓(xùn)僅僅在訓(xùn)練早期可以加速收斂,但是并不能提高最鐘任務(wù)的準(zhǔn)確度爽撒。這些發(fā)現(xiàn)引導(dǎo)著大家重新思考一下“pretraining and fine-tuning”這種在計(jì)算機(jī)視覺任務(wù)中的范式(de facto paradigm )
背景介紹:
大家發(fā)現(xiàn)入蛆,使用ImageNet來預(yù)訓(xùn)練一個模型,模型學(xué)到的特征表達(dá)能力能夠很好地遷移到我們需要的任務(wù)上硕勿。因?yàn)椋@種訓(xùn)練方式也成為了一個固定的范式:就是在大規(guī)模數(shù)據(jù)上(例如ImageNet)預(yù)訓(xùn)練好模型源武,然后再自己特定的任務(wù)上微調(diào)(Fine-tuning)。這種預(yù)訓(xùn)練的方式也已經(jīng)在很多任務(wù)上取得了較好的結(jié)果粱栖,包括物體檢測话浇,圖像分割和動作識別。
因此這篇paper主要來重新思考一下闹究,我們是否一定需要使用這種 pretraining and fine-tuning 這一固定的范式。我們的實(shí)驗(yàn)結(jié)果表明:使用隨機(jī)初始化來從頭開始訓(xùn)練我們的模型赏寇,一樣可以得到較好的結(jié)果砂代。我們發(fā)現(xiàn),如果i)使用初始化技巧來加速擬合2)能夠有足夠長的時間來幫助訓(xùn)練刻伊,我們并沒有什么障礙來從頭開始訓(xùn)練我們的模型。
接著智什,本文證明了對于各種AP(Average Precision) 在40-50上面的baseline 網(wǎng)絡(luò)丁屎,參數(shù)隨機(jī)初始化的訓(xùn)練方式可以與在imagenet預(yù)訓(xùn)練的方式媲美。更進(jìn)一步晨川,我們同時發(fā)現(xiàn)共虑,在我們僅僅使用10%的數(shù)據(jù)時,這種結(jié)論依舊成立妈拌。同時,我們在沒有過擬合的情況下猜惋,還能夠從頭開始訓(xùn)練4倍于ResNet參數(shù)的網(wǎng)絡(luò)』捍埽基于以上的實(shí)驗(yàn),我們得出下列結(jié)論:
1. ImageNet 預(yù)訓(xùn)練可以加速網(wǎng)絡(luò)收斂雹洗,在訓(xùn)練早期尤為明顯卧波。這是主要因?yàn)椋S機(jī)初始化訓(xùn)練需要一定的時間來學(xué)習(xí)提起low -level的特征(例如邊緣螃成,紋理)
2. ImageNet 預(yù)訓(xùn)練并不能自動地給模型一個好的正則項(xiàng)查坪。在pretrain的實(shí)驗(yàn)中,當(dāng)減少數(shù)據(jù)至10%的時候偿曙,我們必須重新選在超參數(shù)來防止過擬合望忆。但是這種問題在隨機(jī)初始化中,就沒有出現(xiàn)启摄。
3. ImageNet 預(yù)訓(xùn)練對那些 對于空間位置非常敏感的任務(wù)并沒有太大的用處。主要問題在于ImageNet 預(yù)訓(xùn)練是用來做分類任務(wù)傅是,而物體檢測還需要輸出空間位置坐標(biāo)蕾羊。
算法原理:
這篇paper的主要目的是看看ImageNet 預(yù)訓(xùn)練到底在網(wǎng)絡(luò)的訓(xùn)練中起到什么樣的作用。因此溃斋,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)不是我們的重點(diǎn)吸申。我們基于一些通用的網(wǎng)絡(luò),并做出最小的改動來進(jìn)行我們的對比實(shí)驗(yàn)梳侨。以下是一些改動設(shè)計(jì)和算法考量
1.? 標(biāo)準(zhǔn)化(Normalization)
BN(batch Normalization)是一種常見的標(biāo)準(zhǔn)化方式日丹,基于BN的網(wǎng)絡(luò)設(shè)計(jì)能夠加速網(wǎng)絡(luò)訓(xùn)練以及擬合。物體檢測需要大size的圖像作為輸入丙躏,受限于顯卡的顯存束凑,就只能降低batch-size,降低batch-size 則會降低模型的準(zhǔn)確度汪诉。如果使用imagenet 預(yù)訓(xùn)練的方式扒寄,可以避開這種問題,但是隨機(jī)初始化訓(xùn)練則需要從頭開始使用BN该编。
本文主要采用以下兩種方式來減少小batch-size帶來的問題:
(1)GN(Group Normalization)-GN是介于LN(layer normalization)和IN(instance normalization)之間的一種標(biāo)準(zhǔn)化方式
(2)SyncBN:這是一種多機(jī)多卡分布式的一種方式课竣。通過多塊GPU來增加batch-size
2. 收斂
關(guān)于收斂的問題,如果我們希望從零開始隨機(jī)初始化訓(xùn)練我們的算法所需的時間稠氮,要小于那個使用ImageNet預(yù)訓(xùn)練初始化所需的時間,這是不現(xiàn)實(shí)也是不公平的赃份。如果忽視這個事實(shí)奢米,那我們很可能得到的是不正確的結(jié)論。
典型的ImageNet 預(yù)訓(xùn)練涉及到了百萬張圖像的上百個epoch的迭代訓(xùn)練谒拴。這種大規(guī)模的學(xué)習(xí)過程除了能夠?qū)W到高階語義信息之外涉波,還能夠?qū)W到一些低階的圖像的特征炭序。因此苍日,在fine-tuning的時候就不需要重新學(xué)習(xí)這些低階的圖像特征描述了相恃。因此,我們在比較兩個收斂速度的時候拦耐,需要選取那些訓(xùn)練周期較長的model。(trained for longer than typical fine-tuning schedules).
從Images 這一欄對比可以看出扫俺,除去ImageNet預(yù)訓(xùn)練的固定100epoch牵舵,隨機(jī)初始化訓(xùn)練(72epoch)是fine-tuning(24epoch)的三倍倦挂。盡管使用了較多的iteration,但是如果我們從image-level sample的角度來看方援,其ImageNet預(yù)訓(xùn)練固定的100epoch占了大頭犯戏。但是如果我們從pixel-level的角度來看,因?yàn)閛bject detection task 需要大size的輸入先匪,而image classification不需要那么大的輸入尺寸。實(shí)驗(yàn)結(jié)果表明坚俗,從頭開始隨機(jī)初始化訓(xùn)練的方式能夠趕上ImageNet預(yù)訓(xùn)練的訓(xùn)練方式岸裙。這就暗示了如果想要從頭開始隨機(jī)初始化訓(xùn)練這種方式收斂的話, 就需要大量的數(shù)據(jù)(就pixel-level的數(shù)據(jù)而言)
實(shí)驗(yàn)設(shè)置:
我們盡量遵循最小改動這個標(biāo)準(zhǔn)來去設(shè)計(jì)對照實(shí)驗(yàn)恩闻。主要使用Detectron里面的Mask-RCNN這一基本baseline框架剧董。
1. 網(wǎng)絡(luò)結(jié)構(gòu):以ResNet或者ResNeXt為基礎(chǔ)的Mask-RCNN破停,主要使用GN和SyncBN來取代凍結(jié)BN的操作辱挥。同時Fine-tuning的模型也采用同樣的操作边涕。
2. 學(xué)習(xí)率:在初始學(xué)習(xí)率(比較大的)的情況下長時間的訓(xùn)練對于模型的收斂是有幫助的褂微,但是如果初始學(xué)習(xí)率較小的話,可能就會過擬合式撼。
3. 超參數(shù):所有的超參數(shù)設(shè)置參照Detectron設(shè)置求厕。初始學(xué)習(xí)率為0.02,權(quán)重衰減為0.0001 呀癣,動量參數(shù)值為0.9. 所有的模型訓(xùn)練在8GPU上项栏,batch-size為2.? 對于數(shù)據(jù)增強(qiáng)策略,訓(xùn)練的時候只有水平翻轉(zhuǎn)沼沈,測試沒有增強(qiáng)融合的操作列另。
結(jié)果:
1. 準(zhǔn)確率(Accuracy)
第一個令人驚奇的發(fā)現(xiàn)就是僅僅使用coco數(shù)據(jù)集,從頭訓(xùn)練的模型能夠趕得上那個fine-tuning的模型摊滔。
2. 使用少量的數(shù)據(jù)來從頭開始訓(xùn)練模型
第二個發(fā)現(xiàn)就是 使用少量的數(shù)據(jù)來隨機(jī)初始化訓(xùn)練的模型的結(jié)果拷姿,不比那些imageNet預(yù)訓(xùn)練的模型得到的結(jié)果要差
最終的討論:
1. 在特定的目標(biāo)任務(wù)上,從頭開始訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò)是可行的
2. 從頭開始訓(xùn)練網(wǎng)絡(luò)需要更久的訓(xùn)練時間來讓網(wǎng)絡(luò)收斂
3. 即使在只有10K的coco數(shù)據(jù)集上面來從頭開始訓(xùn)練描滔,得到的結(jié)果也不必fine-tuning的差
4. ImageNet 預(yù)訓(xùn)練的方式可以加速網(wǎng)絡(luò)收斂
5. ImageNet 預(yù)訓(xùn)練并不會減少網(wǎng)絡(luò)的過擬合現(xiàn)象踪古,除非我們真的有一批很小的數(shù)據(jù)集(PS:例如醫(yī)學(xué)圖像)
6. 在一些對于空間位置比較敏感的task中(例如定位這些)券腔,ImageNet 預(yù)訓(xùn)練對網(wǎng)絡(luò)訓(xùn)練的幫助不如classification多
基于上述的發(fā)現(xiàn)拘泞,作者給出了一些關(guān)于ImageNet 預(yù)訓(xùn)練的常見問題的解答陪腌,希望引導(dǎo)大家對于imagenet pretraining有著更多的考量。
1. ImageNet 預(yù)訓(xùn)練真的是必要的嗎诗鸭?-----回答是NO!在你有足夠的數(shù)據(jù)和計(jì)算資源的情況下
2. ImageNet 預(yù)訓(xùn)練真的有幫助嗎锻弓?------回答是Yes蝌箍!ImageNet 預(yù)訓(xùn)練提供了一個較好的參數(shù)初始化方式,輕而易舉的獲得較好的結(jié)果杂拨,減少了迭代次數(shù)本橙,加速了網(wǎng)絡(luò)收斂,降低了訓(xùn)練時間贷币。
3. 是否我們需要收集Big Data---回答是Yes亏狰!但是如果僅僅是視覺的分類任務(wù),就沒有必要了促脉。ImageNet pretraining是一個很好的工具
我們是否應(yīng)該追求一個真正意義上的通用的特征表達(dá)表征能力策州?---回答是Yes!
In closing, ImageNet and its pre-training role have been incredibly influential in computer vision, and we hope that our new experimental evidence about ImageNet and its role will shed light into potential future directions for the community to move forward.
PS:? 對于醫(yī)學(xué)AI 分割而言旁仿,數(shù)據(jù)集真的是太小了孽糖、例如血管分割DRIVE 數(shù)據(jù)集只有幾十張圖像毅贮,cell segmentation 最初也只提供了30張圖像尘奏,因此醫(yī)學(xué)圖像的分割task里面帶有g(shù)round truth的數(shù)據(jù)真是太少炫加、太珍貴了。
因?yàn)閿?shù)據(jù)量比較少俗孝,所以我們現(xiàn)在在用ImageNet 來預(yù)訓(xùn)練我們的模型,來提取一些基本的圖像特征,但是這些特征是否真的對我們的醫(yī)學(xué)圖像有用呢柬甥?醫(yī)學(xué)圖像有以下幾個特點(diǎn):
圖像分辨率高其垄,彩色眼底圖4k*5K,而病灶特征很小臂外,例如微動脈血管瘤只占有幾十個像素
不同成像方式帶來的圖像格式不一喇颁。除了上述的color fundus, 還有CT蔫浆,MRI姐叁,OCT這些。每一種成像方式帶來的圖像噪聲風(fēng)格都是不一樣的原环。即使是同一種類型的數(shù)據(jù)处窥,例如OCT,Topcon的機(jī)器和 Heidelberg的機(jī)器拍出來的圖像也不一樣(即使同樣屬于speckle noise)柜与。
不同醫(yī)生標(biāo)注的ground truth之間的誤差比較大
帶有醫(yī)生準(zhǔn)確標(biāo)注的數(shù)據(jù)量很少
因此,醫(yī)學(xué)圖像分割是否使用imageNet pretraining 也是我們需要仔細(xì)考慮的問題颅悉。