主要包含两个工作:
1. 创建了一个服装数据集DeepFashion,包含80万张服装图像,有类别,属性,特征点以及服饰框的标注。
2. 提出一个深度学习模型FashionNet,结合服饰属性和特征点进行服饰的特征提取,可以较好的应对服饰的变形遮挡等问题。
Clothes Recognition的难点大概可以分为三类:
- Style/texture Variation.
- Deformation+occlusion.
- Different Scenarios(背景不纯净)
故作者认为需要一个unified dataset, 用大量的attribute帮助分割feature space(分解style的抽象问题),而landmark可以帮助Recognition.
数据库提供可研究的task有:
- 类别与属性预测(Category and Attribute Prediction) 对 50 个fine-gained 类别和 1000 个属性进行分类. 共 63720 张标注图片。对于类别分类,采用标准的 top-k 分类精度 作为评价准则; 1-of-K classification problem. 对于属性预测,采用 top-k recall rate 作为评价准则,通过对 1000 个分类 scores 进行排名,检测在 top-k 中所匹配的属性数量; multi-label tagging problem.
- 商家服装检索(In-Shop Clothes Retrieval) 该任务是判断两张商家图像是否属于同一款. 共 11735 款服装,54642 张图片. 采用 top-k 检索精度作为评价准则,如果在 top-k 检索结果中能够精确找到服装款,则认为是检索正确.
- 买家到商家服装检索(Consumer-to-Shop Clothes Retrieval) 该任务是匹配买家所拍照片与商家的服装. 251361 张买家与商家对.
FashionNet的网络结构类似VGG-16,只是将VGG16的最后一个卷积层进行了修改,改成能够处理服装landmarks,属性和类别的网络。
从上图可以看出,VGG16的最后一个卷积层由作者设计的三个分支代替。
最右侧蓝色分支进行特征点可见性预测以及位置回归。
中间绿色的分支,有两个输入:VGG16的conv4 + 右侧蓝色特征点的分支输出结果,根据特征点的位置进行局部feature pooling。这一步有助于应对服饰变形和遮挡问题。
左边橘色分支,进行全局的特征处理。
绿色和橘色分支运算的结果经过fc7_fusion进行融合,预测服装的类别,属性和pairs
- 全局特征分支—— 整个服装商品的全局特征;
- 局部特征分支—— 由估计的服装关键点池化(pooling) 得到服装的局部特征;
- 姿态分支—— 预测关键点位置及其可见性(i.e., landmarks存在的概率).
前向传播(Forward Pass)
主要包括三个阶段:
- Stage 1 - 服装图像输入网络,在pose branch传递,以预测关键点位置landmark locations和可见性visibity;
- Stage 2 - 如下图所示得到将有visibility的地方从conv4_featuremaps中扣出来堆叠在一起,再各自乘以visibility经过maxpooling得到pool5_local的值。这样的操作使局部特征对服装形变和缺失具有不变性;堆叠的好处是增加landmark之间的关联性
- Stage 3 - 得到了pool5_local以后,fix conv4及以前的层训练对category和attribute的分类/预测。 fc7_fusion层是对 对 fc6_global 层全局特征和 fc6_local池化后的关键点局部特征的连接.
反向传播过程定义了4中损失函数:
(1)回归损失,用于特征点位置估计损失计算。
(2)softmax损失,用于特征点可见性以及服饰类别估计损失计算。
(3)cross-entropy损失,用于属性预测损失计算。
(4)triple损失,用于服饰pairs预测损失计算。
FashionNet是通过将以上4中loss进行加权处理进行优化的。训练过程分两步:
step1: 将特征点可见性预测与位置估计作为主任务,其余作为辅助任务,因此该过程中给L_visibility 和 L_landmark较大的权重,其余损失赋予较小的权重。
由于任务间有一定的相关性,因此这种多任务联合处理的手段能够加速收敛。
Step2: 使用特征点分支的预测结果,进行类别,属性以及pairs的预测。
以上两步不断迭代直至收敛。
实验:
- 对比方法选用了Where to buy it(WTBI) 和Dual Attribute-aware Ranking Network (DARN)。也与方法本身做了控制变量测试: +100和+500指使用attribute数量, joints和poselet替换掉了stage 1中的landmark预测。
- 可以观察到本方法在分类上有极大提升,无论是attribute数量还是stage1 landmark回归。->本文也可作为attribute prediction必要性的佐证。
- 在attribute任务上FashionNet与poselets方式准确率差距不大,但远超其他setting。但查全率Recall上我们可以看出FashionNet部分不足:e.g.,直觉上我们会把deep-V和V-neck联系到一起,但从performance上看网络没有抓到二者关联性:在attribute处理上可能仍需要引入embedding,尤其是我们需要上千attributes的时候one-hot的label presentation比较乏力。此外一些Style例如Distressed(做旧,I guess视觉特征是有破洞)以及heart(衣服中间有心形图案)都没被predict到,大概是衣服中央的图案会被landmark周围细节信息淹没掉。故可能在feature fusion可以做attention或window