您正在使用IE低版浏览器,为了您的FUTUREAI账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
FUTUREAI 开发者
发私信给FUTUREAI
发送

6 次 Kaggle 计算机视觉类比赛赛后感

本文作者:FUTUREAI 2018-06-09 20:03
导语:一、我的成果 第2次 Carvana Image Masking Challenge 排名: 12th of 735 ⋅ Top 2% ⋅ 人物:前期单刷,后来底子上由女朋友完结。 第四次 Statoil/C-CORE Iceberg Classifier Challenge 排名: 28th of 3,343 ⋅ Top 1

一、我的成果

第2次 Carvana Image Masking Challenge
排名: 12th of 735 ⋅ Top 2% ⋅ 人物:前期单刷,后来底子上由女朋友完结。

第四次 Statoil/C-CORE Iceberg Classifier Challenge
排名: 28th of 3,343 ⋅ Top 1% ⋅ 人物:打酱油。队长是孙鹏。

并排第五次 Google Landmark Retrieval Challenge
排名: 22th of 218 ⋅ Top 11% ⋅ 人物:单刷。底子上只用 landmark recognition 竞赛的代码跑了一下,没有进行调参等测验,彻底是投机取巧。

以上就是我的悉数竞赛阅历。

Kaggle 的竞赛使命大致都是依据已知信息,对测验集里的数据进行某种猜测。按照干流方法是否涉及到 deep learning 来分,大约有两种竞赛:

House Prices: Advanced Regression Techniques

Two Sigma Financial Modeling Challenge

Instacart Market Basket Analysis

Mercedes-Benz Greener Manufacturing

例1:我的同学孙鹏,用笔记本上的 980M。

例3:一个 ID 为 ImageRecog 的 Kaggler,宣称用笔记本打竞赛,在 Google Landmark Retrieval Challenge 中赢得第三名。(不确定后期有没上更强壮的硬件。)

许多 Kagglers 对这两类竞赛之一表现出了显着的偏好。砍手豪由于短少用来练习神经网络的硬件,而倾向于参与 A 类竞赛(拜见:《零根底自学两月后三月三次轻松进入kaggle竞赛top20小结》)。而我自己迄今参与的都是 B 类的竞赛,原因是自己习惯于处理核算机视觉类的使命,而对传统 machine learning 使命尤其是时序猜测方面了解比较少,不想进去垫底。如此一来 Kaggle 上好像存在着两个不同的国际。A、B 类竞赛都很投入地去参与的人当然也是存在的,仅仅据我所见大部分人都倾向于参与其间一类。

参与 Kaggle 竞赛是怎样一种体会? - Naiyan Wang 的答复 - 知乎 

零根底自学两月后三月三次轻松进入 Kaggle 竞赛top20

Kaggle 入门攻略

随机森林——完成 Kaggle 排名 Top2% 的利器

B类竞赛的文章/答复则少得多,例:

我在 Kaggle 數海獅

我希望本文能够对关注 B 类竞赛的 Kaggler 供给一些参阅。

有人说 Kaggle 竞赛全靠套路。这句话隐含的意味是要想在 Kaggle 上获得好成果,靠的是套路而不是才智和创意,或许靠的不是真实的技能。假如去杠的话,咱们也能够说发 paper 也是靠套路。但我想,即便真的是靠套路,也未必是一件彻底的坏事,套路中也能表现高下之分,套路中也能表现出才能的强弱吧。许多 Kaggler 的成果都是比较稳定的。比方 bestfitting 连续在 6 个竞赛中得了 Top 3。比方 Fangzhou Liao 四次参与竞赛悉数都是冠军。而我大部分时刻都进不去 Top10,也从未出过 Top30,大约是由于我总也没参透 Top10 选手的套路,而排名 30+ 的参赛者总也没参透我的套路吧。

1. 在Carvana Image Masking Challenge 中我的榜首个 baseline 模型是 Unet,而且图省劲用的是 pytorch-CycleGAN-and-pix2pix 中的 Unet。为了从速跑出个成果我把图片从大约 1000x700 缩小成了 256x256 巨细。没有通过任何调参的榜首次提交成果是(Private Leaderboard) Dice coefficent = 0.985517,竞赛完毕时这个成果能够排到 top 72%。把图片巨细改成 768x512 之后,未经任何其他修正,成果是 coefficent = 0.995050,竞赛完毕时能够排到 top 53%。

