导 读
作为一家以视觉为主的图片社交网站,Pinterest丰富多彩的图片内容深得用户喜爱。但图片不同于文字,在数量巨大的图片资源中准确找到自己想要的目标素材,成为用户最大的需求。于是,视觉搜索技术应用而生。一方面,从技术层面上,Pinterest的视觉搜索功能中应用了哪些深度学习和AI技术?另一方面,在移动搜索时代,有人说视觉搜索是搜索领域的未来,如今很多企业也已经开始将其应用于产品和服务中,包括电商和社交网站等。然而,也有人质疑视觉搜索根本就是“鸡肋”,满足不了用户多种多样的需求。那事实究竟是怎样的呢?我们来一探究竟。
视觉搜索是最近计算机视觉的热门研究领域,又称基于内容的图像检索。这个研究热点主要由井喷式增长的在线图片和搜索引擎的流行所驱动,目前,Pinterest Lens(Pinterest的搜索类似图片应用)、Google Goggles(Google的照相搜索App)、Google Similar Images(Google的相似图片搜索)和Amazon Flow(Amazon的增强现实购物应用)是几个商业化视觉搜索系统中较为成功的案例。今天我们以Pinterest为例,详解视觉搜索技术应用的AI相关技术和架构,以及探讨一下视觉搜索是不是一些人口中所谓的“鸡肋”。
Pinterest目前拥有超过2亿的月活用户以及超过100亿张图片,产品的独特之处在于能为每位用户创建一个特有的“品味图谱”,并且以此为基础,推荐他可能感兴趣的事物。图片是每个Pin的焦点,所以视觉特征在为用户发现兴趣,灵感和相关内容上起到了非常重要的作用。
举个例子,用户Pin一张关于coach包的图片到一个名为”coach totes”的Borad中,这一过程对coach包这个主题就创建了集合。这个“用户<->Borads<->图片“图谱关系包含丰富的关于图片和它们语义关系的信息。当这张coach包的图片被Pin到一个Borad中,表明在这个新borad和其他所有包含这个图片的board有一个“策展联系”。通过这些描述图片、图片的borad和其用户的联系,相关的大数据(比如,图片的注释)能够不断增长。
得益于近几年计算机视觉的发展,尤其是卷积网络的使用和GPU的发展,使图片分类和物体检测技术突飞猛进,Pinterest视觉搜索中采用了以下技术:
图片特征提取过程中,从深度卷积神经网络(CNNs)的活性中间层中提取深度特征,基于AlexNet和VGG的结构,来提取fc6和fc8层的特征表现。这些特征为了有效地表现被二值化,并且用汉明距离(Hamming Distance)进行比较。Pinterest使用开源的Caffe架构,在多GPU机器上来训练和推算CNNs。
(From Pinterest Visual Search talk@Berkeley 2016)
端对端搭建执行一个视觉搜索系统,来检索Pinterest中的数十亿图片时,根据平衡经费时间限制和快速实现的需要,着重致力于以下几个方面:
图片中特征向量的提取以及物体检测
搭建指纹增量服务为Pinterest所有的图像计算特征
根据Pinterest各种产品应用的不同性能以及成本需求,搭建灵活可重构的分布式可视化搜索系统
本文着重介绍了(2)和(3)两个方面:
搭建指纹增量服务为Pinterest所有图像计算特征
孙彦向AI前线介绍道,Pinterest多数的视觉应用依靠于拥有一个完整的视觉特征集合,这个集合以适合于批量处理的格式存储。因集合包含超过十亿独特的图像,保持这个数据的更新是具有挑战性的,Pinterest需要增量地更新特性集,并且尽可能避免不必要的重新计算。
指纹增量服务(Fingerprint Service),就是根据上述需求Pinterest所有的图像计算特征,通过使用在Amazon EC2上的工作群。它主要在两个场景下逐步更新特征集合:有新图片上传到Pinterest,和需要特征迭代时。
Pinterest采用的一个办法是是将图片集划分到由上传时间确定的时代(epochs)组中,并且为每个特性类型(全面的,本地的,深度特征)的每个版本维护一个单独的特性存储区。这些特征类型被大量存贮在Amazon S3,以特征种类、版本、时间来组织管理。当数据完全更新时,每一个特征存储都会包含所有的时代组。在每一次运算中,系统发现每个特征的缺失时代组,随之安排分布式队列工作来为缺失组计算结果。每一天,一个带有当天唯一上传时间的新特征组被加入到Pinterest的图片集合中,触发队列工作为那个日期生成缺失的特征。另外如果生成某个特征的算法或者参数被修改了,或者有新的特征加入,那么新的特征存储计算工作将被触发,同时所有的年代组会为修改/新增特征重新计算。这个方法保证久的图片/不改变的特征不受影响从而节省了计算量。
这些特性会被复制到以便其他工作访问的形式,每张图片所有这些特征会合并,组成它所有特征的指纹(fingerprint),然后指纹会被复制分享,形成为根据图片特征(应用了MD5 hash)随机访问的排序文件。这些加入的指纹文件会定期地被rematerialized,但是那些昂贵的特征计算只需要每张图片计算一次。
具体流程如下图所示:
(图片来自https://labs.Pinterest.com/user/themes/Pinlabs/assets/paper/visual_search_at_Pinterest.pdf)
根据Pinterest各种产品应用的不同性能以及成本需求,搭建灵活可重构的分布式可视化搜索系统
在Pinterest,分布式可视化搜索系统有不同的应用。其中一个应用是发掘相似外表的产品(Pinterest Similar Looks)以及其他包括近似重复检测和内容推荐等。在所有这些应用中,视觉相似结果是通过Visualjoins的分布式索引来计算的。由于每个用例有不同的性能和成本需求,Pinterest的搜索基础被设计成灵活并且可重构的。下图展示了搜索基础的流程图。
(图片来自
https://labs.Pinterest.com/user/themes/Pinlabs/assets/paper/visual_search_at_Pinterest.pdf)
首先Pinterest用Hadoop从Visualjoins创造了分布式图像索引。每台机器包含索引(和特征),这些索引和整个图片集合的随机分散的子集相关。这里使用了两类索引:
第一种是基于磁盘(和部分内存缓存)的token index,将每个矢量量化特性(比如,视觉词汇token)与图像文档ID的展示列表关联起来。这与基于文本的图像检索系统类似,只是文本被视觉标记所替代。
第二个索引是一个视觉特性和metadata的内存存储,比如,图像注释,以及从“用户<->board<->图像”图计算得出的主题向量。
第一类适合于快速(但模糊)查表,第二类适合于更精确(但较慢)排序优化。
每一台机器运行一个leaf排序器,从使用视觉特征的索引中计算k最近邻(k-nearest neighbors),然后使用其他非视觉特征重新排序顶部的候选数据。在某些情况下,leaf排序器跳过token索引,直接用类似KNN方法从特征树索引中检索k最近邻。另一台机器上的一个根排序器将会从每个leaf排序器取回最高分数的结果,并且将这些结果整合,然后返还给用户(为了处理Pinterest的实时特征提取器生成的新指纹,Pinterest有一个可视化搜索渠道的线上版本,来运行和上述非常相似的过程)。(本部分采访嘉宾借鉴了https://zhuanlan.zhihu.com/p/27381765的翻译,感谢知乎用户“李粒PM/Brony/Geology”的翻译)
下面举个例子来看下Pinterest的视觉搜索流程。
当一个视觉搜索query被提交后,Pinterest从上文提到的FingerprintService提取它的深度视觉特征以及其他特征
接下来根据这个query的类型(来自不同的产品应用),根据上文的索引不同的shards会收到query并在每一个shard内部根据query图片的深度特征做KNN search,并找到N个(N >top K)候选图片
同一个shard内部会进行重新排序(rerank)并把top K结果返回根排序器。
根排序器根据shards返回的结果做整合并把结果返还用户。
(From Pinterest Visual Search talk @ Berkeley 2016)
据了解,Pinterest已经在多款应用和产品中采用视觉搜索技术,包括相关Pins、Flashlight等。
Related Pins——当用户点击一个Pin,这个Pin下方会显示一系列相关的Pins。
Flashlight——用户可以利用搜索框锁定图片中的物体,得到类似的物体/商品。
Lens——用户可以对感兴趣的物品拍照并得到更多关于物品信息以及类似的图片。
(来自https://arxiv.org/pdf/1702.04680.pdf)
Shop the look——用户可以点击图片中的商品从而在Pinterest上浏览并购买。
Pinterest的视觉搜索可以实现为电商和各种客户导流的服务功能,是该公司变现的途径之一,在孙彦眼里,视觉搜索技术与电商的结合前景如何呢?
孙彦告诉AI前线,“这是一个充满机会并且非常有希望的方向,也是我司在2018年着重发展的一个目标。调查显示,Pinterest 93%的用户在购买之前都使用Pinterest浏览计划,利用视觉搜索技术为有购买意向的用户提供精准的结果会帮助公司在电商这个方向更好的发展。”
事实上,由于视觉搜索技术与电商平台图片搜索的高度契合,这项技术已经被很多电商平台采用,例如国内的阿里巴巴、京东等。
相比之下,各平台使用的视觉搜索技术大同小异,那Pinterest的视觉搜索技术有何独到之处?又是如何在竞争中取得优势的呢?
孙彦说道,“我们的初衷是帮助用户发现并推荐他感兴趣的事物,在电商方向的应用是其中之一,但更多时候,Pinterest希望帮助用户从海量信息中发现用户有兴趣的事物和创意,并在现实生活中探索实现。与竞争者不太一样的是,我们的大量用户在使用过程中往往是抱着explore或是模糊查询的想法,比如用户刚买了房子,想寻求某种风格的客厅装修,或者用户在筹备婚礼时想寻求设计请帖的灵感,甚至于在超市看到特价的龙虾于是想寻求海鲜晚餐的菜谱等等。我个人认为,用户极其多样化的需求是Pinterest不同于其他竞争对手的主要特点,这一点也是我们产品开发,视觉搜索技术发展的灵感源泉,让Pinterest努力做得更好。”
视觉搜索听起来高端大气而且非常有趣,但这种技术的价值何在?它的应用场景和商业化潜力有多大?各个电商平台的视觉搜索功能用起来体验怎么样呢?带着这些问题,AI前线对当前国内比较流行的淘宝、京东、蘑菇街、美团、美团外卖、华为商城app进行了视觉搜索功能实际效果亲测比对。
图1
(图左,图右)
以上为AI前线亲测几家电商平台视觉搜索结果截图,其中图左和图右均为使用同一张图片(图1,颈枕)进行拍照搜索的结果,图左为淘宝,图右为京东,而蘑菇街、美团、美团外卖、华为商城app目前还未上线视觉搜索功能,只能通过扫描二维码获得商品信息。从图中可以明显看出,淘宝的搜索结果优于京东,而京东的搜索结果种类、颜色、形状均与测试图像相差甚远。
对这几家平台的比对目的不在于“黑”任何一家平台或是视觉搜索技术,只是出于测试视觉搜索功能的便利性究竟如何,请轻拍砖。
这次简单的测试结果似乎有点尴尬,由于技术上的限制,视觉搜索技术的功效在一定程度上确实挺“鸡肋”的,甚至满足不了用户基本的需求。同时,这也反映出视觉搜索技术的难度所在,以及在商业化道路还有很大空间。
但这门技术真的就如此而已吗?还得靠数据说话。据Pinterest实验室给出的数据,在视觉搜索功能的帮助下,Pinterest的公司业务和用户体验都有所提高。线上实验表明,用户在related Pins的参与度在视觉搜索技术的帮助下有了5—10%的提高。
(https://labs.Pinterest.com/user/themes/Pinlabs/assets/paper/visual_search_at_Pinterest.pdf)
另一方面,Pinterest的广告投放也在利用了视觉深度特征后精准度点击率提高,目前三星和LG Electronics都在移动设备上植入了Pinterest的视觉搜索API,给用户带来更好的视觉搜索体验。
“我个人认为,视觉搜索代表移动搜索未来的一个主要方向。视觉搜索是可以改变人类生活的,一个例子就是在零售业,‘以图搜图’帮助用户解决无法用语言精准描述某个产品的难题,提升购物体验,改变用户的行为。同时无人零售,安防识别,无人车技术等都代表了Pinterest日常生活中有可能被视觉搜索深深影响和改变的方向。”孙彦对视觉搜索在移动搜索方向的前景做出了如此的预测和评价。
嘉宾介绍
孙彦,毕业于美国耶鲁大学计算机系(硕士)。曾任职Workday、Groupon等公司从事算法推荐、机器学习相关的工作。目前就职于Pinterest旧金山总部的视觉搜索团队,担任高级工程师。自2014年入职Pinterest以来,先后作为Topics、Ads-Targeting等团队的初创人员,为Pinterest国际用户活跃度和Revenue增长作出直接贡献。目前专注于推荐系统实现,机器学习模型的构架和特征工程的研发。工作之余喜欢钻研厨艺。
QCon上海2018
在即将于10月18-20日举办的QCon上海站,我们有幸邀请到孙彦老师,和我们分享Pinterest的视觉搜索架构和搜索流程,包括图片特征向量提取、模型训练、分布式视觉搜索渠道的流程,以及在Flashlight、Len Your Look等主要相关产品中的应用。
如果您想到现场来和孙彦老师以及各位演讲嘉宾们面对面交流,现在点击“阅读原文”报名可以享受八折优惠。