阿里天池关于服装属性标签识别的竞赛的 Top5 团队的技术方案 PPT 汇总. 可以在竞赛主页观看技术方案的答辩视频.
1. 禾思众成团队
2. JUST GAN 团队
3. 小飞猪团队
在开始我们的展示之前,首先想先问大家一个问题: 如何理解Fashion?其实每个人对fashion都有不同的理解和关注点。因此阿里巴巴在本次竞赛中提供了丰富的数据,从Attributes Recognition 角度去理解Fashion。
数据集照片的属性标签可以分为两大类:长度估计,款式设计
长度估计包括:衣长,裤长,裙长,袖长
款式设计包括:领口,领线
带观众了解一下数据集,数据集又分为两大类,一类是长度估计,包括衣长、裙长、裤长、袖长;另一类是款式设计,大多关注领口的款式,比如V领圆领等。
总的来说,数据集大概有18万的训练图片,可以分为8大类,54小类。
(看几个例子)数据集中有两类图片,一类是模特图,一类是平铺图。左边是两个比较容易的图片(不需要解释为什么容易),右边是一些比较难的图片,他们有遮挡、剪切、多个人、姿势变形、小尺度、旋转等方面的问题.
下面,我向大家介绍一下我们这次提出的解决方案
我们的方案非常直观,分为两个模块,第一个是Detection,第二个是Recognition.
具体的网络框架可以看这幅图,左边是Detection的过程,对输入的图片进行处理,找到图片最重点的区域,右边是recognition,检测到图片区域会经过两个深度卷积神经网络,得到最终的结果。下面我们将对这些模块一一具体讲解。
首先,为什么我们要做detection。大家可以想象一下,不管我们的分类长度估计也好,款式设计也好,首先我们应该做的,是把这件衣服找出来。而detection就能帮助我们完成这件事情,让我们把注意力集中到图片中最关键的区域,这样就可以避免位置和尺度不一带来的干扰。其次是假如图片中有多个人或多件衣服,detection也是可以搞定的,有多少件给你识别多少件出来,这样的情况在生活中是非常常见的.
这是我们detection的整个pipeline,可以分为四步。首先,当然是检测出衣服所在的位置在哪啦(强调“当然是”),然后再经过后面的放大,填充以及数据增强操作.
我们怎么做detection呢。我们采用的是Faster R-CNN, ROIAlign和YOLOv2作为我们的detector,它们都是在学术界非常state-of-the-art的方法,也在一些成熟的产品项目中有应用.
检测出框之后,我们会利用框周围的context信息对原来的框进行补充。好这里问题来了,为什么我们要用context信息呢?
大家可以想象一下,比如对于裙子来说,我们人的腿是不是一个非常有用的参考信息,比如我看到了膝盖,可能就是短裙,我看到脚踝,可能就是长裙。因此,这个context上下文信息是可以引入一些挺有用的参考信息的,对分类也是有帮助的。其次,加context信息可以把一些漏检的区域给补回来,有效地减少缺胳膊少腿的情况.
好,现在问题又来了,怎么设定这个padding的大小呢?这里我们要引入学术圈非常常用的两个数字,一个是512,另一个是448,在训练模型的时候,512 random crop 448是一个非常广泛使用的setting,我们在之后的训练中也用到了。所以,怎么让这个random crop,无论怎么random,都能框住检测的核心区域呢?答案就是,将核心区域的大小缩放到384,这样就能保证,检测核心区域能够永远被框中.
Detection部分的亮点就是这样,下面我将介绍我们的分类模型。我们的base分类模型采用的是DPN和NASNet,其中DPN是imagenet2017 物体定位的冠军,性能非常强大,而NASNet就更有意思了,它是google最近搞出来的,用神经网络生成出来的神经网络。非常推荐去阅读这两篇paper了解更多有意思的细节.
数据集难点。其实在这个task中,有一个提到的难点,这个数据集中有两类的图片,一类是模特图,一类是平铺图。从我们人的直观感受来看,假如衣服穿在人身上,我们人就是一把活的尺子,可以用来丈量衣服的长度,而对于平铺图,就只能通过一些比例,比如长宽比啊去估算了。我们统计了一下数据集的一个分布,发现了一个有趣的事情,在长度估计的类别中,模特图平铺图的比例大概是一半一半,而领口款式设计类的图片全是模特图。我们接下来提出的方案是针对图片有人没人这个特点的,因此只对四个长度类进行设计。
这个是最原始的分类网络,输入图片,输出label。
我们在此基础上,引入了multi task training 的概念,用另一个分支去预测输入图片是模特图还是平铺图,两个分支同时优化整个网络。这样做有什么好处呢?这个好处是体现在分类之前的这个feature F身上的. 原本的 F 只有区分label的能力,网络需要去学习模特图和平铺图之间的共同点,这样是比较困难的;现在F同时具有了判别模特图平铺图的能力,这样在最后一个隐空间学习的时候,能从两个不同的角度去拟合label,这两个角度都是学习同种图片类内的共同点,所以会比较简单。
首先,不知道大家注意到没有,不同长度之间,实际是有一种包含递增的关系的. 像长裙可能有这么多布料,长裙包含这么多布料,它当然包括短裙需要的布料长度. 我们可以利用这种类别与类别之间的递增关系。
另外,如果一个短裙被误判成了这种中长裙,错得不多,但如果预测成了长裙,那错得就很离谱了,显然,错得越离谱需要给更多的惩罚。结合刚刚说到的两点,我们提出了这种 incremental label 的表达方式。
具体是这样的。最原始的label,第一位是1代表第一类,第三位是1代表第三位;可能也有其他人注意到这点,稍微改进成了这种soft label的方式,让ground truth周围的类不会有太大的惩罚;而我们提出的incremental label是这样,一个1代表第一类,三个1代表第三类,六个1代表第六类,用1的数量来表示长度。我们通过实验也发现,这种方式的设计可以大大提升准确率。
下面我们展示一些我们在比赛过程中做的一些不同维度的对比实验
首先这个是我们在本地验证集上的实验结果,我们对比了在所有类别上用原图,加了detection以及加了模特平铺图分支分别的实验结果,可以看到,加了detection对准确率和map的提升非常大,而加了模特平铺图分支之后又能进一步提升.
这个是我们在衣长这个类别上,对比了我们几种创新方案的实验,可以incremental label和soft label的准确率提升都非常大,但map指标反而下降,因此最终我们没有采用这两种方案,用的还是模特平铺图这种在准确率和map都有提升的方案
接下来我带大家做一下性能分析。首先我先解释几个概念,在预测的时候,为了提高分数,我们使用了multi crop testing,具体操作是 :
1crop指的是原图,2crop指的是原图和翻转,5crop指的是对原图进行五种尺度的裁剪,10crop是五种尺度裁剪以及镜像。
下面这个是我们模型的运行效率,推荐大家从下往上看。
最后,总结一下提出的方案.
首先,Detection能够大大地提升准确率,而且它在更加复杂的场景,比如多个物体,或者物体不在图片中心之类的情况,都能够适用,在实际产品中非常具有应用价值;
其次,适当的multi task training可以增强feature的表达能力,在一些具有层级结构label的分类任务中能够起到作用,比如说动植物里面界门纲目科属种的分类就可以这么用;
第三,incremental label的这种表达形式对于具有递增形式label的分类任务是非常有作用的,比如年龄,长度,体积等等
性能分析,上面是在detector和classifier中用的分辨率,检测器速度
下面是分类器速度,当我用用大batch size的时候,由于GPU做了并行优化,可以发现速度明显加快
Invisible是一个特殊的类,它跟其他长度的类或者设计的类没有共性,放在一起会加大网络学习的难度。我们将这个task提前,让模型在前面先判断是否visible,如果是visible的,后面再进行label预测,这样就不会让invisible的图片干扰到label的学习.
这个是novel trail的实验结果,可以看到 incremental label,soft label, invisible的准确率都有提升,但是map降了,所以我们最终的方案并没有采用.
10 comments
感谢博主的分享!另外跪求FashionAI的数据集,不胜感激! liudongshengpp2nd@163.com
正在提高利用计算机视觉解决实际问题的能力,求top5 ppt。
跪求这个的数据集合top5的PPT 568946518@qq.com
您好,我正在学习深度学习,求这个数据集,非常感谢!
求个数据集chk0125@126.com。谢谢OωO
已发送到邮箱
博主,虽然已经快三年了,带着一点希望求个数据集fankai_z@163.com,谢谢博主!
收到,再次感谢,下载半天还没下完~!~
求个数据集fankai_z@163.com, 给您发了个邮件,谢谢!
看下英文版
https://tianchi.aliyun.com/competition/entrance/231648/introduction
https://tianchi.aliyun.com/competition/entrance/231649/information?from=oldUrl