FashionAI服装属性标签识别竞赛

本文总结了作者参与FashionAI服装属性标签识别竞赛的经验,探讨了参数固定、外部数据、多模型融合等策略对模型性能的影响。在初赛中,通过固定卷积层参数、减少类别等方法提高了design任务的准确性。复赛中,采用目标检测预处理提升了设计任务的表现。同时,文中还提及了数据增强、模型选择和多模型融合对结果的提升作用。
摘要由CSDN通过智能技术生成

初赛结束前一个月在Gluon论坛上看到了hetong007的帖子实战阿里天池竞赛——服饰属性标签识别,正好当时并无太多事情要忙,于是下载了代码和数据集,准备小试一下。
两个月后,比赛终于落下帷幕。尽管最后只取得了初赛78,复赛52的成绩,但在比赛的过程中的亲身经历还是让我对于参数的修改,超参的选择和网络结构的选择等诸多内容有了更深的了解。所以准备写个帖子总结一下,方便以后自己回顾,顺便也希望借此能够和大家多多交流。

初赛

赛题介绍

不管是初赛还是复赛,服装属性标签的比赛当中所需要完成的任务共两大类(length和design)八小种,即pant_length,coat_length, skirt_length,sleeve_length,collar_design,neck_design,neckline_design和label_design。尽管对于所有的任务都可以使用相同的模型进行分类,但是由于两大类任务之间存在着明显的不同,因而在初赛中进行了特殊处理。
首先,在离线训练评估的过程中发现,比赛的八种任务在准确率和mAP上存在着显著的差异,具体数据如下所示:

collar_design neckline_design neck_design lapel_design pant_length skirt_length sleeve_length coat_length
acc 0.874 0.878 0.844 0.894 0.893 0.961 0.929
mAp 0.889 0.888 0.864 0.915 0.902 0.966 0.929

从上表中的数据中可以看出,design相关的任务的准确率和mAP明显要低于length任务的数据,因此在初赛阶段将提高design任务的结果作为了比赛重点。

参数固定

在hetong007的代码当中,其选择了resnet50_v2作为分类的模型,并利用fine tuning进行模型的训练;在之前的kaggle dog breed比赛当中,ypw分享的代码则是选择了将模型的卷积层部分作为特征提取器,对得到的向量训练一个MLP作为分类模型。因此在训练的过程中对卷积层的参数是否进行固定会有差别吗?
试验的结果表明将卷积层的参数固定后进行训练得到的结果会稍好一些。(因忘记记录相关数据,故此处未列出相关具体数据,大约有1%左右的提升。)不管是resnet50_v2还是其他的模型,MXNet当中提供的预训练的模型都是在ImageNet这样的巨型数据集上进行训练的结果,因此其应该学习到了足够多的特征。而本次比赛所使用的服饰数据和ImageNet中的数据差别并非巨大,因此使用预训练的模型并对卷积层参数固定的方式比从头开始学习或者fine tuning的结果都要好。
P.S.然而在其他的数据上,例如医疗相关的数据,采用此种方式是否能够得到类似的结果暂未可知。、
P.P.S.在通过设定卷积层参数梯度为null后进行训练的过程中发现,似乎此种方式训练的速度更快。大概MXNet对此进行了优化。既然卷积层参数的梯度被设定为null,那么在反向传播的过程中卷积层的梯度即无需计算卷积层的参数梯度。

外部数据

在使用MXNet提供的预训练模型之前曾尝试过使用外部数据帮助训练。最初的设想为,既然使用在ImageNet上预训练的模型能够很好的提取相关特征,那么使用服饰相关的数据集训练一个模型,并在此模型的基础上进行固定卷积层参数训练是否会更好呢?于是选择了使用DeepFashion当中的数据对resnet50_v2等模型进行训练,并在其基础上进行FashionAI模型的训练。
但是最终的结果表明,个人训练得到的模型性能不如MXNet提供的预训练模型。我个人的猜测,一方

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值