您的位置:首页 > 其它

DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations论文阅读

2018-03-10 11:59 721 查看

1 问题背景

衣物易变形,衣服本身是柔性很大的物体,人摆出千奇百怪的姿势时,同一件衣服的样子会非常不同

在不同条件下拍出的衣服图片差距也非常大,比如模特的摆拍照和消费者的自拍照差别就很明显

衣服的设计包含了大量细节特征,比如领型、版型、衣长、装饰等等,想要算法区分出它们难度很大

2 解决思路

用带有成百上千的细节标签的图片来训练模型,使其学到能够区分这些细节属性的特征

使用同一件服装多个拍摄者提供的图片作训练,增加模型对此的鲁棒性

对服装的姿态进行估计,在若干关键点处提取特征,以抵消严重形变带来的影响。直观上,尽管衣服的形态可能千变万化,但只要在领口、袖口、下摆等一些固定区域去比较,其特征仍然非常稳定。

3 数据形式

来源电商和搜索引擎的图片数据,共80万张标注的数据。用来训练FashionNet网络的30万,5万做验证

数据地址

数据如下形式:





4 网络结构



1. 和VGG16相似相似,都能很好的解决对象识别和分割问题

2. 网络结构从顶层到倒数第二层都和VGG16相似,最后一层是专门为服装设计的

3. VGG16的最后一层被三个分支取代。

 - 蓝色:也就是1,主要的作用就是估计服装关键点,以及判断是否有关键点

 -绿色:图中的2模块,在1中预测的关键点位置处进行local pooling,提取局部特征,

 - 红色:图中的3模块,捕获整个衣服的全局特征特征

 -2和3模块相结合,预测衣服的种类属性

5 具体的过程

前向传播:将图片喂到1模块,预测服装的关键点,然后传到2模块,来控制pool5_local层,该步可以解决衣服局部特征易变化和遮挡的问题,最后和3模块联合输出。

反向传播:有四个损失函数

是服装关键点位置的regression loss



D 为训练样本数

VjVj第j个关键点是否可见,可见为1,不可见则为0,控制是否进行损失函数计算

ljlj 第j个关键点的坐标

预测关键点可见性和服装类别的softmax loss

  针对分类标签可视化和精细(fine-grained)分类采用1-K的 softmax loss,它们分别被称为Lvisibility和LcategoryLvisibility和Lcategory

属性预测的cross-entropy loss



  其中xj和ajxj和aj为第j个属性标签 w
d1d2
pos和wnegwpos和wneg为两个属性,由正负样品的比率决定

成对(pairwise)服装图像度量学习的 triplet loss



  这里有一个三元组(x, x+, x-),其中x+和x-是指相对x的相同和不同的衣服图片,d()是距离函数,m是边缘参数

  FashionNet是通过以上几个损失函数加权组合来优化

迭代训练步骤:主要有以下两步,不断迭代,直到收敛

第一步:蓝色分支作为主要的任务,其余分支作为辅助任务。分配Lvisibility和LcategoryLvisibility和Lcategory更大的权重,其它的损失函数较小的权重,这是因为其它的任务和关键点的训练是相关的

第二步:预测衣服种类和属性,同时学习两个衣服成对的关联性。在这一步中利用关键点坐标池化局部特征

Landmark Pooling Layer



该landmark pooling 层的输入是 feature maps(如 conv4 ) 和 估计的 landmarks.

针对每一个关键点位置 l,首先,确定其可见性 v. 不可见关键点的响应设为 0;然后,对关键点周围区域进行 max-pooling 操作,以得到局部 feature maps,并堆积成为 pool5_local 层的最终 feature maps.

landmark 池化层的反向传播类似于 Fast R-CNN中的 RoI pooling 层. 不同之处在于,Fast R-CNN中的 RoI 层将池化的区域(pooled regions) 独立对待,landmark pooling 层通过连接局部特征来捕捉不同服装关键点的交互关联性(interaction).

6 结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