欢迎光临散文网 会员登陆 & 注册

0基础入门kaggle比赛要知道它不止能拿奖还能发论文!

2022-08-16 17:32 作者:深度之眼官方账号  | 我要投稿

来源:原创 作者:Frank老师&学姐

编辑:学姐

直播视频回放

https://www.bilibili.com/video/BV1WS4y1x7CQ/

文末9.9购kaggle经典往期赛活动正在进行中!不要错过!!!

比赛的组织者

一般来说比赛一般两都是由两个组织者来举办的,要么是公司,要么是一些大学。

公司组织

那么如果从公司角度来说的话,举办比赛无非就是三个目的:

  • 第一个就是他们希望通过奖金的方式来寻找业务痛点的解决方案。一般来说的话是当它们在自己的业务中发现了一个难以解决的问题,因为他们的算法工程师可能能力不太行,所以他们就拿出一部分的奖金来,希望在社会上通过打比赛的方式公开的去寻求解决方案。

  • 第二点就是说有的公司为了去提升自己的影响力,为了去能去参加某项业务,比如说有的公司尤其是有一些非常大的云服务厂商,他们可能通过一些比赛的方式让来去寻找到自己的一个业务合作方。

  • 第三点就是说像腾讯,包括阿里他们举办的比赛,一般前10名的话都会给你设置特殊的一个招聘。绿色通道的,一般来说的话,你如果在一个比赛中获得前5名或者是前10名,要么你可以直接去参加他们的校招面试,不需要笔试,要么就是可以去直接过去实习。

学术界

对于一些学术界举办的比赛,我们大家非常熟悉的imangenet.coco等。

斯坦福的李飞飞老师在11年左右,大概10年开始就举办了imagenet的竞赛, 从10年一直到18年19年截止。

我们熟知的比如说12年的Alexnet16年的restnet,包括最近的18年的densenet,就是这个imagenet比赛推动了整个深度学习领域的一个发展。

包括后面的大家可能对目标检测领域的Coco数据集比较熟悉的话, Coco其实就是Microsoft举办的一个比赛里面推出来的一部分的数据集,在他们学术界推出,花这么多的人力物力去采集数据集,举办比赛目的是希望通过一些模型的突破来推动我们这一个学科的影响力。

打比赛的好处

我们可以看一下右图,kaggle第一名,有12,000美金。 下面是一个比赛的介绍,这是最近结束的一场比赛,由深度之眼组队我们讲解的kaggle肠胃分割比赛,第一名其实就是来自我们深度之眼的同学。

得的第一名的同学其实在深度之眼已经参加了非常多的比赛了,从前年开始到今年不断学习积累打到了一第一名。

这个队伍中的另外一位同学他是一个大二的本科生,就是跟第一刚才我们提到的已经工作同学合作,一起完成了我们刚刚结束的kaggle常规比赛的第一名,也获得了接近1万块的奖金。

而且如果是在比赛参加比赛的过程中得到优秀人才的话,一般可以得到校招及实习的一个绿卡直通部门面试。 也有可能对申请博士的有非常大的帮助,尤其是参加刚才讲学术界的数据集比赛。

比赛平台有哪些

通常的比赛平台我们就简单分为4个

  • 第一个就是kaggle这个平台,这个平台是世界级的。

  • 第二个平台就是天池,天池主要是针对国内,而是阿里云举办的。

  • 第三个可能大家没有听说过它叫codalab,这个平台主要是一些非常不错的会议,比如说cvpr,eccv,iccv。

举例:

某些会议在开会期间要举办Workshop,里边某一些大学的老师或者是一些公司拿出来数据集来去在workshop举办一个workshop的比赛,扩大影响力。

当然对于这种workshop的比赛,他也可能会到kaggle或者是天池比赛平台上举办

在去年深度之眼,我参加带的一个比赛是《小麦检测和分类》,其实就是前年ecCV2020的一个workshop,当时其实有两位同学他的成绩不是特别好,基本上可能是银牌稍微往后。但是eccv上的workshop它基本上是可以投论文的,他们最后都把自己的一些solution解法写成了paper,去投中了ecCV2020的workshop的paper

