服饰搭配推荐研究综述

Paper reading

Posted by Shaozi on September 10, 2019

由于近期在优化服饰搭配算法时碰到了很多难以回答的问题,所以收集了一些最近公开的改领域的论文,对其中的相关理论,算法和实验进行了整理,希望能够回答一些当前存在的疑问,并指导后续的工作。

服饰搭配领域的问题及难点

当前相关研究主要围绕三个问题展开:

  1. 这一套服饰组合是否是相搭的
  2. 如何生成一套相搭的服饰
  3. 为什么这套服饰相搭

这些问题的核心是:

  1. 如何表示不同的时尚服饰
  2. 如何对搭配关系建模
  3. 个性化推荐

这也是服饰搭配面临的难点。

服饰搭配数据来源及评价方法

在介绍算法之前,先整理一下近期该领域论文中使用的实验数据集的来源及使用的评价指标。

数据集

  1. Maryland Polyvore(已下载):该数据集包含21889套搭配,来自polyvore的用户点击及下单数据。是目前学术界最通用的评价数据集。平均每套搭配包含6.5件商品。
  2. Polyvore Outfits(已下载):该数据集是Maryland Polyvore的增强版,包含53306套搭配。
  3. Polyvore-T datasets(叶韵老师的工作):该数据集对Maryland Polyvore数据集进行了扩充,标注了商品的色彩等信息。
  4. The Fashion-Gen Outfits dataset(地址):原始数据集是用来进行服饰生成的,但是原始数据标签中包含了搭配信息,总共包含60159套搭配。
  5. Amazon product data(地址):亚马逊商城的用户点击及下单数据,包含的数据量很大。对服饰相关的商品进行清洗后,可以得到用于搭配生成的数据。
  6. ASOS outfits dataset(该数据集尚未公开):ASOS.com网站的商品搭配数据,和Farfetch一样为设计师搭配的数据,包含586520套搭配。

另外还有一些可以用来爬取搭配数据的网站:

  1. https://www.net-a-porter.com/cn/zh/
  2. https://www.modaoperandi.com/
  3. https://www.asos.com (怀疑该网站已经上线搭配算法,故展示搭配结果不一定是设计师所搭)

评价指标

对出现在文献中的评价指标进行了整理:

  1. Fill In The Blank (FITB):填空题,有文献指出,题干中包含的商品数量越少,题目越难。
  2. Outfit Compatibility Prediction (AUC):衡量模型对正确一整套配的召回水平
  3. type-pair AUCs: 有文献指出Outfit Compatibility Prediction指标对于一个模型在不同的数据集下的结果的评价会存在较大的差异(因为不同数据集的平均搭配商品数量不同),采用成对的商品的召回评价指标更能衡量相同的算法在不同数据集下的结果。
  4. Item-item recommendation based on the compatibility score(AUC, Hit Ratio @ k):类似拍照购特征模型的评价方法,计算一个搭配对在一定数量的不相关底池中的召回结果。
  5. Binary classification of genuine and randomly generated outfits:对于随机生成的搭配和正确搭配的分类准确度。
  6. AB test:主观AB测试

其中1和2是较为常用的评价方法。

算法整理

由于目前主要在优化服饰搭配核心问题的前两点,所以算法中暂不涉及个性化推荐部分。

目前主要的服饰搭配算法大致分为三个流派:

  1. 基于metric learning的
  2. 基于classification的
  3. 基于GCN的

其中第一种最为主流。

基于metric learning的服饰搭配算法

Learning Type-Aware Embeddings for Fashion Compatibility【code】

这类算法将多件服饰的搭与不搭的学习视为一个特征空间的度量学习过程。其中以Learning Type-Aware Embeddings for Fashion Compatibility最为标准。

Learning Type-Aware Embeddings for Fashion Compatibility

