冠军方案之 FashionAI 服饰关键点定位

freeopen [机器学习] #top1

冠军:李weite 及 bilibili 团队

任务说明

服装的机器分析很容易受到衣服的尺寸和形状,相机拍摄的距离和角度甚至服装的显示方式或模型摆放方式的影响。对图像中服装关键点的检测可以帮助提高应用程序的性能,例如衣服的对齐,衣服局部属性的识别以及服装图像的自动编辑。

基于服装设计知识,定义了一套服饰的关键点,并梳理了在女装6大专业类别(上衣、外套、裤子、半身裙、连身裙、连身裤)下的具体定义,要求参赛者设计算法进行定位预测。官方提供的数据集含前五个类别(连身裤类别被省略,因为在现实世界中并不常见),包括41个子类别和24种关键点。此数据集中总共有100,000个带批注的图像。

女装关键点图例

关键点定义

注解格式

注释文件保存在csv格式表中,共有26列:第一列(image_id)包含图像文件名,第二列(image_category)表示图像所属的类别,其余24列记录了 上述24个关键点的位置。 仅显示两个图像项的示例表如下所示:

image_id,image_category,neckline_left,neckline_right,center_front,shoulder_left,shoulder_right,armpit_left,armpit_right,waistline_left,waistline_right,cuff_left_in,cuff_left_out,cuff_right_in,cuff_right_out,top_hem_left,top_hem_right,waistband_left,waistband_right,hemline_left,hemline_right,crotch,bottom_left_in,bottom_left_out,bottom_right_in,bottom_right_out
Images/blouse/d21eab37ddc74ea5a5f1b4a5d3d9055a.jpg,blouse,241_135_1,301_135_1,259_136_1,216_142_1,319_144_1,212_186_1,307_202_1,-1_-1_-1,-1_-1_-1,203_236_1,195_256_1,278_241_1,283_261_1,206_243_0,292_252_0,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1
Images/blouse/02b54c183d2dbd2c056db14303064886.jpg,blouse,244_76_1,282_76_1,257_99_1,228_81_0,303_85_1,222_134_1,295_131_1,-1_-1_-1,-1_-1_-1,199_153_1,178_100_0,293_173_1,332_150_1,229_161_1,297_162_0,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1,-1_-1_-1

每个关键点由一个三元组表示,每个元素由下划线连接,表示为“ x_y_v”,其中x和y为坐标,v为可见性。 如果关键点可见,则可见性等于1;如果关键点被遮挡,则可见性等于0;如果类别中不存在或未定义,则可见性等于-1。

评价标准

TB1nI4_FY1YBuNjSszeXXablFXa.tfsprivate

Normalized Error(NE)用于评估提交的结果。 NE是预测关键点位置和注释位置之间的平均归一化距离。 注意,NE计算仅涉及可见的关键点。

其中 $k$ 为关键点 ID,$d_k$为预测关键点位置与带注释的关键点位置之间的距离,$s_k$为距离归一化参数(对于上衣,外套和衣服,它等于两个腋窝点之间的欧几里得距离;对于裤子和 裙边等于两个腰带点之间的距离),$v_k$即关键点的可见性。

解题思路

第一阶段:使用检测器把女装在图片上的位置检测出来;

第二阶段:再针对女装位置,做准确关键点的定位。

通过第一阶段的处理可以给第二阶段输入更干净的数据。

第一阶段的模型采用 Faster-RCNN,backbone resnet101

第二阶段的模型为自定义,命名为 asymmetric and dilated stacked hourglass networks 。参考google CVPR 2017年论文拟合两种信息,第一种信息判断每一个像素点是否在关键点的领域范围内,如果是在领悟范围内,则标注为临近点;拟合的第二种信息是临近点和关键点之间的向量偏差,有了这个向量偏差,就可以把预测出的向量点投票到对应偏差的坐标点上,这时就能取得一个准确的关键点定位。

模型设计

asymmetric and dilated stacked hourglass networks (SHN),非对称并带孔的SHN模型。主要特征为:

采用非对称结构的理由,设计者认为重量级的encoder可以用来迁移学习,须保有更多空间信息,而decoder如果参数太多,就享受不到encoder初始化参数带来的好处。

当空间信息的重要性高于语义信息时的模型设计:

模型演变图

ModelParam SizeFLOPsScores
ResNet50 backbone + 1 stage49M7.86G4.11
+ 2 stage + more encoder layers91M18.52G-0.4x
+ pre-trained91M18.52G-0.1x
+ more data91M18.52G-0.1x
+ ResNet101 + large input(352) + more channles402M>100G-0.1x
+ increase the number of boxes(more-crops)402M>100G-0.0x
Final Submission402M>100G3.30

其他技巧

观察到难样本分布不均,采取在线难样本挖掘,使得训练聚集到难样本。难样本搜寻不是按照传统的在一张图中查找,而是在一个batch中搜寻。

最终提交模型时给了两个模型版本,一个高速版本一个低速版本,两个版本的分数差异不大,以证明模型的实用性很强。


评论区🔗

你可以在这里快速开始评论,如果 name 填写为 email 时,当有回复时,会收到邮件提醒( 注:邮件提醒功能还在制作中 ).


回应区🔗

你有对这篇文章写回应吗? 你可以在这里提交你的文章网址或者推特链接(文章或推特内容需要包含这篇文章的地址,点击这里了解 Webmention):

回应内容会被 webmention.io 机器人收集,另一位机器人会在24小时内把回应展示到这里, 也欢迎通过 邮件 Twitter DM 和我讨论。

Back to top