我们知道对于发论文来说的话,分为full paper长paper正常的是12~14页的paper,也有short paper上的paper,可能就是某一些额外的像CIKM或者是一些NLP的会,它有short paper

另外就是workshop paper, workshop paper主要又分为两部分:

  • 第一部分它其实来自于一些workshop举办的比赛,有的同学想去分享一下自己的solution,然后写成了paper。

  • 另外一个就是说我觉得我的这项工作可能目前来说还投不了cvpr但是我不想让别人去抢占了,我这个idea他可能就是来占坑的,把自己的想法写一写,先投到一个workshop里面,后面再过几个月等自己的整个想法完善了,再去投一个更好的会议。

这经验总结是在前年深度之眼这边也就是当时带的一个eccv的2020的论文比赛的一个积累,当然那场比赛也有不少同学拿到了银牌,我当时是那一场比赛的助教。

  • 第四个平台datafoundation,是一个国内非常小众的一个平台,但这个平台承接着ccf。ccf其实就是国内的一个计算机组织,相当于IEEE是美国的一个计算机组织,ccf平时也是举办非常多的比赛,一般都是放在datafoundation这个平台里边的。

我们从哪里可以知晓比赛

首先我们第一个可以通过链接:https://aideadlin.es/?sub=ML,CV,CG,NLP,RO,SP,DM,这个链接其实就是计算机各个会议期刊,比如说我们常知的cvpr,eccv,iccv,还有一些NLP、ML、机器人等各种方向的会议。

一般来说在会议会有投稿截止日期,一般来说投稿截止之后的一个月会议就会发布workshop的比赛。 大家也可以这样去关注一下,另外一个大家也可以关注一下【学姐带你玩AI】的推送,公众号会推送一些最近要举办的一些比赛的baseline。

通过比赛我们能得到什么

业务代码基础

大部分比赛其实就是公司拿出一部分钱来去让大家去寻找solution写一些业务代码。

这也就是说我们可以通过比赛去学习的一些工作技能, 这类比赛的内容,其实就是我们以后要去做的一些业务方向的代码,我们就可以顺便就做一些业务方向代码的储备。 说白了就是我们通过比赛,去丰富我们的技能域,也为以后的更好的面试打下基础。

科研论文

对于科研向的同学来说,我们可以看一下图,就是我们20年带的wd比赛-全球小麦检测比赛,这个比赛前面说到过它其实是ecCV2020的一个workshop比赛,这个比赛你看可以投paper,如果你想去写paper的话,可以去把自己的想法写成一篇论文来投出去。

workshop paper其实相比于eccv的full paper,它其实还是比较容易的,有这种机会的话大家一定要把握住。

上图是在招聘的时候大家经常看到的,一些公司去招聘算法工程师,他们一般会加上一句“有积极学习深度学习相关项目落地经验”,这句话所需的能力大家可以去通过实习去获得。

如何把一个项目落地,就是训好了模型,我怎么把模型放到一些端侧的设备?一般我们在NVGPU上训练,推理了后可能是要放在某些英特尔芯片或者一些arm芯片上。

上图中后半部分就是说在kaggle上取得优异成绩者优先,就是说如果你在kaggle取得了优异的成绩,一般来说的话就会锻炼出解决问题的能力。kaggle成绩这也是你简历里的某些inside。

这里我们重点介绍一下kaggle的晋升系统

对于kaggle系统来说的话,它其实有5个等级,你参加了第一场比赛提交之后,你的等级会晋升到contribute

如果你在kaggle里面拿到两场比赛的一个铜牌,你就是成为了kaggle expert(kaggle专家),如果你在kaggle里面拿到了两个银牌加上一个金牌,你的职称title就是kaggle master

而如果你在kaggle比赛里边拿到了5个金牌,并且你自己solo,没有组队去拿到一场比赛的金牌,那么你的称号就成为kaggle grand master

据我了解你如果是kaggle grand master,从比赛收益上来说的话,你至少已经赚了有10万美金

