服装标签项目总结与心得

先放项目代码仓库: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相关推荐

  1. 阿里天池FashionAI服装属性标签识别Top1%方案分享

    前言 上周六刚刚结束FashionAI2018服装属性标签识别的复赛,比赛竞争十分激烈.比赛总共报名近3000支队伍,经过3个月的比拼,我们队伍最终获得了第11名的成绩.虽然离第十名只有一步之遥,但是 ...

  2. 阿里天池比赛多次拿前3,如何做到?

    微信公众号推荐 AI蜗牛车公众号 微信公众号<AI蜗牛车>,公众号致力于技术项目化,具体化,思考化,会写系列的项目工程文章,细致到位,也会写一个读物的读书笔记,或者一个语言/框架的学习笔记 ...

  3. 干货满满~阿里天池目标检测保姆级教程

    阿里天池目标检测类比赛入门 1赛前准备 1.1设备 1.2必备技术 1.3相关论文 1.4开源工具 2比赛规则分析 2.1评分指标 2.2模型限制的解决方法 3数据分析 3.1感受野&anch ...

  4. 阿里天池街景字符编码YOLO5方案

    前言 最近在做OCR相关的任务,用到了阿里天池一个街景字符识别比赛的数据集,索性就分享一下相关方案,我采用YOLO5模型,最终在平台提交分数也做到了0.924,没有经过任何优化,可以看出YOLO5的效 ...

  5. python数据分析-杭州市地铁站人流量【数据源---阿里云天池新人赛】

    python数据分析-杭州市地铁站人流量[数据源-阿里云天池新人赛] 前言 天池新人实战赛是针对数据新人开设的实战练习专场,以经典赛题作为学习场景,提供详尽入门教程,手把手教你学习数据挖掘.天池希望新 ...

  6. 阿里天池比赛——街景字符编码识别

    文章目录 前言 一.街景字符编码识别 1. 目标 2. 数据集 3. 指标 总结 前言 之前参加阿里天池比赛,好久了,一直没有时间整理,现在临近毕业,趁论文外审期间,赶紧把东西整理了,5月底学校就要让 ...

  7. 阿里天池新人赛——幸福感挖掘

    本文简要介绍参加阿里天池新人赛--幸福感挖掘的相关思路 整体思路 1.分析问题,提出分析目的 2.数据清洗.数据预处理及数据可视化 3.数据分析 4.建模计算 5.分析结果及竞赛成绩 1.分析问题,提 ...

  8. 阿里天池比赛——地表建筑物识别

    阿里天池比赛--地表建筑物识别 记录一下之前参加的阿里天池比赛,方便以后查看. 策略: 1.多模型训练 2.多模型测试 3.数据增强 4.预训练/冻结训练 5.迁移学习 6.TTA 7.后处理 8.f ...

  9. FashionAI服装属性标签识别竞赛

    初赛结束前一个月在Gluon论坛上看到了hetong007的帖子实战阿里天池竞赛--服饰属性标签识别,正好当时并无太多事情要忙,于是下载了代码和数据集,准备小试一下. 两个月后,比赛终于落下帷幕.尽管 ...

最新文章

  1. Github霸榜月余,原来是阿里技术官的千亿级并发系统设计手册上线了
  2. php空间xpyun_无限流量免费 PHP 空间 – FreeWebHostingArea
  3. qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
  4. 绿盟漏洞扫描_主机安全漏洞解决方案
  5. strace 简单用法
  6. Yam Finance和UMA合作推出Degenerative Finance
  7. MaterialPropertyBlock的使用
  8. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights...
  9. 极客大学架构师训练营 框架设计、设计原则、设计模式 第四课 听课总结
  10. qq for android 4.6能视频吗,安卓qq4.6使用评测
  11. ssoj3991: 雪人(snowman)
  12. 一位acm过来人的心得
  13. Exp外贸/出口英文商城系统在国际电商贸易中的角色扮演
  14. python计算复数的辐角_Python机器学习(五十六)SciPy fftpack(傅里叶变换)
  15. Python3:变量的定义
  16. Data truncation: Incorrect string value
  17. 高考数学辅导高考数学复习各个阶段备考指导
  18. 布尔教育php分享视频,布尔教育jQuery实战视频资料分享
  19. 安装好RStudio打开提示 Error Starting R 问题怎么解决?
  20. 配置nginx+mongrel的rails部署环境

热门文章

  1. 最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及典型建设项目入河排污口方案报告书
  2. Photoshop图片局部马赛克
  3. 关于Android应用中的悬浮窗(一)——权限
  4. 持续集成/持续交付(CI/CD)
  5. 竞标和招投标有什么区别
  6. [附源码]计算机毕业设计Python葡萄酒销售管理系统论文(程序+源码+LW文档)
  7. 用户直呼 “用不起”,共享充电宝大涨价
  8. easyExcel分批导入
  9. Welcome to讯飞测试技术嘉年华和一只小萌鸭的约会
  10. 小米2S TWRP 3.0.2-0 最新版Recovery