圖像分類心得(FlyAI平臺)

以下心得來自于參加FlyAI的心得戴甩,剛好在這里也分享以下,我是小林子闪彼。本篇細(xì)數(shù)我在分類中用到的Trick甜孤,以及如何快速找到它們协饲。

純分享,有不足缴川,還望指正

首先聲明本人自去年九月接觸FlyAI茉稠,未拿過第一,只想單純分享經(jīng)驗把夸,一個夢想致力于開源路上的小男孩而线。但是平臺可以幫人快速成長是一點沒錯的,當(dāng)你看到諸多優(yōu)秀的人恋日,你會有一種為什么我不行的錯覺膀篮,這篇文章就是希望幫你找到你在圖像分類中可能忽視的細(xì)節(jié)。

當(dāng)?shù)谝淮巫鰣D像分類的步驟應(yīng)該是啥岂膳?

  1. 觀察數(shù)據(jù):數(shù)據(jù)長什么樣誓竿,標(biāo)簽幾類啊,圖像大小啊谈截。
  2. 數(shù)據(jù)增強:最開始最好什么也沒有筷屡,或者肉眼感覺可以做的數(shù)據(jù)增強(僅限部分賽題,肉眼和CNN理解存在差距)
  3. 模型選擇:resnet簸喂,densenet速蕊,efficientnet個人最常用的三種,選擇一個淺層的開始娘赴。
  4. 觀察性能:有了數(shù)據(jù)规哲,模型,然后就提交看一下可以獲得多少分胺瘫怼唉锌!

看了分?jǐn)?shù)之后,發(fā)現(xiàn)怎么和第一差好多我該怎么辦竿奏?

  1. 我模型不對袄简,我換個模型試試?
  2. 我數(shù)據(jù)增強不好泛啸,我改一改绿语?
    注意,我想說的是,以上這兩條再單模的時候十分關(guān)鍵,模型和數(shù)據(jù)增強很大一部分決定了你的分?jǐn)?shù)上限丽惭,所以在調(diào)參的時候可以跑一編常用的模型res34-50-101;wrn-50-101等等等,在換模型的時候注意不要改動數(shù)據(jù)增強了匹耕。然后你在修改數(shù)據(jù)增強,找到一個最好的數(shù)據(jù)增強荠雕。

這個時候就有小伙伴問了稳其,什么是最好的數(shù)據(jù)增強驶赏?

  1. 如果你fai足夠,你就嘗試自己認(rèn)為可能的數(shù)據(jù)增強既鞠,找到一個合適的煤傍。
  2. 自己寫好數(shù)據(jù)增強,自己把增強后的數(shù)據(jù)畫出來看看嘱蛋,如果差距同類中的太多蚯姆,肯定不行啊浑槽!
  3. 當(dāng)你遇到瓶頸后,你可以分析bad case返帕,看一下怎樣的數(shù)據(jù)增強可以讓其預(yù)測正確桐玻?(我在很多分類經(jīng)驗中都看到過這一點,雖然我從來沒用過荆萤,因為我是個懶人)
補充一點比較關(guān)鍵的optimizer和 lr_scheduler
  • 如果你不知道如何使用優(yōu)化器:Adam镊靴,學(xué)習(xí)率3e-4。
  • 如果你不明白學(xué)習(xí)率遞減策略: ReduceLROnPlateau(patience通常3链韭、4)和余弦學(xué)習(xí)率選一個

