衣服匹配算法

Learning Type-Aware Embeddings for Fashion Compatibility

 

摘要

 

本文主要是为了解决,衣着(帽子,鞋子,衣服)同类之间的相似性,以及异类之间的兼容性问题。文中推荐的方法使用的嵌入向量的的方法,使用这个向量代表衣着的属性,这种方法可以解决以往模型所不能解决的服饰属性的代表性问题。比如从一堆帽子中选择适合衣着搭配的帽子。

 

简介

 

左边:传统的方式是将所欲类型的物体,嵌入到同一个空间中,匹配衣服和哪个鞋子最相似,以距离远近来度量。 右边:本文的嵌入方式,首先将所有的先嵌入到一个向量空间中,然后将共有向量空间映射到根据类别分割的子空间中,也就是说评价一个鞋子是否与外套相匹配,就需要在鞋子上衣空间匹配。与公用空间的计算大不相同,需要找到两双鞋子,一个是匹配上衣的,一个是和匹配上衣很不一样的。

 

传统的方式,进行嵌入会出现,嵌入向量不能表达类别的问题,这就会导致各种问题,比如鞋子和上衣匹配,上衣和裤子匹配,那么传统方式的嵌入向量就需要鞋子与裤子匹配。但是现实中这种情况是不对的。

本文中的方式,在训练公用嵌入向量空间的时候,使用了数据语义Loss, 将语义相似的放到紧邻空间,对每一个比对都放到一个比对空间中,这一步是基于距离度量训练的,以获得匹配分数。

 

 

使用type-specific投射,通用embedding到成对适配空间. 同时也训练了一个文本语义模型,正则化通用embedding,并且学习相似以及适配的关系。

 

 

 

 

相关工作

 

嵌入方法主要是根据提供的积极对实例以及消极对实例,来学习复杂的联系,目前主要的思路包括,triplet Loss(在人脸识别中具有很好的表现),孪生网络。但是这些特征提取的思路并没有区分类别。后来Han将装束的各类类别变量输入到LSTM。目前来说这些方法训练也是一种困难。

数据集合

使用的是自己采集的数据集合

在划分训练集和测试集的时候是非常有技术含量的,比如需要考虑训练集合中的一件衣服,应该出现在测试集合从未出现的着装中。

最简单的办法是,直接划分,但是有一个问题 一件衣服出现在了train的衣服组合中,也出现在了test的衣服组合中。

还有一个复杂,确保每种衣服只出现在一种数据集合中,使用图像分割算法确保每一件衣服都只出现在一个数据集合中,然后去除一些冗余数据。

类的嵌入向量

首先需要一个卷积网络

 

将图像对xi, xj映射成yi, yj。其中这种embdeding空间对于标注适配的对距离近,标注非适配的对距离较远

地中xi表示第i个物体。

 

假设有T个类别,例如xiT表示T类别的第i个, 一个triplet 数据如下{xiu, xjv, xkv},

其中(xi, xj)是合适的,但是xk是随机选择的,从来没有和xiu同时出现过。

u 是有空白。

 

我们定义M(u, v)为类别嵌入空间,在这里u和v适配。给出一个映射P:u->(u,v)

将类别u映射到M(u,v),这些映射是线性映射主要为了降低维度,对于适配的一组数据(xiu, xjv)距离

保持这个公式足够小。

其中公共的embedding空间向量f(xiu, theta),  f(xjv, theta)并不一定相似,这主要依赖与类空间的嵌入映射。

这种通用形式需要进行大量的计算才可,本文中研究了两步的简化方案。

首先使用对角映射度量,其中w(u, v)是一个d维的向量,然后将类空间中的,度量变成下面形式,

其中点代表元素之间相乘。 所以trible loss更改成如下结构

 

其中u是margin

 

学习embedding的限制

为了正则化适配的学习,使用了描述文本。对描述文本进行嵌入。

其中t代表x的文字描述,经过g后嵌入向量化。

一般认为图片和他自身描述会相似但是和其他描述会相差较大

限制在xjv, xkv

最后增加了L1针对映射的惩罚向量和L2针对初次embedding的惩罚向量。

 

 

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值