淺談分辨率對(duì)模型影響以及訓(xùn)練方法

極市導(dǎo)讀
?最近幾個(gè)人在討論模型訓(xùn)練的時(shí)候,提到了一個(gè)尺度對(duì)于模型的影響以及訓(xùn)練方法的收益,因此花了點(diǎn)時(shí)間,簡單做了幾組實(shí)驗(yàn),整理一下結(jié)論。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
1 基礎(chǔ)配置
本文的實(shí)驗(yàn)均是采用固定的配置結(jié)構(gòu)以及同一套code實(shí)現(xiàn),每次實(shí)驗(yàn)只改變分辨率等變量因素,保證實(shí)驗(yàn)合理性。
代碼實(shí)現(xiàn)可以參考我的這個(gè)【git repo】— ?https://github.com/FlyEgle/imageclassification
模型:ResNet50
數(shù)據(jù)集:ImageNet1k-128w
數(shù)據(jù)增強(qiáng):RandomResizeCrop+RandomFlip
優(yōu)化器:SGD+momentum
學(xué)習(xí)率:
學(xué)習(xí)率衰減:cosineLr
混合精度: yes
2 實(shí)驗(yàn)
本次實(shí)驗(yàn)分成Pretrain和Finetune兩大部分,實(shí)驗(yàn)過程和結(jié)果如下:
2.1 Pretrain
pretrain這里分成兩組實(shí)驗(yàn)來做,第一組無任何pretrain,第二組用不同的方法load pretrain。
2.1.1 Training from Sketch
第一組實(shí)驗(yàn),總計(jì)4次對(duì)比實(shí)驗(yàn),分別實(shí)驗(yàn)在不同的分辨率的情況下R50的表現(xiàn),訓(xùn)練周期均為90個(gè)epoch, warmup 5個(gè)epoch,訓(xùn)練配置保持一致,結(jié)果如下:
| 模型 | 分辨率 | batchsize | acc@top1 |
|---|---|---|---|
| R50 | 224 | 1024 | 76.548% |
| R50 | 320 | 1024 | 77.698% |
| R50 | 416 | 1024 | 78.026% |
| R50 | 448 | 1024 | 77.826% |
可以看到,隨著分辨率的增加,模型精度隨之上升,但是在448分辨率的情況下,訓(xùn)練的精度反而沒有416高,說明不加載pretrain的情況下,想要按原始的訓(xùn)練配置來提升精度,在更高的分辨率下收益不會(huì)有太大提升。
2.1.2 Training from Progressive
第二組實(shí)驗(yàn),總計(jì)3次對(duì)比實(shí)驗(yàn),分別是更大的分辨率先load小分辨率的權(quán)重后在按相同配置進(jìn)行訓(xùn)練,由于batchsize在1k,所以我沒有舍棄warmup,3.2的配置和3.1的配置是保持一致的,結(jié)果如下:
| 模型 | 分辨率 | batchsize | acc@top1 |
|---|---|---|---|
| R50 | 224->320 | 1024 | 78.052% |
| R50 | 320->416 | 1024 | 78.678% |
| R50 | 416->448 | 1024 | 78.542% |
可以看到相比第一組實(shí)驗(yàn),相同分辨率下的精度均有提升,而且在448的時(shí)候,沒有顯著的下降。
為了驗(yàn)證load精度稍微差一點(diǎn)的pretrain是否有提升,做了如下的實(shí)驗(yàn),不同的分辨率訓(xùn)練,但是固定load的pretrain都是224的權(quán)重,結(jié)果如下:
| 模型 | 分辨率 | batchsize | acc@top1 |
|---|---|---|---|
| R50 | 224->320 | 1024 | 78.052% |
| R50 | 224->416 | 1024 | 78.572% |
| R50 | 224->448 | 1024 | 78.722% |
很驚奇的發(fā)現(xiàn),在448的分辨率下,精度達(dá)到了最高。
2.2 Finetune
這里設(shè)計(jì)了兩大組實(shí)驗(yàn),分別考慮了學(xué)習(xí)率縮放和凍結(jié)block。
2.2.1 Finetune with LR
前面的實(shí)驗(yàn)因?yàn)槎际亲鰌retrain和from sketch,所以固定了所有的配置,包括LR。這里對(duì)LR縮放做實(shí)驗(yàn),探究finetune對(duì)模型精度的影響??s放原始LR為0.1和0.01倍,去掉warmup,只訓(xùn)練40個(gè)epoch,結(jié)果如下:
| 模型 | 分辨率 | batchsize | LR | acc@top1 |
|---|---|---|---|---|
| R50 | 224->448 | 1024 | LR*0.1 | 78.924% |
| R50 | 224->448 | 1024 | LR*0.01 | 78.736% |
可以看到,不固定任何參數(shù)的時(shí)候,縮放LR,finetune相比pretrain,會(huì)有較大幅度的提升。
2.2.2 Finetune with Freeze layer
上一組實(shí)驗(yàn)得到了LR*0.1的時(shí)候效果最好,但是沒有凍結(jié)模型的任何參數(shù),這組實(shí)驗(yàn)做一下上面實(shí)驗(yàn)的補(bǔ)充,R50總計(jì)有4個(gè)layer,以及conv stem和FC。FC是不會(huì)被凍結(jié)的,不然訓(xùn)練個(gè)寂寞了,所以調(diào)整的就是不同的layer的凍結(jié),結(jié)果如下:
| 模型 | 分辨率 | batchsize | LR | layer | acc@top1 |
|---|---|---|---|---|---|
| R50 | 224->448 | 1024 | LR*0.1 | conv stem+layer1 | 78.796% |
| R50 | 224->448 | 1024 | LR*0.01 | conv stem+layer1-2 | 78.822% |
| R50 | 224->448 | 1024 | LR*0.01 | conv stem+layer1-3 | 78.05% |
| R50 | 224->448 | 1024 | LR*0.01 | conv stem+layer1-4 | 74.432% |
可以看到,當(dāng)凍結(jié)前兩個(gè)layer的時(shí)候,模型的性能還ok,但是當(dāng)開始凍結(jié)第三個(gè)layer的時(shí)候有明顯的下降,全部凍結(jié)下降的更明顯。
3 結(jié)論
如果同域數(shù)據(jù),不希望提升模型的參數(shù)量的情況下,想要提升精度,可以考慮pretrain的方法。Finetune的方法雖然精度可以上來,但是bad case有時(shí)候會(huì)跟著權(quán)重繼承過來。
數(shù)據(jù)量多,時(shí)間不夠的情況下可以適當(dāng)freeze前面幾層layer進(jìn)行finetune,淺層特征一般是共性特征,影響精度的還是底層的抽象特征。
imagnet的數(shù)據(jù)集是屬于目標(biāo)性的,就是物體很明確的在圖像中表示出來,如果你的任務(wù)是理解性質(zhì)的或者需要隱表征的,那么最好從頭訓(xùn)練(經(jīng)驗(yàn)之談)
以上實(shí)驗(yàn)結(jié)論僅供參考,不能保證不同數(shù)據(jù)集結(jié)論一致,歡迎交流討論。
如果覺得有用,就請(qǐng)分享到朋友圈吧!
公眾號(hào)后臺(tái)回復(fù)“transformer”獲取最新Transformer綜述論文下載~

#?CV技術(shù)社群邀請(qǐng)函?#

備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)
即可申請(qǐng)加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~


