Efficient Multi-Attribute Similarity Learning Towards Attribute-based Fashion Search

Kenan E. Ak,Joo Hwee Lim,Jo Yew Tham, and Ashraf A. Kassim
National University of Singapore, Singapore Institute for Infocomm Research, A*STAR, Singapore ESP xMedia Pte. Ltd., Singapore
@WACV2018
Shopping 100K:
为了排除人体姿态变化对识别的影响,作者建立了Shopping 100K数据集,这个数据集每张图片只有单纯的服饰和简单的背景,最终数据集中包含了101021张图片,每张图片对应12个属性以及151个属性标签。作者将12个属性分为两类:General(category,fabric,gender,length等) 和Special (collar,color,patern,sleeve length等),认为对Special属性进行操纵是比较合适的。
部分属性

Part Guided Fashion Retrieval Network

Problem Formulation

给出query image I q ,以及对应的标签向量 ( g q 1 , g q 2 . . . g q G ) , ( s q 1 , s q 2 . . . s q S ) ,其中 G S 是对应属性标签的数量.作者将可能的任务分类两类,一种是直接根据给出的 I q 检索对应的具有相同属性的图片,第二种情况用户希望将给出的 I q 中的 s q 2 变为 s q 2 ,作者通过将 s q 2 对应的特征向量直接替换为 s q 2 的表示,而保持其他属性不变.

Architecture Overview

这里写图片描述
网络的前半部分采用了AlexNet的结构,conv5的输出被分为三个部分,其中左边的部分用于提取全局的特征,进而对General Attribute进行分类和计算loss.loss由两部分组成,分别是分类损失和Triplet损失.在fc7后面作者添加了一个名为Extract parts的全连接层,这个全连接层的输出决定了部分提取的方法(右边的部分)是否适用.在右边的部分,通过ROI pooling层提取特定位置的特征,然后为每一个special的属性单独建立了分支,并计算loss.

Part Extraction

为了减少开销,作者并没有选择有监督的目标检测算法来进行ROI的提取,而是采用了 jump detection算法.
这里写图片描述
这里作者采用了基于颜色的直接分割算法,得到了一个黑白的模板,由于上衣的躯干部分和袖子之间有空隙,根据这个特征就可以找到左右袖子的部分.于是上衣可以被近似的分为四个部分:躯干/左右袖子以及领子.
Extract parts作为全连接层的输出包括了三种情形:如果输出为下身的服饰,则不进行part extract,如果检测到袖子,则启用part extract,如果检测结果为无袖上衣,则提取剩余部分.对于非上衣的情形,则不进行ROI的提取,而是直接将全局信息送入右边的分支用于Special attribute的检测.

Loss Computation

文中共出现了classification loss和Triplet loss,其中对于所有 G + S 个属性,都分别进行预测并计算损失.使用交叉熵损失

L a t t r i b u t e = Σ i = 1 N Σ a = 1 G + S l o g ( p ( g i a = y i a ) )
对于Triplet loss则有
L t r i p l e t = Σ i = 1 N Σ v = 1 S + 1 m a x ( 0 , m + d ( f c 7 v ( i ) , f c 7 v ( i + ) ) f c 7 v ( i ) , f c 7 v ( i ) )
这里写图片描述
如图所示,Triplet loss的目的是使得提取到的A-P之间的特征的欧式距离相比A-N之间的欧式距离更近,尽管在整体上看A-N的视觉特征更为相似,经过训练,CNN可以学习到针对领子属性局部的特征.式中的S+1代表了S个part对应的special属性,以及一个General的属性.

Fashion Search

在训练完成后,对于每张输入的图片,获得是S+1个fc7特征向量,因此在检索时,对图库里的所有图像计算

D ( i , r ) = Σ v = 1 S + 1 d ( f c 7 v ( i ) , f c 7 v ( r ) )
选取D最小的即为属性意义上接近的图像.为了实现Attribute Manipulate,只需要将希望变更的属性用对应的‘generic’特征向量进行替换即可.generic向量是通过将所有拥有该属性的图片通过Model提取fc7特征并取平均值得到的.

Personalization of the Fashion Search

作者提出了一种动态反馈的机制,意在为检索计算D的时候加以权重,即给用户更加关心的属性更高的权重.

Experiments

作者在Shopping 100K上对一些有竞争力的方法进行了比较,其中包括AMNet(前一篇文章中的方法),在检索任务中主要使用了Top-k 准确率,如果所有属性完全一样记为1,否则记为0.在Manipulate任务中,对于操控的属性个数,上限为2.这里写图片描述
作者比较了AMNet和其他3个方法(基于本方法的弱化版),左图是直接检索的Top-K准确率,诡异的是没有AMNet的结果.右图是在进行AM之后的检索,其中本文的方法准确率53.1% 相对的直接检索准确率是56.3%,而AMNet则是45.8%的AM检索准确率.以上准确率都是Top-20的.

总结,三篇Attribute manipulate,本篇是结构最复杂的,复杂之处在于对每一个属性都单独提取特征,单独进行Manipulate,在一定程度上加入了位置信息,相比于AO将属性存储为矩阵并完全不涉及位置信息,以及上一篇Memory-Augmented Attribute Manipulation Networks for Interactive Fashion Search中将属性和图像整体映射到同一个特征空间再连接起来以进行Manipulate,这篇对于属性的信息显然更多.但是前两篇在Manipulate后仍然保持了图像提取的特征向量的形式,然后进行检索,这篇直接用S+1个属性对应的特征进行检索的做法,和在此基础上对每个属性分别Classfication然后直接对label更像,也就是离图像更远。另外,本篇和AMNet的对于属性原型的提取做法几乎一样,不过本片的’generic’ feature并没有学习的能力.