一隻初學者,如何登頂野生動物識別挑戰賽?| 附代碼
原標題:一隻初學者,如何登頂野生動物識別挑戰賽?| 附代碼
原作: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:量子位 |