首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何做好大规模视觉搜索?eBay基于实践总结出了7条建议

作者 | Fan Yang

译者 | 马卓奇

编辑 | Natalie

AI 前线导读:本文是 AI 前线第 63 篇论文导读,来自 eBay 的作者结合他们的论文“eBay 视觉搜索”(KDD2017)给出了 7 条构建大规模视觉搜索的宝贵建议,希望能对你有所启发。

更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)

我们很荣幸于 2018 年 11 月 2 日参加 ODSC West 2018 的视觉搜索分会讨论,这篇文章是我们对发表在 KDD2017 上的论文“eBay 视觉搜索(Visual Search at eBay)”的总结。

假设你在一个看起来像一个大仓库的商店中,有许多用正整数标记的通道。eBay 在任何特定时间都有超过 1B 的活跃商品列表。所以,如果 eBay 是这样一家商店,它看起来就像 1999 年的电影 《黑客帝国》 中的无限储藏室。假设你有一张打印出来的管道零件目录,而你不知道你所寻找的零件的型号。你找到店员,指着纸上的零件图片。店员给你说了几个通道,比如说 183, 5276, 14098 号通道。如果没有这个信息,你必须经过每个通道,然后将管道的图片与通道上的每个项目进行比较才能找到你所要的零件。

如果这些零件看起来非常相似,这个比较任务就会变得非常复杂。在这种情况下,你需要注意每个细节,如颜色、形状、大小、品牌、包装等。如果通道是按商品的类型组织的,那么你可以从每个通道中大致查看一些商品,然后在相关的通道上花更多的时间去寻找。这是一项非常复杂的任务,如果你错过了感兴趣的项目,你可能需要把所有通道查找很多遍才能找到它。对于大规模搜索情况,算法搜索从本质上简化了这个过程。

正如我们的 KDD 论文中提到的,我们训练一个神经网络,从给定的图像中预测叶子类别(如图 1 所示)。这些叶子类别很像我们的“仓库”中不同的通道。这个基于神经网络的分类器就像我们的店员识别商品可能处在的通道位置。我们使用神经网络中 Softmax 层预测的概率,选择前几个预测概率最高的叶子类别。

图 1 列表由层级分类结构组织,其中终端条目称为“叶子类别”。这些标签可以用来训练一个深度神经网络来预测给定图像的叶子类别。

一旦我们找到了通道,我们需要知道如何比较两个图像(查询项目和货架上的项目)。我们用一个紧凑的签名来表示每幅图像,这个签名由一组数字组成的 矢量) 表示。这个签名由相同的弱监督神经网络来提取。我们通过训练带有 Sigmoid 层的网络来预测叶子类别,提取二进制失量(由 1 和 0 组成)。我们发现最好在所有的步骤中尽可能多地使用监督信息。由于对于每一个叶子类别,我们有许多多样的数据,所以我们训练网络来预测叶子类别。

