NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Pinterest 视觉搜索工程师孙彦:视觉搜索不是“鸡肋”

  • 2018-04-10
  • 本文字数:5033 字

    阅读完需:约 17 分钟

导读:作为一家以视觉为主的图片社交网站,Pinterest 丰富多彩的图片内容深得用户喜爱。但图片不同于文字,在数量巨大的图片资源中准确找到自己想要的目标素材,成为用户最大的需求。于是,视觉搜索技术应用而生。一方面,从技术层面上,Pinterest 的视觉搜索功能中应用了哪些深度学习和 AI 技术?另一方面,在移动搜索时代,有人说视觉搜索是搜索领域的未来,如今很多企业也已经开始将其应用于产品和服务中,包括电商和社交网站等。然而,也有人质疑视觉搜索根本就是“鸡肋”,满足不了用户多种多样的需求。那事实究竟是怎样的呢?我们来一探究竟。

视觉搜索

视觉搜索是最近计算机视觉的热门研究领域,又称基于内容的图像检索。这个研究热点主要由井喷式增长的在线图片和搜索引擎的流行所驱动,目前,Pinterest Lens(Pinterest 的搜索类似图片应用)、Google Goggles(Google 的照相搜索 App)、Google Similar Images(Google 的相似图片搜索)和 Amazon Flow(Amazon 的增强现实购物应用)是几个商业化视觉搜索系统中较为成功的案例。今天我们以 Pinterest 为例,详解视觉搜索技术应用的 AI 相关技术和架构,以及探讨一下视觉搜索是不是一些人口中所谓的“鸡肋”。

基于 AlexNet 和 VGG 结构提取 fc6 和 fc8 层特征表现

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 中的数十亿图片时, 根据平衡经费时间限制和快速实现的需要, 着重致力于以下几个方面:

  1. 图片中特征向量的提取以及物体检测
  2. 搭建指纹增量服务为 Pinterest 所有的图像计算特征
  3. 根据 Pinterest 各种产品应用的不同性能以及成本需求,搭建灵活可重构的分布式可视化搜索系统

本文着重介绍了(2) 和(3)两个方面:

搭建指纹增量服务为 Pinterest 所有图像计算特征

孙彦向 AI 前线介绍道,Pinterest 多数的视觉应用依靠于拥有一个完整的视觉特征集合,这个集合以适合于批量处理的格式存储。因集合包含超过十亿独特的图像, 保持这个数据的更新是具有挑战性的,Pinterest 需要增量地更新特性集,并且尽可能避免不必要的重新计算。

指纹增量服务 (Fingerprint Service),就是根据上述需求 Pinterest 所有的图像计算特征,通过使用在 Amazon EC2 上的工作群。它主要在两个场景下逐步更新特征集合:有新图片上传到 Pinterest,和需要特征迭代时。

Pinterest 采用的一个办法是是将图片集划分到由上传时间确定的时代(epochs)组中,并且为每个特性类型(全面的,本地的,深度特征)的每个版本维护一个单独的特性存储区。这些特征类型被大量存贮在 Amazon S3,以特征种类、版本、时间来组织管理。当数据完全更新时,每一个特征存储都会包含所有的时代组。在每一次运算中,系统发现每个特征的缺失时代组,随之安排分布式队列工作来为缺失组计算结果。每一天,一个带有当天唯一上传时间的新特征组被加入到 Pinterest 的图片集合中,触发队列工作为那个日期生成缺失的特征。另外如果生成某个特征的算法或者参数被修改了,或者有新的特征加入,那么新的特征存储计算工作将被触发,同时所有的年代组会为修改/新增特征重新计算。这个方法保证久的图片 / 不改变的特征不受影响从而节省了计算量。

这些特性会被复制到以便其他工作访问的形式, 每张图片所有这些特征会合并,组成它所有特征的指纹(fingerprint),然后指纹会被复制分享,形成为根据图片特征(应用了 MD5 hash)随机访问的排序文件。这些加入的指纹文件会定期地被 rematerialzed,但是那些昂贵的特征计算只需要每张图片计算一次。

具体流程如下图所示 :

(来自 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 增长作出直接贡献。目前专注于推荐系统实现,机器学习模型的构架和特征工程的研发。工作之余喜欢钻研厨艺。

感谢陈利鑫对本文的策划和蔡芳芳的审校。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-04-10 18:311758

评论

发布
暂无评论
发现更多内容

私有化部署的理想选择,WorkPlus成为企业微信、钉钉的完美替代方案

WorkPlus

智能合约流动性挖矿开发技术详情丨质押挖矿dapp是如何开发计算系统程序的?

V\TG【ch3nguang】

销售易史彦泽:六个点复盘中国 SaaS 的2023

B Impact

JNPF:让应用开发更简单、快捷

树上有只程序猿

开发平台 低代码平台 JNPF

一次RPC请求过程

1412

c++ 开源 RPC workflow srpc

华为云发布CodeArts Link研发工具集成服务,无缝联接生态释放创新潜力

轶天下事

Chat Towards Data Science|如何用个人数据知识库构建 RAG 聊天机器人?

Zilliz

chatbot Zilliz zillizcloud rag

WorkPlus打造安全专属的移动数字化航空母舰,助力企业全面掌控业务和生态

WorkPlus

揭秘提升远程团队协作效率的秘密武器:这款在线白板工具不容错过!

彭宏豪95

远程办公 在线白板 办公软件 在线协同 在线协作

Linux cd命令:切换目录

智趣匠

恭喜!华为云通过中国信通院《API全生命周期管理能力评估》

YG科技

华为云应用中间件DCS系列 | Redis实现(视频直播)消息弹幕

YG科技

灵活、可用、高扩展,EasyMR 带来全新 Yarn 的队列管理功能及可视化配置

袋鼠云数栈

hadoop YARN CDH 资源调度 hdp

低代码助力软件开发

互联网工科生

软件开发 低代码

鲨海狂潮,存力崛起

脑极体

存力

设计一套评论系统

Kevin_913

Java 数据库设计 评论系统

redigo连接池的源码分析

胡译胡说

Go redis 源码 源码分析 连接池

Python 面向对象编程:类、对象、初始化和方法详解

小万哥

Python 程序员 软件 后端 开发

Java性能优化权威指南-读书笔记(一)

xfgg

Java

链游开发-资深技术团队-高效安全搭建

V\TG【ch3nguang】

华为云应用中间件系列,Redis实现(电商游戏应用)排行榜示例

YG科技

【鸿蒙生态千帆起】HDD扬帆上海,赋能广大开发者共赢未来

最新动态

DAPP 钱包单币丨多币丨 LP 质押挖矿系统开发(智能合约)

V\TG【ch3nguang】

华为云分布式缓存服务DCS,它与开源Redis有哪些差异,快来一探究竟!

轶天下事

全域Serverless+AI,华为云加速大模型应用开发

轶天下事

1024程序员节获奖名单公示~恭喜各位上榜同学

Openlab_cosmoplat

1024程序员节

WorkPlus平台级定制,让您完全掌控业务与生态

WorkPlus

华为云应用中间件DCS系列 | Redis实现(电商网站)秒杀抢购示例

YG科技

Tron波场链智能合约质押挖矿系统技术开发示例方案

V\TG【ch3nguang】

华为云OneAccess应用身份管理服务,认证授权双保驾,身份管理的选择关键

轶天下事

HTTP 中 POST 提交数据的四种方式详解

百度搜索:蓝易云

云计算 Linux 运维 HTTP post

Pinterest视觉搜索工程师孙彦:视觉搜索不是“鸡肋”_AI&大模型_孙彦_InfoQ精选文章