kaggle GM在大厂,比如说腾讯字节,它其实都有特殊的招聘通道的,基本上你如果有能得到一个GM称号的话,在腾讯年薪据我所知是不低于70万的。

举个例子:

上面讲的得到第一名的那位同学和其他两位深度之眼的同学,他们之前也有好几次银牌的积累了,这次的肠胃分割比赛,他们拿到了一块金牌,那么他们从kaggle expert晋级成为了kaggle master。

包括深度之眼肠胃比赛的那两个小助教。一个小助教,他其实刚高考完,他其实有差不多10块kaggle奖牌了,基本都是银牌为主铜牌为辅。另一个小助教,他是今天刚上大一,他也有两块kaggle银牌了。

就是说:大家通过kaggle比赛,不只是能学到的一些通用的比赛技巧,也间接的为自己以后未来的一个升值之路打下一个基础。

因为你去公司毕竟是要去干活的,需要为公司盈利的。Kaggle这种晋升的体系,你如果等级越高,就说明你解决问题的能力它其实是越强的。 当然这个也是需要时间的积累的,我们刚才讲到的肠胃分割比赛的第一名那个同学,他其实在深度之眼比赛班学习不断打比赛打了一年多了。 他电费都花了好几千块,然后自己也买了3090。大家也可以把这个kaggle比赛当成自己的一种爱好,不断的去进步。

如何入门kaggle

其实对于kaggle比赛来说的话,它其实不是非常的复杂。从我自身角度来说的话分为两方面:

代码能力

代码能力方面主要分为两部分:

  • 第一部分就是模式性learningdeep learning框架。我们以pytorch为主,大家一定要学会如何用pytorch进行构建数据模型,优化器损失函数等。

  • 另外一个就是各种各样的Python包,这无非就是Sklearn包pandas包等,大家要具备如何去洗数据的能力

    比如说再给你一批数据,你如何去把这个数据去读进来,组织成我们这些框架需要的一些形式,也包括通过pandas数据分析工具,去分析一下数据的一些特点。

举例

拿肠胃分割比赛来举例,对于比赛来说的话,我们通过数据分析发现,比赛的目的是要识别出一张切片里边的一张CT图片里面的大肠小肠和胃,这样的话定位出这些器官来之后,那些医生去发射X射线去杀细胞的时候,它其实就会避免去伤害到健康细胞。

因为你知道我们去做癌症化疗的时候,其实是非常耗时的。一个病人,要花费两个小时,大部分时间都要是医生需要去避免我们这些射线去杀死健康细胞。

然后对于我们训练模型来说的话,我们发现其实有非常多的数据特点,通过pandas或者是通过一些可视化的那些包解决。

我们发现比如说有的人他其实非常胖,有的人非常瘦,这就导致了有的人的切片CT出来的非常宽,有的人非常窄,因为我们是要训练模型,我们一定要去让模型考虑针对我们这个人的一个胖瘦的切数据的一个鲁棒性, 我们可以比如说可能去做一些针对性的数据增强。

另外一个我们也可视化数据,发现我们比赛提供的数据,它其实就是一个时间序列的数据,正常来说我们输入到一个比如说计算机视觉类里边,我们输到一个模型里面,它是三通道的图片,其实对于CT图像来说的话,它其实就是一个通道的,我们普通来说拿过来的话,可能就是我们一个通道复制三份。

对于我们分析出来的可视化,发现它其实有个时序关系, 我们可以把这张切片的前一秒和后一秒一后一个时刻切片,当成我们3G通道来输入到,这样的话就间接来提高了我们整个切片的一个鲁棒性,这样的话其实也是能提高我们模型学习参数的一个申报性的作用。

这就是我们为什么要去学习各种各样的Python包去进行数据分析的一个原因。

论文检索学习能力

也拿常规分割比赛来举例,当我们发现了一些问题,我们就需要要看最新的那个分割论文,大家可能比较熟悉unit,其实unit它其实就是6年前的论文了,它是16年发布的,最近的分割论文的SOTA是什么?这就需要大家要学会怎么来去定位检索相关的论文。

