Bo Zhao, Jiashi Feng ,Xiao Wu ,Shuicheng Yan
Southwest Jiaotong University ,National University of Singapore ,360 AI Institute
1.Motivation
基于时尚服饰的图像搜索引擎,用户给出一张图片,系统检索到相似的图片推荐给用户。但有时用户可能对检索用的图片不是很满意,希望修改其中的一些属性。
作者提出了 fashion search with attribute manipulation的概念,允许用户给出图片的同时加入一些关键词描述图片中没有的属性。为了达成修改图片中的某一属性而不影响其他部分的目的,作者基于LSTM和神经图灵机的启发提出了Attribute Manipulation Network,能够在属性级别改变图片的表达.
2. The Attribute Manipulation Networks
2.1 Attribute Representation Learning
整体结构如图所示,这里有两个Attribute represent net,共享权重,其中一个用于提取reference图像的属性特征用于后续的修改,另一个用于在训练时的triplet组中的Positive和Negative图像,其中Positive图像是完全符合对属性要求的,Negative图像是随机从数据集采样的。
2.2 Memory Block for Attribute Manipulation
Memory Addressing:
M 是一个C*Q维的矩阵,其中C表示了所有M个属性包含的值的个数,Q是每一个属性特征的维度。M 矩阵的每一行代表了一个属性的原型表示.h是一个C维的one-hot vector 表示对于需要修改的属性的索引
h'是对h进行了归一化
由此,需要修改的属性可以表示为:
t是一个由多个属性原型组合成的Q维向量。
Memory Updating:
按照如下公式更新M矩阵,由于eq2是可微的,所以可以进行端到端的训练。
Memory Initialization:
一个带有全连接层的CNN被训练用于给属性分类,然后用这个训练好的CNN提取训练集中所有具有相同属性值(eg:所有红色衣物)的图像的特征,然后做平均,作为Memory中属性原型的初始化值。
2.3 Attribute Manipulator
r为原始的图像表达,t为属性的特征,将两个向量直接相连(2Q维),然后乘以W将维度变回原来的Q维.
2.4 Loss Layer
AMNet包括两种Loss,Classification Loss与Ranking Loss.
Classification Loss:
作者在得到r'后定义了M个分类器(对应attribute的数量),分别计算分类的Loss.注意到经过Manipulator,r'的属性已经发生了变化.
Ranking Loss:
一个Triplet Loss,希望修改过的图像的feature r'距离负例比距离正例大一个margin.
Networks Optimization:
SGD优化,总的Loss由两个Loss按一定的权重组成.
3.Fashion Search with Attribute Manipulation
给出Query图片和需要修改的属性,按照eq4得到r',然后分别与gallery中的图片计算欧式距离,排序检索。
4.Experiments
使用了DeepFashion和DARN数据集,作者对比介绍了三种Baseline,
attribute-based retrieval model:使用Alexnet预测属性,然后用想要的属性取代不想要的属性(不知道这一步是怎么做到的),然后用fc7的feature去检索galley中的图像.
AMNet without memory block:取消Memory block,直接将one-hot vector和图像的特征串联.
AMNet without ranking loss:取消了ranking loss
总结:这篇文章为属性分别建立了原型,在此基础上对reference的图片进行属性级别的修改,得到新的特征向量用于检索图片.
作者在DeepFashion数据集上进行的试验为:
选取Texture这个attribute group包含的156个属性进行实验,首先对每个属性找200个样本(正负样本各半?),去训练一个AlexNet.猜想这里是个分类任务,训练集为200*156,分156个类.训练好的网络用于提取属性对应图片的feature.从数据集中取20万张图片建立一个检索空间,取5000张作为测试集.剩余的图片用作triplet.
Top20的检索准确率是33.8%(在改变一个属性的情况下)