數(shù)據(jù)增強偏竟,模型都說完了,怎么上分才是關(guān)鍵啊敞峭,一下我就列舉我在FlyAI踊谋,用到過的所有Trick(Pytorch版,Keras可能沒啥人用吧旋讹,搜索?Github)殖蚕。

  1. 數(shù)據(jù)重新劃分:官方給的是6:2,第一步我默認(rèn)直接0.1或者0.2沉迹,這點我覺得也是大多數(shù)人默認(rèn)的技術(shù)了睦疫。
  2. 標(biāo)簽平滑:適用于有噪聲的標(biāo)簽,我在標(biāo)簽種類多的比賽中常用鞭呕,少的幾乎不用蛤育,來自于經(jīng)驗。個人取舍葫松!
  3. 樣本平衡:幾乎不用瓦糕,大部分評估指標(biāo)acc(因此你可以揣測測試樣本也是如此的,過大的權(quán)重不利于樣本多的類更準(zhǔn)確)腋么。如果你非要用刻坊,搜索ImbalancedDatasetSampler即可使用。
  4. warmup:最開始我用小的學(xué)習(xí)率訓(xùn)練党晋,防止一開始底層的權(quán)重被拉偏了谭胚。當(dāng)數(shù)據(jù)量較少的時候我會使用徐块。當(dāng)數(shù)據(jù)量很大的時候,我通常為了剩fai這里就不做過多的設(shè)置灾而。搜索GradualWarmupScheduler即可使用
  5. cutout以及隨機擦除:這里有時候是漲分點胡控,例如你畫我猜的時候就很好用。這個trick在pytorch的transforms中自帶了旁趟,可想而知昼激,這個還是常用的。
  6. Mixup:我看到已經(jīng)有大佬分享這個了锡搜,我只能說橙困,用這個我從來沒有上過分,不知道是不是自己太菜了8汀凡傅!所以,這個大家自己試試肠缔。在嘗試的時候注意夏跷,如果你已經(jīng)用到了cutout的話,再用是不是有點就不好了明未,個人理解槽华。搜索pytorch mixup
  7. 分層學(xué)習(xí)率:backbone和fc使用不同的學(xué)習(xí)率,這點我感覺和warmup有點相似之處趟妥,所以大家各取所好就好猫态。具體實現(xiàn)可以自己寫網(wǎng)絡(luò)類,或者根據(jù)網(wǎng)絡(luò)層的名字在optimizer里指定披摄。
  8. Dropout和BN:抑制過擬合的好手段懂鸵,將最后的fc前面加一層DP或者BN,或者自己重新寫一下FC行疏。這里分享以下匆光,我以前Keras,后來Pytorch酿联,所以在修改fc的時候有點不適應(yīng)终息。后來發(fā)現(xiàn)只需要 nn.Sequential( nn.Dropout(0.2),nn.Linear(nfs, cfg.num_class) )即可。
  9. TTA:測試增強贞让,這也是幾乎必用的手段周崭,沒有副作用(在不要求復(fù)雜度的情況下)。模型預(yù)測的時候喳张,使用數(shù)據(jù)增強的多張照片续镇,取結(jié)果的平均值。這里的數(shù)據(jù)增強销部,我通常直接使用訓(xùn)練時候的數(shù)據(jù)增強摸航。如果你分析了bad case在這里修改一下增強效果制跟,漲分利器。
  10. 模型融合:Flyai2.0更加開放酱虎,使得模型融合變得非常簡單雨膨,所以不妨試一下,你會發(fā)現(xiàn)新大陸读串,就像我在X肺炎檢測里說的聊记,在過擬合的情況下,通常能帶來穩(wěn)定的漲點恢暖,也是各路比賽要求的排监。
  11. 交叉驗證:這里就和模型融合有點類似,區(qū)別在于數(shù)據(jù)上而已杰捂,使用不同的數(shù)據(jù)訓(xùn)練多個模型舆床。有時候也是漲點利器。
    今天就分享這么多琼娘,以后可能會更新峭弟,怎么合理使用這些技巧呢附鸽?每次都試一遍不是 太扯淡了嗎脱拼?

加油

這里要說的就是,當(dāng)你看了很多心得坷备,你發(fā)現(xiàn)為啥感覺大家說來說去就這么多熄浓,我好像都明白,但是為什么我的分?jǐn)?shù)不如別人呢省撑?哈哈赌蔑,我也有同樣的問題,這其中有運氣的成分竟秫,但不可否認(rèn)別人的經(jīng)驗和技術(shù)的差距娃惯,隨便一個參數(shù)(例如學(xué)習(xí)率)別人設(shè)置的可能就比你設(shè)置的結(jié)果好一些。不乏大佬可以重新修改底層網(wǎng)絡(luò)結(jié)構(gòu)肥败,所以在抱怨的時候趾浅,為何不去嘗試一點新的東西,不分析一下bad case呢馒稍?例如最新的cbam皿哨,cutmix,優(yōu)秀的預(yù)訓(xùn)練模型啊纽谒,kaggle就有你畫我猜原題目啊证膨,對吧?是不是說太多廢話了

如果覺得我說的有用鼓黔,就給我點個贊吧央勒!

PS:

本人懶人不见,以上trick我在接觸平臺的時候就已經(jīng)開始收集各種實現(xiàn)方式了,很多大佬也是如此订歪。所以你看脖祈,同樣一個題目,別人可能直接修改少量的參數(shù)就比較有好的效果了刷晋,所以把好用的就封裝起來盖高,下次直接用,祝大家可以取得高分眼虱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喻奥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捏悬,更是在濱河造成了極大的恐慌撞蚕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件过牙,死亡現(xiàn)場離奇詭異甥厦,居然都是意外死亡,警方通過查閱死者的電腦和手機寇钉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門刀疙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扫倡,你說我怎么就攤上這事谦秧。” “怎么了撵溃?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵疚鲤,是天一觀的道長。 經(jīng)常有香客問我缘挑,道長集歇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任语淘,我火速辦了婚禮诲宇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亏娜。我一直安慰自己焕窝,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布维贺。 她就那樣靜靜地躺著它掂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虐秋,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天榕茧,我揣著相機與錄音,去河邊找鬼客给。 笑死用押,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的靶剑。 我是一名探鬼主播蜻拨,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桩引!你這毒婦竟也來了缎讼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤坑匠,失蹤者是張志新(化名)和其女友劉穎血崭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘灼,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡夹纫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了设凹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舰讹。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖围来,靈堂內(nèi)的尸體忽然破棺而出跺涤,到底是詐尸還是另有隱情匈睁,我是刑警寧澤监透,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站航唆,受9級特大地震影響胀蛮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糯钙,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一粪狼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧任岸,春花似錦再榄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春疾就,著一層夾襖步出監(jiān)牢的瞬間澜术,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工猬腰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸟废,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓姑荷,卻偏偏與公主長得像盒延,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鼠冕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容