你可以看下 ECCV2018 的“探索弱监督预训练的极限(Exploring the Limits of Weakly Supervised Pretraining)”(http://openaccess.thecvf.com/content_ECCV_2018/html/Dhruv_Mahajan_Exploring_the_Limits_ECCV_2018_paper.html) 论文,以了解预训练大型网络并迁移到其他任务的强大能力。这种弱监督以及训练期间的数据扩充(如裁剪、翻转、旋转)能够帮助网络忽略图像背景,并更多地关注图像的关键部分,从而产生紧凑的语义签名。这些签名容易进行对比。在二进制表示的情况下,例如本文的情况,我们可以基于 汉明距离 来计算匹配的比特位数。汉明距离相似性可以用来排序叶子类别中匹配的项目。匹配的比特位越多,匹配程度越高。

在大规模的商业视觉搜索中我们面临的主要挑战包括:

图像质量和构成不统一

商品存货清单比较大

商品存货清单严重细粒度

需要简单的架构和模型,便于维护

建立大规模视觉搜索系统的建议

下面,我们总结了一些构建大规模的视觉搜索系统的建议。这些建议也适用于非视觉或多模态系统。

1. 理解数据,并使用分层抽样

数据是确定整个过程策略的核心。图像质量可能会引入复杂性,需要谨慎处理。了解目录中的图像以及用户在视觉搜索期间上传的图像非常重要。图 2 给出了 eBay 手提包存货的一个子集的可视化结果。背景的复杂性以及手提包属性的复杂性混合在一起。图 3 表明了另一种情况:当引入相机姿态时,相同的对象可以有许多不同的视角。当我们训练神经网络时,使用多样性的、有代表性的图像集是非常关键的,以使神经网络能够处理数据集中出现的各种情况。

图 2 使用 t-SNE 对 eBay 的手袋图像的可视化。注意,大约 40% 的图像具有复杂的背景,略微超过 10% 的图像具有白色背景。用户上传的图像有更多的变化,比如旋转。

图 3 一个名为“法拉利 PUMA~ 红皮运动鞋~ 男式 8,5 号 (女式 10 号)”的 eBay 商品。同样的商品,非常不同的图片!

训练集的大小由诸如我们想要预测的标签数量、每个标签内数据的多样性、训练结构带来的内存和计算约束,以及训练这种系统的时间预算等因素共同决定。当我们为神经网络创建训练集时,我们对叶子类别、销售商、商品状态、品牌等使用分层抽样,最后去除重复样本,以确保数据丰富的多样性。

2. 数据增强是关键,特别是图像旋转。

当训练数据不能包含真实场景中可能发生的所有变化时,数据扩充是训练神经网络的关键步骤。当用户使用手机拍摄对象时,很可能图像出现被裁剪、旋转、变得模糊或者没有被缩放到合适的尺寸等情况。数据增强 (图 4) 生成数据中的各种变化,尤其是当这些变化容易出现在真实场景中,但是往往不会出现在 eBay 商品列表训练集中时。举个例子,eBay 商品列表中的图像不太可能旋转。然而,这种情况在用户上传的图像中经常出现。因此,我们发现图像旋转是数据增强中的一个重要操作。图像旋转在数据增强中经常被忽略,但是对于视觉搜索来说是十分重要的。

图 4 数据增强使我们能够从单个样本中产生更多的变化。这里展示几个选定的数据增广操作。图像旋转往往被忽略,但实际上它非常重要。

3. 提取语义签名时尽可能多地使用监督信息

正如上文中提到的,尽可能多地使用监督信息是非常重要的。这有助于训练分类器关注信息性内容而忽略其他非信息性区域。当实际任务(测量图像对之间的相似性)没有可用标签时,最好利用低采集成本、数量庞大且多样的数据进行强监督(例如叶子类别的预测结果)。

4. 签名的熵分析

这一步通常会被大型信息检索系统的系统设计所忽略。评估给定的签名容量内是否包括了足够的有效信息是至关重要的。例如,如果我们使用 8 位数字来表示二进制签名,我们可以表示多达 28 个独特的概念。在最佳情况下,每个数位值为 1 的频率为 50%。我们可以通过计算系统的熵,得到系统的有效比特长度,并与实际比特长度进行比较。有些情况下允许系统松弛来包容系统中的冗余不失为一个好办法(图 5),防止某些数位受到噪声和扰动的影响。

图 5 最优比特位占用对于最优信息表示是至关重要的。这张图片来自我们的论文,与 ImageNet 对应。84.1% 的数位在 45% 到 55% 的数据上是激活的(=1)。在系统中有一些冗余是很好的,因此对于所有比特来说频率不完全是 50%。

5. 当标签为粗粒度标签时,类内方差是很重要的。

我们使用粗粒度叶子类别标签代替产品 ID 来训练神经网络。部分原因是由于叶子类别虽然是粗粒度的,但是更容易获得。并且在服装和家具等类别中,有些商品没有产品 ID。典型分类系统的目标是最小化类内方差。理想情况是类内方差为 0。此时,一个类的所有样本都会坍塌成一个点(见图 6)。

例如,运动鞋的所有样本都会坍塌到一个点。但是,有很多独特的产品也属于“运动鞋”叶子类别,我们希望能够通过签名相似性找到它们。因此,我们认为,当标签为粗粒度但是需要进行细粒度搜索时,类间方差应该很高,但是类内方差也应该很高。这可以通过计算签名的熵来衡量,正如前面一条建议中所讨论的。

图 6 分类器的推荐一般是类内方差小而类间方差大。然而,我们要做到的是更好的细粒度搜索,因此类间方差大、类内方差大是很重要的。当每个聚类簇中的点都坍塌到单个点时,不可能进行细粒度匹配。该图显示了使用二进制签名绘制的 ImageNet 中的五个类,其中来自相同类的样本属于相同类型(与产品类别相同)。类内方差对于商业的大规模视觉搜索变得更加重要,其中我们使用粗粒度类别标签(叶子类别),目的是细粒度搜索(产品)。

6. 用排除法提高搜索速度和精度

专为高速度和高精度而设计的排除法具有强大的能力。例如,如果输入图像包含运动鞋,那么没有必要搜索裙子、桌子、计算机的库存清单。我们在 KDD 论文中提出,通过使用强分类器来预测前几个可能的叶子类别(通道)来减少搜索空间和提高精度(裙子的签名与鞋的签名不会混淆)是非常有效的。

7. 绝对 vs. 累积 top-k 划分

我们使用强分类器,一个使用强叶子类别标签训练的深度神经网络,来预测首选叶子类别(通道)。当首选预测的置信度较高时,则不需要搜索其他分区。然而,当首选预测不确定时,最好包括其他竞争分区。因此,我们建议使用累计 top-k 类别来获得更好的搜索精度,并且只在要求精确匹配的情况下使用绝对 top-k,即使这样做的成本较高。详情请参阅图 7。

图 7 假设我们使用前 5 个预测叶子类别,通过排除法来缩小搜索空间。我们建议使用基于累积分数而不是绝对分数的前 5 位类别。只有当精度没有召回率那么重要时,才使用绝对分数,例如在场景中不计代价查找精确匹配的情况。可以在 KDD 论文 (https://arxiv.org/abs/1706.03154) 中找到具体细节。我们在这个表格中给出了三个场景,得分阈值为 0.9。当置信度较低时,累积分数使用更多的类别(如 a、c 中的灰色单元格所示),当置信度较高时,累积分数使用较少的类别(如 b 中的灰色单元格所示)。

结 论

在这篇文章中,我们介绍了七条构建大规模视觉搜索的建议。此外,我们也建议最小化人工的作用(包括用于评估),周期性地重新训练模型以应对数据分布的变化,并且为了便于维护,将模型的数量保持在最小值。

想了解更多细节,请阅读我们发表在 KDD2017 的论文:“eBay 视觉搜索(Visual Search at eBay)(https://arxiv.org/abs/1706.03154) ”。

查看英文原文:Seven Tips for Visual Search at Scale.

https://www.ebayinc.com/stories/blogs/tech/tips-for-visual-search-at-scale/

点一下「好看」试试微信的新功能?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181230B0MIEZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券