3. 在 Google Landmark Recognition Challenge 中我的榜首个 baseline 模型是 ResNet50,榜首次提交的成果是 GAP = 0.115。我后来在评论区把这个模型的练习公开了,即便如此,这个成果在竞赛完毕时竟然也能够排到 Top 14%。我的第二个 baseline 模型 DELF 成果是 GAP = 0.203,竞赛完毕时能够排进 top 4%!

5. The Nature Conservancy Fisheries Monitoring 是个 two-stage 竞赛,两个 stage 用的测验集不同,而且 stage 1 的成果已被主办方清空所以我无法判别咱们榜首个 baseline 模型能够在终究的 leaderboard 上排第几。

以上阅历标明,只需挑选了与使命相对应的 state-of-art 模型,在代码无 bug,没有试验设置错误的状况下,排进 Top 50% 乃至 Top 15% 难度很小。那么别的的 50%~85% 的参赛者出了什么问题呢?我猜可能原因有如下几种:

例:想强行套用mnist分类的方法来处理 image retrieval 问题

譬如说由于喜爱用 Keras 或许 Keras 刚入门而只用网上找得到源码的基于 Keras 的模型。

例:由于硬盘小或网速慢而下载缩小几倍的图片替代原图来进行练习的

5. 试验设置有问题。比方存在逻辑错误或许参数有严重问题。

至于说为什么有 50%~85% 之多,假如说不是向来如此,也许是最近几年 Kaggle 更火了,入门者也更多了吧。我上一年(2017)在国内现已发现许多人在求职简历里写 Kaggle 竞赛阅历。至于 Kaggle 竞赛阅历对求职有多大优点我还不能确定。值得一提的是,我在参与榜首次竞赛感觉坚持不下去的时分,是看了 @lau phunter 的帖子坚持下去的:

尽管水涨船高,总之有人认可是功德。

1. 一个网上常常被评论的论题,就是“paper 重要仍是竞赛成果重要”。我想,能考虑这个问题的人并不适用那种很极端的状况:例如 ILSVRC(Imagenet) 假如能得榜首天然也能把方法发到顶会上去。——ILSVRC 能得冠军的人底子不会疑惑这种问题吧。

而平常人真实简略面临的状况是,发顶会 paper 被拒或许底子写不出来,参与竞赛成果不算优秀或许被吊打。我以为一个人假如花时刻能够换来顶会一作,那么不参与 Kaggle 也没有什么惋惜。

Kaggle 还有一大特征就是实时的 leaderboard,非常严酷。假如你什么都不做,你的竞赛名次只会下降。这会形成一种心思的刺激,给你压力/动力让你改进模型——当然这也是一种精力摧残。

还有就是会知道许多志同道合的网友,这一点不展开评论了。

1. 每场竞赛会有多少人参与?

另一个决议参与人数的首要要素是使命的杂乱程度和生僻程度。纯分类使命比较受欢迎,其次是语义切割等使命。这些比较受欢迎的使命特征是门槛比较低,网上找得到许多现成的代码和模型(如 VGG、ResNet、Unet、SegNet),会调库无需深化了解原理乃至可能不必调参就能跑出像模像样的成果。(由于比如图片分类等使命门槛特别低,以至于被某些人作为 AI 从业者的黑点。对此类黑点的情绪不在本文的评论规模。)Google Landmark Recognition Challenge 和 Google Landmark Retrieval Challenge 数据集巨细简直相同,由于 retrieval 问题的门槛相对比较高,后者的参与部队数不到前者的一半。而 NIPS 2017: Targeted Adversarial Attack 这个对立攻击使命,只需 65 队参与。

