從18年9月份到19年3月,歷時半年,共參加了5次kaggle比賽,都是計算機視覺類的任務,拿到了5個金牌(包括一個solo gold),順利成為了Competitions Grandmaster :)

Current Rank: 40 out of 101103

一、Kaggle五次比賽成績 (按名次排序)

  • 2nd in Humpback Whale Identification (2/2131, top 1%, Solo Gold Medal)
  • 4th in TGS Salt Identification Challenge (4/3234, top 1%, Gold Medal)
  • 8th in Airbus Ship Detection Challenge (8/884, top 1%, Gold Medal)
  • 9th in Human Protein Atlas Image Classification (9/2236, top 1%, Gold Medal)
  • 12th in Google Doodle Recognition Challenge (12/1316, top 1%, Gold Medal)
SeuTao | Kaggle?

www.kaggle.com

二、五次比賽介紹(按時間排序,記錄下5次比賽的過程)

1. TGS Salt Identification Challenge(4/3234)金牌 2018.10

TGS 鹽體識別挑戰賽,挑戰者需要開發出能準確分割地表以下沉積鹽分佈的演算法。地震數據是通過地震反射(reflection seismology)收集的,這種方法要求能量的受控震源(如壓縮氣體或地震振動器),以及記錄來自地下岩石界面反射的感測器。之後處理記錄的數據,創建地球內部的 3D 視圖。地震反射類似於 X 光、聲波定位儀和回波定位。

比賽任務:地震圖像語義分割

這是我第一次完整的Kaggle比賽經歷,堅持刷discussion,follow蛙神的實驗。比賽中後期一直保持著top5左右的名次,ddl前一度上了top1,最終public第2,private第4。金牌+獎金,一次Kaggle全體驗。

solution介紹:

[SeuTao@CHAN&Venn&Kele] 4th place solution(code updated)

代碼:SeuTao/Kaggle_TGS2018_4th_solution

關於本次比賽的一些詳細解讀可以參考 @AlexL 的文章,他們是這次比賽的第5名團隊:

AlexL:Kaggle TGS 鹽體分割任務第五名解決方案?

zhuanlan.zhihu.com圖標


2. Airbus Ship Detection Challenge(8/884) 金牌 2018.11

Airbus的遙感圖像分割檢測比賽Airbus Ship Detection Challenge,airbus也就是空中客車公司,懸賞金額6萬美金。航運流量增長迅速。更多的船隻增加了海上違規行為的機會,這迫使許多組織對公海進行更密切的監視。在過去的10年裏,人們做了大量的工作,從衛星圖像中自動提取目標,取得了顯著的效果,但在實際操作中存在許多不足。現在空中客車公司與kaggle共同舉辦比賽,尋求更好更快的船舶自動檢測方案。

比賽任務:從衛星圖片中找到所有的船隻

剛結束TGS比賽,此時距離Airbus deadline僅剩下不到一個月了,好在之前訓練了一個基礎的unet模型,同時把TGS的經驗遷移過來,敲定方案是unet語義分割模型+mask rcnn檢測模型,幾位隊友合力之下順利上升到了PB第2的位置。這題AB榜shakeup很大。最終我們team PB第5,private第8。Do not trust LB, trust ur CV!

solution介紹:Do not trust the LB, trust your CV. (5th/8th in public/private LB)

代碼:SeuTao/Kaggle_Airbus2018_8th_code

附:來自 @Pascal 的方案:

Pascal:Kaggle新手銀牌(21st):Airbus Ship Detection 衛星圖像分割檢測?

zhuanlan.zhihu.com
圖標

3. Google Doodle Recognition Challenge(12/1316)金牌 2018.12

這次比賽識別的是Quick, Draw! 遊戲的5000萬張塗鴉,它們由來自全球各國的超過1500萬玩家貢獻,畫得大多是一些蘋果啊,浴缸啊,計算器啊之類的日常用品。

比賽任務:靈魂畫手塗鴉分類

跟airbus比賽一樣,花了一個月左右的時間去完成。跟之前比賽認識到的夥伴們組成了8人小隊。賽題的數據量和需要的計算資源都很大,模型迭代的效率相對比較低。比賽結束之前也沒有太多有效的探索。有幸的是最終還是能夠private榜逆襲,拿下金牌的最後一名。

