阿里天池服装标签识别比赛新人赛练习经验心得 Tianchi FashionAI Attributes Recognition of Apparel
服装标签项目总结与心得
先放项目代码仓库:https://github.com/JosephPai/FashionAI-Attributes
强烈欢迎Star/Follow
关于代码或者数据集如果有任何问题,欢迎大家本博客或者github issues留言一起交流学习
任务描述
从属性标签知识体系中拿出了8种重要的属性维度对服装进行标签识别。
这些属性维度是:颈线设计、领子设计、脖颈设计、翻领设计、袖长、衣长、裙长、裤长。
具体示意,见下图:
针对八个不同的属性维度,分别训练了各自的分类器。
经验总结
从零开始接触这个任务到现在,一些不成熟探索的经验
1.Pre-trained model
最开始接触这个任务的时候,用了一个ResNet101网络直接训练,一方面训练极慢,另一方面效果很差。
虽说训练集有两万多张图片好像看起来不是很少,但是对于CNN提取基础的features来说还不够,
更不用说和ImageNet weights相比。
导致模型完全overfit了训练集,训练集Acc达到95%+,测试集Acc约为67%。
使用Pre-trained weights后,训练过程收敛很快,效果也提升了很多。
准确率提升约’7-10%’
2. Data augmentation
数据增强对于提升模型的泛化能力有很强的作用。
但是在选择augment类型时候,要针对特定任务有取舍,选错了方法则适得其反。
比如属性标签任务中,可以大致分为设计和长度两大类(每一大类各包括四个属性维度)。
通过一些实验结果得出,比较适用于长度的增强方法:
- 颜色通道偏移 channel_shift
- 随机旋转 rotation
- 水平翻转 horizontal_flip
这应该是比较通用的几个增强方法了,适用于绝大部分分类任务
针对设计任务,在上面的基础上,还可以增加
- 错切,x坐标(或y)保持不变,而对应的y(或x)按比例发生平移 shear
- 水平/垂直随机放缩 zoom
可以想象,如果把垂直放缩方法应用到长度任务上,很可能会对模型造成负面影响
一些框架工具自带的增强类型有限,可以用python的imgaug库
准确率提升约’3-5%’
3. Backbone网络的选择
对于没有特殊需求的图片分类任务,个人觉得,
应该从AlexNet、VGG一路到ResNet再一路到NASNet进行排序,
根据自己的硬件条件选择可以使用的最强的网络
本次任务暂时选用DenseNet121作为统一的Backbone
4. 利用人的先验知识挖掘数据中的信息
例如长度任务,我们的知识告诉我们,这些长度是一个递增的关系。
我们可以基于此设计一个weighted loss function。
weight权重是基于类间距离的,预测结果和正确结果差别越大,惩罚应该越大。
准确率提升约’1-1.5%’
值得一提的是,这次的数据集中,标签中含有m(maybe)。
如果单纯根据y标签,进行one-hot编码,则损失了m信息。
利用m标签信息,编码为soft label(例如y 0.7, m 0.3)。使用此编码方式时需要注意数据中可能存在多个m。
准确率提升约’1.5-2.5%’
5. Padding
一开始忘了对图片进行padding操作,读入之后直接resize了,好在数据集的图片都比较友好
经丹阳哥提醒,进行了padding操作
准确率提升约’0.3%’(当数据集不够规范时候,是否进行padding操作对结果影响要大很多)
6. Image Size
图像的大小(分辨率)对于模型效果有很大影响,尤其在设计的维度
更大的图像包含更多的信息
例如在collar design任务中,将Image size从320提升至448,准确率提升约’3%’
7. Attention
好的模型应该是自适应attention的。
在神经网络学习过程中,应该能够自动关注到对分类结果有影响的区域。
当然外力的attention驱动还是可以使模型更专注的关注到该区域。
只不过,当Image size越大,网络越强,attention带来的提升会相对越小。
基于heat map的attention使准确率提升约’1-2%’
热度图heat map的获得一般参考Grad-CAM。
可视化热度图,对于理解模型原理,判断模型是否真正有效,
以及attribute localization and manipulation有很强的指导意义。
8. 调参
个人感受是,在模型基本固定的情况下,learning rate是最重要的参数。
一般先用Adam(1e-4)快速收敛
然后再用SGD(3e-5, 1e-5, 3e-6)等手动微调
并且不同的任务适应不同的参数的训练过程,私以为用jupyter notebook边看结果边手动调效果最好。
9. 多任务联合训练
根据结果看,长度维度的准确率普遍低于设计维度,
于是尝试用多任务联合训练的方式训练长度任务。
实现思路见https://gist.github.com/ypwhs/8e8ba38a313d76337ed4fc482afc9034
但是效果一般。
联合训练的优点在于数据量更大,一定程度上增加模型的泛化能力(提取features的丰富度)
缺点在于,上一条关于调参里面提到的,即使同属于长度维度,不同属性在分类时难易程度,
适应的参数变化也是不同的,对这样一个多任务的大的模型调参,对不同属性造成的影响不同,
出现了此消彼长的情况。
训练结果
属性 | Accuracy | Precision |
---|---|---|
collar design | 87.3% | 86.8% |
lapel design | 90.1% | 89.6% |
neck design | 88.6% | 88.7% |
neckline design | 88.4% | 89.2% |
pant length | 84.5% | 83.4% |
skirt length | 81.3% | 81.7% |
sleeve length | 80.8% | 79.4% |
coat length | 78.2% | 78.3% |
阿里天池服装标签识别比赛新人赛练习经验心得 Tianchi FashionAI Attributes Recognition of Apparel相关推荐
- 阿里天池FashionAI服装属性标签识别Top1%方案分享
前言 上周六刚刚结束FashionAI2018服装属性标签识别的复赛,比赛竞争十分激烈.比赛总共报名近3000支队伍,经过3个月的比拼,我们队伍最终获得了第11名的成绩.虽然离第十名只有一步之遥,但是 ...
- 阿里天池比赛多次拿前3,如何做到?
微信公众号推荐 AI蜗牛车公众号 微信公众号<AI蜗牛车>,公众号致力于技术项目化,具体化,思考化,会写系列的项目工程文章,细致到位,也会写一个读物的读书笔记,或者一个语言/框架的学习笔记 ...
- 干货满满~阿里天池目标检测保姆级教程
阿里天池目标检测类比赛入门 1赛前准备 1.1设备 1.2必备技术 1.3相关论文 1.4开源工具 2比赛规则分析 2.1评分指标 2.2模型限制的解决方法 3数据分析 3.1感受野&anch ...
- 阿里天池街景字符编码YOLO5方案
前言 最近在做OCR相关的任务,用到了阿里天池一个街景字符识别比赛的数据集,索性就分享一下相关方案,我采用YOLO5模型,最终在平台提交分数也做到了0.924,没有经过任何优化,可以看出YOLO5的效 ...
- python数据分析-杭州市地铁站人流量【数据源---阿里云天池新人赛】
python数据分析-杭州市地铁站人流量[数据源-阿里云天池新人赛] 前言 天池新人实战赛是针对数据新人开设的实战练习专场,以经典赛题作为学习场景,提供详尽入门教程,手把手教你学习数据挖掘.天池希望新 ...
- 阿里天池比赛——街景字符编码识别
文章目录 前言 一.街景字符编码识别 1. 目标 2. 数据集 3. 指标 总结 前言 之前参加阿里天池比赛,好久了,一直没有时间整理,现在临近毕业,趁论文外审期间,赶紧把东西整理了,5月底学校就要让 ...
- 阿里天池新人赛——幸福感挖掘
本文简要介绍参加阿里天池新人赛--幸福感挖掘的相关思路 整体思路 1.分析问题,提出分析目的 2.数据清洗.数据预处理及数据可视化 3.数据分析 4.建模计算 5.分析结果及竞赛成绩 1.分析问题,提 ...
- 阿里天池比赛——地表建筑物识别
阿里天池比赛--地表建筑物识别 记录一下之前参加的阿里天池比赛,方便以后查看. 策略: 1.多模型训练 2.多模型测试 3.数据增强 4.预训练/冻结训练 5.迁移学习 6.TTA 7.后处理 8.f ...
- FashionAI服装属性标签识别竞赛
初赛结束前一个月在Gluon论坛上看到了hetong007的帖子实战阿里天池竞赛--服饰属性标签识别,正好当时并无太多事情要忙,于是下载了代码和数据集,准备小试一下. 两个月后,比赛终于落下帷幕.尽管 ...
最新文章
- Github霸榜月余,原来是阿里技术官的千亿级并发系统设计手册上线了
- php空间xpyun_无限流量免费 PHP 空间 – FreeWebHostingArea
- qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
- 绿盟漏洞扫描_主机安全漏洞解决方案
- strace 简单用法
- Yam Finance和UMA合作推出Degenerative Finance
- MaterialPropertyBlock的使用
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights...
- 极客大学架构师训练营 框架设计、设计原则、设计模式 第四课 听课总结
- qq for android 4.6能视频吗,安卓qq4.6使用评测
- ssoj3991: 雪人(snowman)
- 一位acm过来人的心得
- Exp外贸/出口英文商城系统在国际电商贸易中的角色扮演
- python计算复数的辐角_Python机器学习(五十六)SciPy fftpack(傅里叶变换)
- Python3:变量的定义
- Data truncation: Incorrect string value
- 高考数学辅导高考数学复习各个阶段备考指导
- 布尔教育php分享视频,布尔教育jQuery实战视频资料分享
- 安装好RStudio打开提示 Error Starting R 问题怎么解决?
- 配置nginx+mongrel的rails部署环境
热门文章
- 最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及典型建设项目入河排污口方案报告书
- Photoshop图片局部马赛克
- 关于Android应用中的悬浮窗(一)——权限
- 持续集成/持续交付(CI/CD)
- 竞标和招投标有什么区别
- [附源码]计算机毕业设计Python葡萄酒销售管理系统论文(程序+源码+LW文档)
- 用户直呼 “用不起”,共享充电宝大涨价
- easyExcel分批导入
- Welcome to讯飞测试技术嘉年华和一只小萌鸭的约会
- 小米2S TWRP 3.0.2-0 最新版Recovery