水下魚類物種識別(得分99.89)——FlyAI競賽平臺

水下魚類物種識別(得分99.89)

1、數據預處理 

①查看圖片數據,觀察發現這些魚類圖片分辨率大多數都是很小的,我們可以從小分辨率開始逐步增大圖像分辨率,通常可以從128開始

②自定義數據集劃分,可以將訓練集和驗證集劃分爲8:2或者9:1,特別是數據量少時我們需要儘可能將訓練集設置大一點

③數據增強:訓練集數據增強使用AutoML的RandAugment可以防止過擬合,並且通常會比自己手工試數據增強效果好很多;驗證集數據增強,訓練發現直接使用Resize的方式會比先Resize再CenterCrop的效果要好,可能是CenterCrop會丟失一些信息 

2、選擇baseline 

①可以考慮使用resnetxt-swsl系列或者efficientnet系列作爲baseline,我這邊使用的是resnetxt101-32x8swsl 

②實驗可以發現efficientnet佔用內存會相對大一點,efficientnet-b3佔用內存和resnetxt101-32x8swsl就已經差不多大了,對於圖片較大的數據集來說使用efficientnet系列效果會好點 

③使用efficientnet作爲baseline學習率可以選擇爲0.005 ~ 0.01,使用resnetxt101-32x8swsl作爲baseline學習率可以選擇爲0.0001 ~ 0.0005 

3、提分技巧 

①LabelSmoothingCrossEntropy:使用標籤平滑損失函數可以防止過擬合,訓練發現使用CrossEntropy泛化能力會相對較差,加上標籤平滑泛化能力相對好一點,因子一般取0.1即可 

②ReduceLROnPlateau:訓練發現使用ReduceLROnPlateau學習率調整技術可以使得loss下降更加平滑,一般將驗證acc作爲評判標準,patience選擇3或者4 

③TTA:訓練發現使用測試時間增強技術,可以穩定提分0.06 ~ 0.2分,只不過測試時間會加長很多,通常使用五切測試增強即可 

④模型融合:訓練發現使用模型融合技術,可以提高測試效果,我這邊用到的是resnetxt101-32x8swsl和efficientnet-v3進行融合

本文爲作者在FlyAI平臺發佈的原創內容,採用知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議進行許可,轉載請附上原文出處鏈接和本聲明。
本文鏈接地址:https://www.flyai.com/n/131409

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章