天池FashionAI全球挑战赛小小尝试

前些天从实验室了解到天池的 FashionAI全球挑战赛,题目和数据都挺有意思,于是花了点时间稍微尝试了下。目前比赛还在 初赛阶段,题目有两个,分别是 服装属性标签识别 和 服饰关键点定位。

服装属性标签识别是指识别出领、袖、衣、裙、裤等部位的设计属性,对应多个多分类问题,例如以下的例子。

服饰关键点定位是指定位出服饰中关键点的位置,对应多个回归问题,例如以下的例子。

这和 CelebA(http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)人脸数据集有点像,每张图片都是一张人脸,对应的标注包括5个关键点位置和40个属性的01标注,例如是否有眼镜、帽子、胡子等。

选题

我选了第二道题目,一方面感觉有 人脸关键点检测、人体骨骼关键点检测 等相关问题可供参考,去年的 AI Challenger 也举办过人体骨骼关键点检测的比赛(https://challenger.ai/competition/keypoint),另一方面自己还没有做过这块内容,比较感兴趣。

比赛官方提供的训练集共包括4W多张图片,测试集共包括将近1W张图片,神奇的是训练集和测试集有366张图片是完全重合的。每张图片都指定了对应的服饰,共5类:上衣(blouse)、外套(outwear)、连身裙(dress)、半身裙(skirt)、裤子(trousers)。

一共有24个关键点,但每类服饰对应的关键点数量并不一样。关键点标注分为三类,-1表示不存在,0表示存在但不可见,1表示存在且可见,后两种情况都会提供对应关键点的xy坐标。

初步探索

进行了相关的预处理之后,先尝试下 最基础的结构,即卷积、池化加全连接。由于 之前完全没做过 这一块,所以网络的一些细节都只能慢慢尝试,包括卷积用几层、卷积核大小设多少、使用哪个激活函数、使用哪个损失函数等等。

进行了长时间的摸索,终于折腾出第一个全部打通的版本,提交了一版结果,成绩大概30%左右。由于最后一层使用全连接层直接输出每个关键点的xy坐标,因此误差比较大。

目前排行榜第一名是 4.49%,占榜很多天雷打不动,可见实力之强劲。

进一步探索

后来一想,像这类比较经典的问题,肯定已经有大量的相关研究和模型,完全靠自己凭空搭一个网络显然不靠谱。于是进行了一些调研,找到两个模型:Convolutional Pose Machine、Stacked Hourglass。

精力有限,重点研究了一下 CPM。阅读了对应的论文,2016年的CVPR,模型结构长这样,简单来说就是反复使用多个Stage,不断抽取每个关键点对应的越来越准确的响应图。

在Github上找到了CPM的一个开源实现(https://github.com/timctho/convolutional-pose-machines-tensorflow),阅读代码并进行修改后应用到比赛的数据上,在P100上训练共花费30个小时左右。使用6个Stage的CPM,为每个关键点生成一张响应图。

以下是一张 dress 对应的结果,第一行的三张依次是第1个、第2个、第3个Stage的响应图合成结果,第二行的三张分别对应第6个Stage的响应图合成结果、正确答案、正确答案和原图的合成,看起来还不错。

再来看个 outwear,响应图也很准。

最后再看个 trousers,关键点比较少,也很准。

又交了一版结果,拿到了 17% 的成绩。由于CPM输出关键点的响应图而不是直接输出关键点的xy坐标,同时使用多个Stage级联以逐步获取越来越准确的响应图,因此可以取得更好的结果。

可能的改进

可能的改进包括多个方面:

  • 使用其他 更新更好的模型。由于我是 这方面的外行,一方面不清楚哪个模型目前最好,另一方面再调研和实现一个模型也需要耗费大量时间;
  • 调参。每个模型都涉及很多参数,除此之外还有很多和模型无关的参数,例如学习率、批大小、正则项系数等,由于我是 这方面的外行,暂时不清楚对关键点检测这类问题该如何选择参数;
  • 使用数据增强等 技巧。由于我是 这方面的外行,暂时不清楚除了数据增强之外还有什么适合关键点检测这类问题的技巧。

虽然有很多可能的改进方向,不过由于自己之前没有做过关键点检测这类问题,所以继续折腾下去只能靠运气各种尝试,而且每次尝试都需要 等待很久 的模型训练时间。

相比之下,对于一些在关键点检测领域有相当积累的团队和个人,他们有着 丰富的经验 和 现成的代码,和他们竞争还是相当有难度的。看一下排行榜,第一名的 4.49% 至今无人能超越,前三十名也都在 12% 以下。

而且个人事情也比较多,时间和精力都十分有限,所以决定这个比赛不再继续尝试,感觉做到这一步就可以了。

总结

通过这次比赛,了解了关键点检测这类问题的一些解决方法,并尝试用CPM进行了一些实践,对自己而言已经满足了。

等比赛结束后,再关注一下 冠军团队 的解决方案,好好学习 一波。

原文发布于微信公众号 - 宏伦工作室(HonlanFarm)

原文发表时间:2018-03-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

数据挖掘算法之深入朴素贝叶斯分类

写在前面的话:   我现在大四,毕业设计是做一个基于大数据的用户画像研究分析。所以开始学习数据挖掘的相关技术。这是我学习的一个新技术领域,学习难度比我以往学过的...

36480
来自专栏ATYUN订阅号

腾讯AI Lab开源了覆盖性广、准确性高的汉语词汇语料库

腾讯开源了一个语料库,为超过800万个汉语词汇提供了200维向量表征,即嵌入,这些词汇是在大规模高质量数据上预先训练的。这些向量捕获中文单词和短语的语义含义,可...

17650
来自专栏AI科技大本营的专栏

AI 技术讲座精选:数学不好,也可以学好人工智能(五)——深度学习和卷积神经网络

【AI100 导读】欢迎阅读《数学不好,也可以学好人工智能》系列的第五篇文章。如果你错过了之前的四部分,一定记得把它们找出来看一下!本文主要介绍了深度学习架构—...

422100
来自专栏新智元

关于 NIPS 2016 你应该知道的 50 件事情

【新智元导读】Andreas Stuhlmüller 目前在斯坦福 Noah Goodman 教授 Computation & Cognition lab 当博...

33640
来自专栏机器之心

只需十四步:从零开始掌握Python机器学习(附资源)

选自kdnuggets 作者:Matthew Mayo 机器之心编译 参与:黄小天、吴攀、晏奇、蒋思源 Python 可以说是现在最流行的机器学习语言,而且你也...

368110
来自专栏机器学习之旅

理论:FM理论解析及应用FM的产生背景one-hot过程什么叫做组合问题组合特征后的表达形式方程定义完成了,下面就要开始数学定义下面让我们来解这个式子引申一个FFM概念代码实现

我其实没有做过很多ctr预估的事情,但是我在工作中常常遇到CRM流失预估、订单预估这些依赖于特征工程的事情,其中就涉及到特征的组合问题。

11030
来自专栏深度学习与数据挖掘实战

【AI头条&优质资源】中国AI生态报告,崛起的5大因素是?

《如何评价 DeepMind 新提出的关系网络(Relation Network)?》

11620
来自专栏新智元

【AI玩跳一跳终极奥义】首个端到端神经网络,看AI在玩游戏时注意什么

作者:Flood Sung 编辑:费欣欣 【新智元导读】不用传统外挂,训练纯深度学习AI来玩跳一跳,结果会如何?本文作者使用模仿学习,训练了一个端到端的神经网络...

41270

无论如何,这是哪条鲸鱼?利用深度学习对鲸鱼进行人脸识别

“正确的鲸鱼识别”是一个由NOAA Fisheries在Kaggle.com数据科学平台上组织的计算机视觉竞赛。我们在deepsense.io的机器学习团队已经...

62750
来自专栏机器学习之旅

Kaggle&TianChi分类问题相关算法快速实现导读理论解析如何设计一个Stacking|Ensemble的模型?案例复现

17/12/30-update :很多朋友私密我想要代码,甚至利用金钱诱惑我,好吧,我沦陷了。因为原始代码涉及到公司的特征工程及一些利益trick,所以我构造了...

24920

扫码关注云+社区

领取腾讯云代金券