该方法提出了一个较为通用的度量学习方案,被其他工作广泛使用,其中核心是Condition-Aware Embedding的思维,在文中表现为type-aware。也就是对于不同的商品类别,映射不同的特征空间。这种映射方式最大的优势是保证了距离度量关系的一致性,也就是避免了在唯一特征空间下,不同搭配传递关系导致的模型混乱(A-B 搭, A—C 搭, B-C 不搭, AB拉近,AC拉近后BC也被拉近的问题。由于ABC分属于不同的type,在AB对应的特征空间,AB被拉近;在AC对应的特征空间,AC被拉近;在BC对应的特征空间,BC并没有受到影响)。

TransNFCM: Translation-Based Neural Fashion Compatibility Modeling

TransNFCM: Translation-Based Neural Fashion Compatibility Modeling 该方法实际上将原始方法的相乘的映射方法改为相加。使得映射空间并没有改变,但是对同一个特征空间划分了不同的区域,同样是将不同类型的商品进行了隔离。

Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network(【code】

Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network 叶韵老师的工作,使用了不同层的网络特征以及属性信息进行度量学习,学习方法和Type-Aware一致。并且使用梯度反向传播的最大值位置判断什么信息在一套搭配中起了关键性作用。是一个很有趣的工作。

Learning Similarity Conditions Without Explicit Supervision【code】

Learning Similarity Conditions Without Explicit Supervision

该方法更进一步,不再需要提供商品的Condition信息,而是使用一个分支网络生成weight来实现不同的空间映射,有点attention的意思。

Outfit Generation and Style Extraction via Bidirectional LSTM and Autoencoder

Outfit Generation and Style Extraction via Bidirectional LSTM and Autoencoder

该方法在标准的embedding模型的基础上,引入了LSTM提取序列信息,使得每一个搭配的特征都是唯一的。用整体特征部分代替了image level的特征。该论文的作者来自ZOZOTOWN(一个日本的服装电商),但是浏览其网页并没有发现有服饰搭配的展示。

基于classification的的服饰搭配算法

归根结底,服饰搭配问题是一个二分类问题,模型的输出最好是搭或者不搭。但是受限于实际使用时的计算开销,基于分类的算法并不是特别实用。在基于metirc learning的服饰搭配算法中也有部分是使用了分类手段的,比如叶韵老师的算法中就实用了一个二分类器在metric learning的基础上进一步判断结果的搭配程度,进而通过梯度回传来提供搭配建议。

Fashion Outfit Generation for E-commerce

Fashion Outfit Generation for E-commerce

这篇论文的作者来自ASOS.com也是一个服饰电商。并且已经将自己的搭配算法应用在了商品推荐上。该算法首先提取了多种图片和文本信息,然后抽取特征,最后对特征进行整合并通过一个分类器给出搭配的打分。在实际使用时,使用如下图所示的分级结构,生成指定商品数量的搭配。实际该过程较慢。但是可以离线完成。

搭配过程

想法:我们的搭配购能不能离线生成支持的商品的所有搭配结果并存下来,当用户调用拍照购产生搭配query时直接返回已经生成的搭配结果即可

Using Discriminative Methods to Learn Fashion Compatibility Across Datasets

Using Discriminative Methods to Learn Fashion Compatibility Across Datasets

该论文是一个标准的分类模型,算法上没有什么好说的。由于该论文使用的实验数据除了polyvore以外都是通过爬虫爬取,所以和我们的数据组建方式很相似。在实验部分,论文对比了不同数据集下训练的模型对于同一个query召回结果的差异:

召回结果差异

可以看到不同数据集下训练的模型风格有明显的差异。polyvore下更偏向于召回相同色系的搭配,Mode偏向于休闲的风格,Farfetch更偏向于大胆的色彩,Nap更偏于黑白的经典穿搭。

基于GCN的服饰搭配算法

这部分目前只看到了一篇Context-Aware Visual Compatibility Prediction【code】,也是当前在polyvore数据集上性能最好的一篇。目前这篇论文的模型已经在polyovre数据集上复现成功,AUC指标能够超过0.99。

Context-Aware Visual Compatibility Prediction

该算法整体框架不复杂,首先使用一个基础网络提取图像特征,然后通过搭配标注构建图模型,经过三个GCN层之后送入一个分类器判断是否相搭。实际上也是一个基于分类的算法。模型训练速度很快,但是测试速度很慢(代码可能未优化),准确度很高。