从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. 比赛与工作:比赛与工作的关系,像是训练场与实战。作为一个从业者,比赛给我提供了非常好的训练环境,有非常多的新鲜问题和数据,在限制的条件下供我探索。在这里我想说明的是,比赛成绩好,决不能代表实际工作中能够表现出色。但是反过来,一个演算法工程师如果不具备在竞赛中得到好名次的能力,又怎么能胜任实际工作呢?

推荐阅读:

相关文章