我给以Google scholar为例的话,大家如果找到我就拿resnet为例,你看这是resnet它其实有12万的引用,引用的意思就是说我resnet这篇论文我挂到了Google school了,挂到了arxiv上,之后有非常多的改进论文,这些改进的论文到今天为止一共有127,408篇。你点开被引次数,看一下2022年以来,针对resnet的改进有哪些论文。

论文它其实就是解决了某一个问题

比如我们在拿resnet为例,它其实解决的就是一个随着网络重塑加深,观察到,到最后几层的时候,我们梯度它就是传不过去,相当于我有100层到后面几层的时候,学习到的feature,就说明梯度已经消失了。

观察到这个现象之后,就想去解决这个问题,他就设计了一系列的残差,来去引导我们披露的一个传播,包括后面若干的一个改进。

大家也看到直到2022年还有很多人去引用这个论文,当然它不一定去改进resnet,它有可能是总结了一下resnet干了什么事情,在他论文里面去提了一下resnet

另外一个就是说对于常规分割来说的话,我们在数据集里面也观察到了,它其实也可以用3D模型的事项。

拿肠胃分割比赛来说,它提供的数据集是同一个病人在一天之内的不同时刻去拍的CT图像,那么我们可以自然而然的去想到,如果我把这些同一时刻的那些CT图像我们叠起来,我们知道一张图片的话,大家可以看到的时候它其实是一个宽高的,一张图片我们形容一张图片是hw宽高。

那么有一个很最简单的三维的话,就是我一个摄像相机去拍一张图片的时候,其实有一个图片距离一个相机的远近关系,这个远近关系我们可以设为一个depth深度,那就是h不只有hw它还有个d它这其实就是构建一个最基本的3D图的数据集。

如果说我们把同一个病人在同一天内不同时刻的图片给叠加起来,那么是不是我们可以构建出来是一个病人的3D的数据集

当然我们也要用若干的差值的方法,通过3D数据集我们再去做我们整个人体的一个分割的话,它其实能解决我们2d图片上位置相关联系的鲁棒性。

比如说我们可以想象到一个人的一个肠胃,它其实并不是一个切片是直拉上去的,它可能是歪曲歪曲的,再来看我们的肠胃比赛的话,我们也可以把3d和我们前面讲的就是同一个切片,不只是复制三份,我们改为前1:后1:00刻叠加,我们单写成为2.5d通过这两个数据来进行设计模型,然后来融合结果的话,其实效果来说的话就是非常好的。

这就是我去想去跟大家讲的另外一个点。检索学习的检索就是第一个就是代码能力,通过各种Python包去发现这个问题。另外一个就是我们2.5d和3D首先这个模型是什么?2d3d的模型分割模型有什么?

我们就可以在google上去搜一下,3D Segmentation有大家可以搜到一些3d分割的模型的信息。

另外一个就是我们再拿肠胃分割比赛来举例,我们可以知道对于一张图片来说的话,你可以想象到一个医生在看一张图片的时候,他其实是重视着这张图片去看的,有时候你这个角度他其实并不能看到一些病变的位置。

大家去医院的时候,可能发现有的医生他可能喜欢把那个片子给翻转一定的角度来看这个片子,这有一个叫multiview多视角概念。我们自然而然的就可以想到可不可以通过多视角来提高我们预测的视角鲁棒性。

我们就可以在google scholar去搜一下multiview segmentation的一些论文。搜到一些相关的发到非常不错会议上的相关论文呢,我们要去借鉴出来,用到我们这个比赛上。

通过以上例子可以得出:通过kaggle比赛确实逻辑思维能力和解决问题能力得到锻炼和提升,一个比赛我们要设计的若干个解决方案,这样能快速的去成长,就能学习到一些东西。参加比赛的一个目的就是不断的去学习,当熟悉流程和方法之后了之后,才会在打比赛的时候有自己的想法。

9.9拼团购往期赛规则

参加此次活动的往期赛

其他比赛资料

35场往期赛baseline:

https://deepshare.feishu.cn/docs/doccnnphtBQpRxE9NnMj8aQXhbM

0基础入门kaggle比赛要知道它不止能拿奖还能发论文!的评论 (共 条)

分享到微博请遵守国家法律