當前位置:
首頁 > 寵物 > 一隻初學者,如何登頂野生動物識別挑戰賽?| 附代碼

一隻初學者,如何登頂野生動物識別挑戰賽?| 附代碼

原標題:一隻初學者,如何登頂野生動物識別挑戰賽?| 附代碼


原作:Abhishek Sharma


栗子野 編譯整理


?


?


最近,HackerEarth舉辦的一項初學者深度學習挑戰賽,落幕了。


比賽內容是,識別野生動物


來自印度的本科生Abhishek Sharma登上了冠軍寶座。


?



?


於是,他寫了寫自己的心得,給小夥伴們參考:


怎樣的挑戰


比賽數據集里有19,000張圖,包含30個不同物種的野生動物。

?



?


來自比賽數據集


動物的照片是在真實場景里拍攝的,姿勢不同,背景複雜,光線、天氣條件、視角、遮擋情況也不同。


比起這些容易造成混淆的因素,有些不同的物種,看上去並沒有那麼大的差別。


哪個類別的預測概率最高,圖像就分給哪個物種。


評估指標:分類器的logloss


怎樣上手


拿到任務之後,要做的第一件事就是去看,以前有沒有類似的問題,前人方法能不能借鑒。

少年發現,比賽數據集和ImageNet有不少交集。


?



?


ImageNet數據集里的一些栗子


那麼,怎樣利用它們之間的異同來改進現有的方法?


首先,本次任務里的未知 (Unknown) ,和ImageNet是非常相似的。


所以,可以用遷移學習,拿CNN做初始化或者做固定特徵提取器。

遷移學習論文:


https://arxiv.org/abs/1411.1792

一個區別在於圖像尺寸,ImageNet裡面的圖像都是224 x 224像素,而動物識別任務里,圖像要更大一些


因此,要改進演算法來處理大圖。


熟悉問題之後,就先搭建一個簡單的pipeline:從載入數據集,到訓練,到驗證。可以迭代幾次。


怎樣防止過擬合


?



?


可愛的過擬合


19,000張圖像裡面,有13,000張屬於訓練集,餘下6,000張是測試集。


數據集並不是很大,為了避免過擬合,少年做了以下幾種嘗試:

數據擴增


就是通過旋轉、翻轉、裁剪等這樣簡單的操作,把一幅圖變成幾幅。


這裡,用了transforms_side_on隨機旋轉,翻轉,還調了光。

數據擴增論文:


http://cs231n.stanford.edu/reports/2017/pdfs/300.pdf

學習率

深度學習網路里,最重要的超參數就是學習率


?



?


程序猿用的是lr_find的方法,是fastai庫裡面提供的,用來找最優值。

這個方法是Leslie Smith提出的:剛開始訓練的時候,學習率設得很低,然後給每個Batch的學習率做指數增長

Smith論文在此:


https://arxiv.org/abs/1506.01186

訓練用的圖像尺寸是324 x 324,因為這些圖像在驗證集上表現比較好。


少年也嘗試了不同的批尺寸 (Batch Size),試到32的時候,GPU存儲到了上限。然後,他就為學習率做了相應的微調。

學習率vs批尺寸:


https://miguel-data-sc.github.io/2017-11-05-first/

擴大圖像尺寸

用小圖訓練幾個Epoch之後,就可以換大圖 (450 x 450) 再持續訓練幾個Epoch。


這也是防止過擬合的一種不錯的方式,在少年的logloss身上,產生了明顯療效。


?


?


各種模型合起來


少年訓練了各種模型,比如resnet50,resnext101_64,inception_4,restnet152以及restnext101。然後,把它們給出的結果用加權平均整合到一起,就獲得了榜首的高分。


哪些做法沒有用


一是,受到下面這個Kaggle內核的啟發,程序猿做了些圖像相關的統計數據(Image Related Statistics) 。


但是,在把各種網路結合在一起的時候,這些統計就減分了。

Kaggle Kernel傳送門:


https://www.kaggle.com/greenmtn/xgb-starter-lb-0-88232/code

二是,在瓶頸特徵(Bottleneck Features)上訓練邏輯回歸 (Logistic Regression) 。瓶頸特徵,是進入全連接層之前,卷積層輸出的最後結果。

這個方法,在Kaggle狗狗品種識別挑戰賽里,效果很好,但在這裡就不太行。


?



?


印度少年說,大家一定要嘗試從各種不同的角度來看問題,不要放棄。


雖然獎金沒多少……


HackerEarth是一個編程技能的線上評測系統,也舉辦過許多編程比賽。


?



?

雖然,有些比賽獎金並不豐厚。不過,據說比賽成績好的選手可能獲得名企的推薦資格。


野生動物識別挑戰賽傳送門:


https://www.hackerearth.com/en-us/challenge/competitive/deep-learning-beginner-challenge/


第一名的GitHub傳送門:


https://github.com/numb3r33/identify_the_animal


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

Waymo無人車設立中國全資子公司,取名慧摩,與谷歌上海同樓辦公
別的AI還在打遊戲,這個AI已經當上「超級馬里奧」遊戲策划了

TAG:量子位 |