移动端的以图搜图是一代又一代的图像人,搜索人的梦想。从90年代开始,学术界,工业界做了很多的努力和尝试。阿里巴巴的智能图像搜索服务-拍立淘从2014年首次上线之后,通过技术的不断打磨,已经成为淘宝每天千万级UV的应用。本次将给大家带来拍立淘中的图像搜索和识别的技术。
阿里巴巴iDST
阿里巴巴集团涵盖了非常广的商业领域,除了大家最熟悉的电商领域,金融领域,还有数字娱乐领和本地服务领域。我们相信信通过数据、计算和AI技术三位一体,可以不断提升用户体验,不断的帮助阿里继续拓展商业的边界。
iDST是institute of Data Science and Technologies的简称, 它的使命是研发高性能的AI技术,服务于阿里集团的各个商业领域,并通过技术开创新的商业机会。除了这期云栖TechDay分享的图像视觉技术和语音的交互技术,iDST的研发领域还包括NLP,大规模的机器学习,优化技术等等。
拍立淘业务
作为通过AI技术不断提升用户体验的一个例子,拍立淘是阿里2014年就上线的一个智能的视觉搜索产品。与传统的基于文字搜索的电商搜索相比,拍立淘只需要用户随手拍一张照片,省去了繁琐的文字描述,简化了用户的购物流程,大大提高了电商购物的体验。拍立淘的入口和体验如上图所示。
拍立淘目前覆盖几乎淘宝所有的实体类目:比如衣服,鞋,箱包,瓶饮,配饰,家具,电子,零食,美妆,水果等。
拍立淘存在典型的AI技术驱动。最初在手机淘宝上线是2014年的8月份,当时一天只有几百个UV。经历了三年之后,现在拍立淘每一天的平均UV超过了1000万。回顾这个过程,我们还是通过技术创新、技术驱动获得业务的增长。有哪一些呢?比如说有深度学习,大规模检索索引的研发,还有我们对于实拍图的特别优化等等。
从上个财年开始我们也非常自豪,拍立淘的图像搜索和识别技术已经走出阿里集团,向集团外的公司输出,比如三星旗舰手机S8在系统层面集成了拍立淘,用于相机和相册。
位于海外的客户,也可以通过AliExpress中集成的拍照购物功能,来享受拍照购物的便捷。
技术框架
拍立淘流程主要分为离线流程和在线流程,主要步骤如下:
离线流程:主要是指拍立淘每天离线构建索引库的整个流程,涉及选品、离线抠图、离线抽取特征、构建索引等环节。执行完毕之后,每天会在规定时间完成线上图库的更新。
在线流程:主要是指用户一张query图上传之后,到最后返回结果的整个中间过程,包含在线类目识别,在线抠图,在线特征提取和在线索引查询等关键步骤。
选品
阿里集团内有海量的商品类目和图片,包含宝贝的主图、SKU、副图、晒单图和详情图等,涵盖电商领域的各个方面。如何从这些海量图片中选出用户最喜欢,最想买的宝贝是一件很有意思的工作。
我们首先会根据购物偏好和品质进行全淘图片库的过滤;由于淘宝上相同或者高度相似的宝贝太多,如果不处理的话,最后的搜索结果中就会出现大量一模一样的宝贝,用户体验很差。因此在做完过滤之后,我们增加了图片去重模块,目的是把一模一样或者高度相似的宝贝去重,优化最后的展示。现在拍立淘的引擎包含有几十亿的图片。
类目预测
拍立淘类目是对淘宝叶子类目的一种划分,如图所示上装、裙装、夏装、箱包、家具、美妆、玩具、内衣等等。既需考虑一定的视觉相似性,又需考虑一定的语义相似性。类目体系不仅仅是个技术问题,也是个业务问题(有利于消费者认知)。目前拍立淘有14个大类,涵盖全淘所有叶子类目。类目预测的好处是,它可以起到分发,同时在检索索引的时候,我们也不需要对几十亿的商品图片进行全局的搜索,所以它其实也是一个提高搜索的效率方法。
抠图(主体检测)
因为商品的背景复杂,主体常常较小,所以为了减少大量背景干扰和多主体的影响,因此需要将搜索目标从图像中提取出来。上面两幅图反应了对于用户的query,进行主体检测和不进行主体检测的搜索结果差异。
第一幅图没有由于进行抠图,搜索结果中背景干扰比较明显,都出现了绿色的背景,而用户真正关心的主体衣服的搜索质量则很差。第二幅图进行抠图之后,搜索结果有了非常显著的提高,主体衣服的匹配程度非常高。
图像特征
拍立淘的图像特征包括深度特征和局部特征。
深度特征:基于深度学习框架学习出来的图像表示。目前深度学习在图像、语音等领域取得了重大突破,基于深度学习的图像表示在很多任务上已经完胜传统图像特征。拍立淘从2014年立项之初就开始研究深度特征,在这方面积累了大量的经验,这也使得特征成为拍立淘核心竞争力之一,具体细节详见后续章节。
局部特征:局部特征是图像特征的局部表达,它反应的是图像具有的局部特殊性。拍立淘在常见的局部特征基础上进行改进,不仅进行维度压缩,还优化提取速度,同时保证匹配精度不下降。
检索索引与排序
检索索引的流程可以分成离线和在线两部分。离线过程对商品图像特征构建索引,在线过程对用户query进行分布式的快速查询。在线查询流程主要分为:粗召回 -> 积召回 -> 欧式排序 -> 精排。拍立淘目前的索引数据量有几十亿,如何高效的构建索引,同时保证在线查询的精度是一个非常具有挑战性的任务,拍立淘在这方面做了很多工作,详见后续章节。
深度特征从高层提取信息,关注语义鸿沟;局部特征关注图像的局部信息。如果将两者有效的结合起来,相辅相成,既能保证语义上的相似性,又能保证局部细节的匹配,因此我们在索引召回之后,会再进行一次排序,将深度特征和局部特征结合在一起。我们会学习一个ranking function,给深度特征和局部特征分配不同的比重,基于最后的score对索引返回结果做二次排序。
核心技术
下面我们会就拍立淘的三个核心技术:实拍图精度提升;超大规模的向量检索索引;移动端DL进行进一步的描述。
实拍图精准度提升
非实拍图主要是指拍摄清晰,背景简单的图片,其中大部分来自淘宝宝贝的原图。对于这种图片,拍立淘的精度已经做的很高。但是对于一个以图搜图商业应用,真正的挑战来自占比用户query大量的实拍图,这类图和非实拍图差距很大,具有光照,角度,多主体等各种问题。为了把实拍图做好,拍立淘不断突破,在各个类目上都有非常显著的提升。
1.数据“掘地三尺”
数据方面,我们利用了拍立淘log数据,晒单数据和主搜i2i数据。并构建相应的深度学习模型进行特征训练。
2.升级深度学习
深度学习方面,我们通过Loss函数,网络结构和特征排序框架继续进行创新和突破。
最大化正/负样本与query之间的距离差来保证特征的效果。
除了拍立淘的大类目之外,还多任务训练一级类目和叶子类目。这种多任务层次化的结构可以进一步提高拍立淘类目预测的精度。
超大规模的向量检索索引
为了涵盖更多更广的数据源,我们要打造一个容纳百亿级别数据量的拍立淘。采用深度学习的特征来表征图像,搜索的过程会变成了一个最近邻的查询过程。在几十亿到百亿的数据下查询,并保证用户在没有感知的情况下返回结果,同时保证精度,需要做大量的工作。主要面临的挑战包括:特征抽取的提速和特征降维;和离线构建索引的提速与查询召回的保证。
1. 特征抽取的提速和特征降维
当数据量达到百亿级别时,如果特征抽取效率不高的话,离线抽取特征的时间就会变成非常长;其次,在线引擎中硬盘和内存的存储也是一个问题。
为了解决这一问题,在保证特征精度的情况下,通过对深度学习网络框架的调整,我们将拍立淘的特征的维度,压缩到了原来的1/4,并通过卷积加速、并行计算等策略实现了一倍的提速。
2. 离线构建索引的提速
在离线构建索引效率方面,我们首先采用图计算框架提速积量化和粗量化,将资源消耗降为原来的1/3;同时对于聚类算法本身也进行了提速。离线构建索引效率整体提速超过10+倍。
移动端DL
随着高端手机的日益普及,越来越多的任务可以直接放到移动端执行,这样不仅可以减少图片上传带来的时间延迟,同时还可以降低server端的计算成本。
拍立淘入口点进去有两个通道,拍立淘和扫立淘,如果大家点击扫立淘,就是把识别和检测放到了移动端。这样的交互会更加的自然,用户不需要点拍照的按纽,它只需要对准一个商品,维持稳定,结果就能自然弹出。对于这部分工作,主要的核心还是两个:怎么样对模型大小进行压缩和移动端的加速。
效果和云服务
效果呈现
拍立淘-以图搜图一路走来,得益于算法/工程/产品的充分配合,得益于算法,数据,计算三位一体和大量的用户使用。下面是一些效果呈现。
最左边一列是query,最右边一列是直接看到的结果。中间这幅图我们显示的是在线主体的检测结果,是个中间结果的显示,一般的购物链路这一步是跳过的。往往只有用户对结果不满意的情况下,用户可以在结果页面点击左上的编辑按纽,进入中间的这幅图去人工调整框的位置。这里列出的结果都是全自动的端到端结果。
对于鞋的算法考虑,因为鞋不一定会成双出现,我们会单独考虑每一只鞋。
云服务
最后想说的是,上面文章讲解到的能力无论是端到端的以图搜图的能力,还是单一模块化的能力,比如检索索引,我们都可以通过阿里云进行输出。目前也有越来越多的大小公司接入这样的能力。
启磐:阿里巴巴iDST资深算法专家/技术总监。他是拍立淘的算法负责人和初创核心之一。他的研究领域包括:深度学习和计算机视觉等。他博士毕业于美国伊利诺伊大学芝加哥分校,加入阿里之前,他先后在美国三菱研究院和北京富士通研发中心从事视觉的研发工作。
如你对图像搜索和识别感兴趣,对深度学习和人工智能感兴趣,欢迎加入iDST的大家庭~