當前位置:
首頁 > 知識 > Kaggle 冰山圖像分類大賽近日落幕,看冠軍團隊方案有何亮點

Kaggle 冰山圖像分類大賽近日落幕,看冠軍團隊方案有何亮點

AI 研習社按,在日前結束的 Kaggle「Statoil/C-CORE Iceberg Classifier Challenge」(冰山圖像分類大賽)中,由 David Austin 和 Weimin Wang 組成的隊伍一舉拔得頭籌,獲得 25000 美元獎金。據介紹,他們的解決方案能有效應用於實際生活,保證艦船在危險的水域更加安全地航行,降低船和貨物的損傷,避免人員傷亡。

據 Kaggle 官網介紹,這次冰川圖像分類大賽是 Kaggle 上最火的圖像分類競賽——擁有史上最多參賽隊伍。而在所有數據競賽中,本次比賽熱度位列第 7。

不久前,外媒對 David Austin 進行了一次深入採訪,在採訪中,他們討論了以下問題:

冰山圖像分類競賽是什麼;

冠軍方案中的處理方法、核心演算法以及相關技術;

在競賽中遇到的最大的難題及解決方案;

對想參加 Kaggle 比賽的人的建議。

以下是具體的採訪內容,AI 研習社編譯整理:

圖 1:Kaggle 冰山分類挑戰賽的任務目標是建立一個圖像分類器,將輸入衛星圖像劃分為冰山或者船

問:你好,David,十分感謝你能接受我的採訪,也恭喜你們在冰山圖像分類挑戰賽中取得第一名的好成績。你是如何對計算機視覺和深度學習產生興趣的呢?

答:在過去兩年里,我對深度學習的興趣與日俱增。因為我看到人們利用它從數據中獲得了難以置信的結果。我對深度學習領域的前沿研究和實際應用都很感興趣,我認為 Kaggle 是一個非常棒的平台。通過比賽,我能保持對前沿技術的掌控能力,可以在合適的場景下嘗試新的技術。

問:你在參加這次比賽之前,在計算機視覺和機器學習領域的學術背景如何?你之前參加過其他 Kaggle 競賽嗎?

答:大概十年前,我首次接觸機器學習,那時我開始學習梯度提升樹和隨機森林相關知識並將其應用到分類問題中。近幾年,我開始更廣泛地關注深度學習和計算機視覺。不到一年前,我開始參加 Kaggle 競賽,這是提升技能的一種方式,本次比賽是我第三次參加 Kaggle 競賽。

圖 2:冰山

問:能再談談冰山分類挑戰賽嗎?是什麼驅使你參加了本次比賽?

答:冰山分類挑戰賽是一個圖像二分類問題,這個比賽要求參賽者在衛星圖像中將船和冰山區分開來。這項工作在能源勘探領域尤為重要,它讓我們能夠識別並且避開類似浮冰這樣的威脅。

本次比賽的數據有兩個特別有意思的地方:

首先,數據集規模相當小,訓練集中只有 1604 張圖片。這樣一來,從硬體的角度來說,參與競賽的門檻很低。然而,另一方面,使用有限的數據完成圖像分類任務又是十分困難的。

其次,如果用肉眼去觀察這些圖片,它們看上去就像電視屏幕上出現的「雪花」圖——一堆亂七八糟的噪點。人類用肉眼完全不可能看出來哪些圖像是船,哪些圖像是冰山。

圖 3:人眼很難準確判斷輸入圖片是「冰山」還是「船」

要讓人類僅憑肉眼準確地區分圖片類別十分困難。我認為這是一個很好的契機——測試深度學習和計算機視覺能夠做到人類做不到的事情。

圖 4: 冠軍團隊採用集成的卷積神經網路結構

問:接下來,讓我們討論稍微技術性一些的問題。能介紹一下你們優勝策略中所使用的數據處理方法、演算法和相關技術嗎?

答:好的,總體上我們的數據處理方法和大多數傳統的計算機視覺問題中所使用的方法很相似。我們都會事先花費一些時間去理解數據。

使用無監督學習方法是一種我最喜歡的技術,通過學習這些模式,我們可以決定接下來將要使用什麼樣的深度學習方法。

在這個任務中,標準的 KNN(K 最近鄰演算法)就能夠識別出幫助定義模型結構的關鍵信號。我們使用了一個十分龐大的卷積神經網路結構,包含超過 100 個改造過的卷積神經網路和類似於 VGG 的結構,然後我們使用 greedy blending 策略和兩層結合了其他的圖像特徵的集成學習演算法將模型結果融合起來。

