2018年9月5日星期三

AI初学者,如何登顶野生动物识别挑战赛?| 附代码

原作:Abhishek Sharma栗子野 编译整理量子位 出品 | 公众号 QbitAI

最近,HackerEarth举办的一项初学者深度学习挑战赛,落幕了。

比赛内容是,识别野生动物

来自印度的本科生Abhishek Sharma登上了冠军宝座。

于是,他写了写自己的心得,给小伙伴们参考:

怎样的挑战

比赛数据集里有19,000张图,包含30个不同物种的野生动物。

动物的照片是在真实场景里拍摄的,姿势不同,背景复杂,光线、天气条件、视角、遮挡情况也不同。

比起这些容易造成混淆的因素,有些不同的物种,看上去并没有那么大的差别。

哪个类别的预测概率最高,图像就分给哪个物种。

评估指标:分类器的logloss

怎样上手

拿到任务之后,要做的第一件事就是去看,以前有没有类似的问题,前人方法能不能借鉴。

少年发现,比赛数据集和ImageNet有不少交集。

那么,怎样利用它们之间的异同来改进现有的方法?

首先,本次任务里的未知 (Unknown) ,和ImageNet是非常相似的。

所以,可以用迁移学习,拿CNN做初始化或者做固定特征提取器。

迁移学习论文:https://ift.tt/2fl399G

一个区别在于图像尺寸,ImageNet里面的图像都是224 x 224像素,而动物识别任务里,图像要更大一些

因此,要改进算法来处理大图。

熟悉问题之后,就先搭建一个简单的pipeline:从加载数据集,到训练,到验证。可以迭代几次。

怎样防止过拟合

19,000张图像里面,有13,000张属于训练集,余下6,000张是测试集。

数据集并不是很大,为了避免过拟合,少年做了以下几种尝试:

数据扩增

就是通过旋转、翻转、裁剪等这样简单的操作,把一幅图变成几幅。

这里,用了transforms_side_on随机旋转,翻转,还调了光。

数据扩增论文:https://ift.tt/2Q4lMls

学习率

深度学习网络里,最重要的超参数就是学习率

程序猿用的是lr_find的方法,是fastai库里面提供的,用来找最优值。

这个方法是Leslie Smith提出的:刚开始训练的时候,学习率设得很低,然后给每个Batch的学习率做指数增长

Smith论文在此:https://ift.tt/2taqJQP

训练用的图像尺寸是324 x 324,因为这些图像在验证集上表现比较好。

少年也尝试了不同的批尺寸 (Batch Size),试到32的时候,GPU存储到了上限。然后,他就为学习率做了相应的微调。

学习率vs批尺寸:https://ift.tt/2B499hB

扩大图像尺寸

用小图训练几个Epoch之后,就可以换大图 (450 x 450) 再持续训练几个Epoch。

这也是防止过拟合的一种不错的方式,在少年的logloss身上,产生了明显疗效。

各种模型合起来

少年训练了各种模型,比如resnet50,resnext101_64,inception_4,restnet152以及restnext101。然后,把它们给出的结果用加权平均整合到一起,就获得了榜首的高分。

哪些做法没有用

一是,受到下面这个Kaggle内核的启发,程序猿做了些图像相关的统计数据 (Image Related Statistics) 。

但是,在把各种网络结合在一起的时候,这些统计就减分了。

Kaggle Kernel传送门:https://ift.tt/2wMiDOt

二是,在瓶颈特征 (Bottleneck Features)上训练逻辑回归 (Logistic Regression) 。瓶颈特征,是进入全连接层之前,卷积层输出的最后结果。

这个方法,在Kaggle狗狗品种识别挑战赛里,效果很好,但在这里就不太行。

印度少年说,大家一定要尝试从各种不同的角度来看问题,不要放弃。

虽然奖金没多少……

HackerEarth是一个编程技能的线上评测系统,也举办过许多编程比赛。

虽然,有些比赛奖金并不丰厚。不过,据说比赛成绩好的选手可能获得名企的推荐资格。

野生动物识别挑战赛传送门:https://ift.tt/2Q7vdAG

第一名的GitHub传送门:https://ift.tt/2wO3FYm

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2wKLGm7
RSS Feed

RSS5


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

没有评论:

发表评论

JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧!- InfoQ 每周精要848期

「每周精要」 NO. 848 2024/09/21 头条 HEADLINE JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧! 精选 SELECTED C++ 发布革命性提案 "借鉴"Rust...