天天看點

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

最近,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是一個程式設計技能的線上評測系統,也舉辦過許多程式設計比賽。

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

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

原文釋出時間為:2018-09-4

本文作者:關注前沿科技

本文來自雲栖社群合作夥伴“

量子位

”,了解相關資訊可以關注“

”。

繼續閱讀