這聽起來是個很複雜的方法。但是請記住!這裡的目標函數是要最小化對數損失誤差。在這個任務中,我們僅僅像這樣加入了一些模型,因為它們能夠在不發生過擬合的情況下減小對數損失。所以,這又是一個很好的例子,說明了將許多弱機器學習模型集成之後的威力。

我們最後再次訓練了許多和之前一樣的卷積神經網路結構,但是這裡我們僅僅是使用了一開始通過無監督學習挑選出的原始數據的子集作為輸入,這同樣也提高了我們模型的性能。

圖 5:過擬合是它們在本次比賽中遇到的最棘手的問題

問:對於你們來說,本次比賽中遇到的最大難題是什麼?

答:在比賽中最困難的部分當屬驗證模型沒有過擬合。

說實話,這個數據集對於圖像分類問題來說是相當小的,所以我們擔心過擬合會是一個很大的問題。為此,得確保所有的模型都要經過4折交叉驗證,儘管這會增加計算開銷,但是卻能降低過擬合的風險。尤其是在處理像對數損失這樣非常嚴格的損失函數時,需要時刻注意過擬合問題。

問:訓練模型需要花費多長時間呢?

答:儘管我們選用的卷積神經網路規模巨大,並且在所有的模型訓練過程中都使用了4折交叉驗證,訓練過程僅僅花費了一到兩天。沒有交叉驗證的單個模型可以在幾分鐘內完成訓練。

問:如果要你選出一項本次比賽中你所使用的最重要的技術或者小竅門,你會選什麼呢?

答:毫無疑問,最重要的步驟當屬預先進行的探索性分析,從而對數據有更好的了解。

探索性分析的結果表明,有一個圖像數據之外的特徵中非常重要,它能夠幫助消除數據中大量的雜訊。

在我看來,我們在計算機視覺或者深度學習問題中最容易忽視的步驟之一,就是需要事先理解數據,並且利用這些知識幫助我們做出最佳設計選擇。

現成的演算法如今更加易於獲得和引用,我們往往會不假思索、簡單粗暴地將這些演算法應用於待解決的問題上。然而我們卻沒有真正想清楚這些演算法是不是這一任務的最佳選擇,或者沒有想清楚在訓練之前或之後是否需要對數據進行一些適當的處理工作。

圖 6:優勝解決方案用到了 Tensorflow、Keras、XGBoost 框架

問:本次比賽中,你選擇了哪些工具和程序庫?

答:就我個人而言,我認為 TensorFlow 和 Keras 是最好用的,因此在處理深度學習問題時,我會傾向於選擇它們。

至於 stacking 和 boosting 兩種集成學習方法,我使用 XGBoost 去實現,這也是因為我對它很熟悉以及它已經被證實有好的運算結果。

比賽中,我使用了我的 dl4cv 虛擬環境(這是計算機視覺深度神經網路中用到的 Python 虛擬環境),並且將 XGBoost 加入其中。

問:對於初次參加 Kaggle 競賽的新手們,你有什麼好的建議嗎?

答:Kaggle 有著很棒的社區文化,其上的比賽是依靠這個機制運行的。

社區中有很多供選手進行討論的論壇,也有各種各樣討論的方式。如果參賽選手願意,他們可以將自己的代碼分享出來。當你試著學習通用的方法並將代碼應用於具體問題上時,這將十分有幫助。

當我第一次參加 Kaggle 比賽時,我花了幾個小時仔細閱讀了論壇中的文章以及其它高質量的代碼,我發現這是學習的最佳途徑之一。

問:下一步的打算如何?

答:目前我手頭上有很多項目要去做,因此我將會忙上一段時間。還有一些 Kaggle 比賽看上去十分有趣,所以之後我很有可能再回來參與到其中。

問:如果讀者想要和你交流,你的聯繫方式是什麼呢?

答:最好方式的話,在我的 LinkedIn 用戶資料中有寫到。大家同樣可以通過 LinkedIn 聯繫 Weimin Wang。同時,我會參加 PyImageConf2018,如果大家想要和我當面交流,那時候可以來找我。

via PyImageSearch

計算機視覺基礎(從演算法到實戰應用)班

限時拼團,最後1天

已有100+人參加了此拼團

最高每人優惠200元!

新人福利

關注 AI 研習社(okweiwu),回復1領取

【超過 1000G 神經網路 / AI / 大數據資料】

Kaggle 大神 Eureka 的高手進階之路

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

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


請您繼續閱讀更多來自 AI研習社 的精彩文章:

用Numpy 實現簡單的 GAN
用Pytorch 實現的 Capsule Network

TAG:AI研習社 |