拿下這塊金牌之後,順利拿到了kaggle master頭銜 :)

代碼佔坑:SeuTao/Kaggle_Doodle2018_code


4. Human Protein Atlas Image Classification (9/2236)金牌 2019.01

多標籤蛋白質圖像分類比賽。數據極不均衡,且原始圖像尺寸較大。

比賽任務:蛋白質圖像多標籤分類

連續幾個月每天都用大量業餘時間來做比賽確實比較辛苦,拿到 kaggle master tier之後本來想著休息一段時間。本人本碩BME畢業,看到醫學圖像相關的主題異常親切,決定還是試一試蛋白分類比賽。跟隊友二人集成baseline結果之後,進入了金牌區(集成提升巨大)。之後就是加入了楊老師的隊伍:

楊佶Kulbear:Kaggle Human Protein Atlas 蛋白質分類比賽第九名總結和復盤?

zhuanlan.zhihu.com圖標

結果是public第19,private第9,金牌 :)


5. Humpback Whale Identification (2/2131)金牌 2019.03

為了幫助鯨魚保護,科學家們使用照片監視系統 (Photo Surveillance Systems) 來監視海洋活動。他們使用鯨魚尾巴這一獨一無二的標記來在連續的圖像中識別鯨魚,並對它們的活動進行細緻地分析。在過去的四十年裏,大部分工作基於科學家們的手工作業,這也使得大量的數據未被充分利用。5004個id鯨魚數據,其中許多id僅有one shot的數據。這是一個few shot learning和細粒度分類的問題。

比賽任務:座頭鯨識別

Kaggle Grandmaster tier要求5塊金牌,其中包括一塊solo gold,遂決定一鼓作氣嘗試solo,爭取拿下GM title。比賽時間比較充裕,面對的問題也是我相對熟悉的,很快成績就進入了前10。然而PB達到0.910之後,實驗一度沒有進展,名次在逐步下滑。急於打破僵局,嘗試了相關的各種方案,sota人臉loss,Person reid的模型結構,metric learning,pytorch下也重新搭建了siamese net的pipeline。然而嘗試得越多,導致每條路線實驗不夠充分,更難以得到提升。(後續比賽結果也證明,任何一條路線,工作足夠細緻,都是能夠在比賽中取勝的)冷靜下來還是回歸最初的方案,穩紮穩打,最終rank 2nd。

solution: 2nd place code, end to end whale Identification model

代碼: SeuTao/Kaggle_Whale2019_2nd_palce_solution

三、Kaggle參賽感受總結

  1. 關於成績:6個月連續五次比賽全部金牌,這是我開始做第一個比賽時沒有想到的,其中運氣也佔了很大成分。每個比賽的初期,我的預期都不會是一塊金牌(因為完全不知道會做成什麼樣),而是隨著比賽的進行,不斷提升對自己成績的要求(5%->1%->top10->top5)。
  2. 投入精力: 在做競賽之前,我的業餘時間主要是用來做一些自己的project和學習充電。參加kaggle競賽半年來,我把所有的業餘時間都獻給了這個平臺。週末,國慶,元旦甚至春節假期,幾乎都是在kaggle中度過,kaggle可以說成為了我的第二職業。
  3. 收穫回報:從學習角度來說,kaggle上我收穫了對不同問題,不同數據的認識,相關技能上也有不少提升;從榮譽角度來說,得到了多塊金牌,成為了Grandmaster,在平臺10w用戶中能夠排名top38(雖然對於很多大佬來說不算什麼);還能夠認識很多競賽愛好者,並且相互交流提升;最後,獎金也是一個很好的回報 :)
  4. 比賽與工作:比賽與工作的關係,像是訓練場與實戰。作為一個從業者,比賽給我提供了非常好的訓練環境,有非常多的新鮮問題和數據,在限制的條件下供我探索。在這裡我想說明的是,比賽成績好,決不能代表實際工作中能夠表現出色。但是反過來,一個演算法工程師如果不具備在競賽中得到好名次的能力,又怎麼能勝任實際工作呢?

推薦閱讀:

相關文章