kaggle自動駕駛競賽銅牌總結:Peking University/Baidu - Autonomous Driving—(Part 2)

Part 2、我在競賽中採取的一些方法技巧總結

1、思路分析
  • 參賽一貫的思路都是:參考Notebooks區大神提出的不錯的baseline,先弄清楚全部的代碼流程,具體哪部分完成什麼任務,哪兒可以嘗試其他的方法,做到心中有數。
  • 本次競賽中參考的baseline

有些金牌得主也參考了該baseline,當然僅靠baseline只能保證有一個基本的提交結果,接下來就需要不斷尋找創新點和得分點。

2、上分“利器”
  • 想要上分,一定要抓住 NotebooksDiscussion 區,在這裏,很多前排高手都會分享他們在競賽中採取的一些Tricks,你可以嘗試去實現這些方法,並提出你的問題,只要努力去嘗試就一定可以上分。
  • 此外,由於競賽方的限制,每天只有兩次提交機會並實時更新排行榜,所以很多人苦於不能及時檢驗自己的改進點到底有沒有奏效,這裏可以根據Local CV得分來進行線下的一個評估,感謝第4名大佬的評估腳本metrics evaluation script

我是選取訓練集的10%作爲驗證集評估,討論區有前排隊伍選取20%作爲驗證集,這樣或許線下map評估更準確一些,但由於我的數據增強部分效果不是很好,劃分驗證集太大,可能導致訓練集較少。

當然,如果你覺得大佬們採取的Tricks都“難以企及”,可以看看我的“一頓亂改”,現將我在比賽中採取的一些tricks總結如下:

Tricks Public LB
centernet-baseline提交 0.038
調參:調參的一些技巧可以多瞭解,因爲調參往往都是最簡單有效的,如Batch_Size、lr衰減、lr、Optimizier優化器等的一些選取都可以進行嘗試 0.042
Center-resnext50 baseline + centernet-baseline,確定自己的檢測框架baseline 0.048
數據增強:添加brightness、contrast色彩增強,高斯噪聲和翻轉,數據增強也是很能提分的一個點,但這裏只提升了一個千分點,有點難做 0.049
閾值的選取logits>-0.8,依據檢測結果圖片中車輛均數小於11,過大的閾值會造成虛警,過小會造成漏檢 0.055
數據清洗:移除訓練集中報廢的圖片,移除座標超出圖片邊界的汽車,把訓練集中座標帶mask的去掉,更新train.csv;根據train_masks和test_masks做了相應Postprocessing後處理,再進行姿態預測 0.060
採用Focal Loss取代原來的交叉熵誤差,解決正負樣本失衡問題,參考RetinaNet:Focal Loss for Dense Object Detection[3]中Focal Loss的定義,對標準交叉熵誤差乘上對應權重進行改進;此外,還嘗試了CenterNet[1]開源中的focal loss的方法 0.063
嘗試AdamW優化器,更有利於focal loss的收斂,Adam效果一般,選取lr=3e-4,之前看過一篇論文,驗證3e-4是最優的學習率,也可以根據損失曲線來不斷調整epoch和lr 0.063
先針對resnext50小網絡進行調優,最後嘗試大網絡模型下的檢測效果,採用resnet101,input size(1280x512) 0.067
增大input size(1500x678)resmet101 0.073
Ensemble模型融合:resnet101+ resnext50融合 0.077
3、未能奏效的一些嘗試

1、採用更大的 input size (2800 x 1265)。
2、採用更大的網絡模型resnet152,計算量大,參數量大,訓練慢,前提你得有好的硬件條件。
3、所有的訓練集圖片只有下半部分才包含車輛姿態信息,嘗試裁剪爲原圖的一半,送入網絡進行訓練,結果baseline中已經做了這樣的工作。
4、torch.optim.lr_scheduler中大部分調整學習率的方法都是根據e
poch訓練次數,此外,我還嘗試了 ReduceLROnPlateau,在給定Dev loss停止優化時減小學習率;OneCycleLR對整個訓練流程中的lr按照特定的曲線進行調整,目的都是爲防止過擬合,不過效果都不是很好。
5、CenterNet網絡中的一些方法很有效,Backbone:Hourglass和DLA在論文中也驗證了對姿態估計效果不錯,不過一直有Bug,程序沒調通,如果這個點調通了應該可以輕鬆提升到0.08。之前用CenterNet做了一個夜間老鼠識別的項目,DLA、Resnet、Hourglass這三個backbone都驗證對比過,確實hourglass效果很好,加上該競賽是車輛的姿態估計,應該可以取得不錯的效果。

強烈推薦大家學習一下CenterNet,現已開源。
想了解更多目標檢測網絡內容,可以參考前面的目標檢測系列博客,近期也會總結基於Anchor Free的目標檢測論文。

4、私榜結果分析

以上tricks都是基於Public LB的得分情況,最終的Private Leaderboard私榜最高得分爲0.071,分數有所下降,分析可能是存在過擬合的情況吧,畢竟私榜的評估得分來自91%的測試數據集,而Public LB只佔9%,前100名中很多隊伍在Shake-up中排名都有所波動。

最後,我會在近期將整理好的源碼上傳GitHub,感興趣可以作爲參考(雖然菜雞的我的源碼沒啥價值)如果有金牌得主分享了他們的開源,強烈推薦大家認真學習一下他們的一些方法技巧,另外,我會及時在該系列博客中更新金牌隊伍採用的一些實用技巧,歡迎大家一起交流。

5、References

[1] CenterNet開源地址
[2] CenterNet:Objects as Points. CVPR2019
[3] RetinaNet:Focal Loss for Dense Object Detection. ICCV2017

發佈了9 篇原創文章 · 獲贊 40 · 訪問量 8441
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章