由于我抱以上述观念,清楚明了我个人垂青肯定排名胜于 Top 百分比。但会有许多人偏好于寻求一个美丽的 Top 百分比。我的主张是,想要 Top 百分比美观,或许方针是铜牌和银牌的同学应该多参与人多的竞赛。人再多,Top 10% 都确保有铜牌,Top 5% 都确保有银牌;而人多的状况下进 Top 10% 乃至 Top 5% 的几率也大。(金牌的规矩纷歧样,部队总数 1000+ 的状况下金牌数只需 10+0.2%*部队总数。拜见 Kaggle Progression System

数据集小的竞赛尽管门槛低,却并不真的简略简略。较小的样本量会导致验证集和测验集的样本散布差异较大。加上由于核算量小,模型迭代(这儿指更新换代,不是练习一个 iteration)速度快,很简略导致一种结果:overfit 到验证集上,这种结果导致的常见悲惨结局是竞赛完毕的时分发现 Public leaderboard 成果还不错,可是 Private Leaderboard 上的排名一泻千里(一般 Public Leaderboard 会被当成是某种意义上的验证集)。例如 Statoil/C-CORE Iceberg Classifier Challenge 的两个 leaderboard 上有许多人有一百多乃至两百多的排名改变,相比较而言,数据量大了的三个数量级的 Cdiscount’s Image Classification Challenge 绝大部分人排名都没有改变,少量有 1~2 名的起浮。


A good CV is half of success. I won’t go to the next step if I can’t find a good way to evaluate my model.

这些大佬们每次在竞赛完毕发布 Private Leaderboard 的时分排名都比较稳定,不太简略下降许多。可见看似是取决于命运的排名大震动,在大佬手里是有方法操控的。这大约就是真功夫吧。

在数据集小的竞赛中,由于迭代速度比较快,每天提交的次数又有限制(大部分竞赛是 5 次),所以常常会有人注册小号来提交成果。在数据集较大的竞赛中,后期也偶有这样的现象。有的人在排名比较好的时分会私下里把代码共享给他人(比方同学),以求一人得道鸡犬升天……。我在竞赛中见过几回他人注册马甲或私享代码。譬如说一夜之间就冒出了一堆三无账号,成果还都差不多。或许在成果对参数极端灵敏的使命中一次提交就飞进 Top5%,一发入魂。一人多号和私享代码是违背竞赛精力的,也是 Kaggle 明令禁止的,而且也是 Kaggle 会勘探和封杀的。可悲的是,常常会有中国人这样做。为什么我这么确定?由于有些账号的 ID 用的是拼音,或许地址选了 China。真是又坏又蠢,做弊本已可耻,却还要披着中国人的形象。大约是觉得自己聪明,占了廉价却无人知晓吧……可是终究这些账号都被主办方踢出了竞赛或许删号处理。

全站排名取决于你在过往竞赛中获得的总积分,积分公式如下图:

截图来历:Improved Kaggle Rankings(图侵删)

别的参与任何的竞赛都不会减分,所以片面地寻求全站排名不太在乎进步本身水平的,能够考虑在海量的竞赛中打酱油。这是一个病态无聊但可行的战略。

在绝大部分的竞赛傍边,在练习集上做额定的符号都是不违背规矩的,只需在规则的时刻(有些竞赛是 deadline 的两周曾经)曾经上传到评论区和其他参赛者共享。譬如说,在鱼类辨认的使命中,你能够用 bounding box 符号出鱼的方位。在海狮计数的使命中你能够用 mask 来符号出每一个属于海狮的像素。这些额定的符号一般都能协助练习出更好的模型。但开支也不小。别的要注意的是,在测验集上做符号是明令禁止的做弊行为。

1.参与核算机视觉类的竞赛需求多少 GPU

固然,小数据集的竞赛对 GPU 要求很低,乃至 750M 这样的 GPU 也能够用。可是由于迭代速度太快,以及 leaderboard 每天都有大起浮,这样的竞赛参与起来特别费肝……

Jeremy Howard 在 2017 年年头或 2016 年年底(记不清了)的 fast.ai 的教育视频里(出处懒得求证了)说:排进 Top 50%,阐明你的模型还 OK;排进 Top 10%,阐明你是这个范畴的专家;排进 Top 1阐明你是国际上最顶尖的专家。他的这段话过于达观了。许多时分排名看起来还能够,仅仅由于真实的(诉诸纯真:P)专家们和大佬们大多没有时刻参与 Kaggle 而已。但这么想好像也是有失公允的,由于菜鸟和外行们也大都没有参与 Kaggle。所以谁知道呢……?


分享:
相关文章
最新文章