偷窥了阿里的图像搜索架构,干货分享给你!
Posted 机器学习算法与Python学习-公众号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了偷窥了阿里的图像搜索架构,干货分享给你!相关的知识,希望对你有一定的参考价值。
点击 机器学习算法与Python学习 ,选择加星标
精彩内容不迷路
图像搜索与识别算法使得图像视频内容得以结构化和数字化,以便可以在各种检索和分析引擎中被最大限度地挖掘和利用。阿里巴巴研发出的移动端以图搜图应用——拍立淘,使用户可以通过拍摄照片,在手机淘宝上迅速找到同款及相似商品,是图像搜索与识别领域极具代表性的落地产品。
作为电商场景的以图搜图 App,拍立淘于2014年首次上线,现已经成为拥有数千万日活用户的应用。随着业务的发展,也逐步建立了稳定的、可扩展的视觉搜索架构。
福利时间
奖品:《深度学习图像搜索与识别(全彩)》x 4
参与方式:文末留言,赞数最多的4位为本次中奖者
开奖时间:2021年5月27号20点
备注:如有问题,请添加小助手微信:MLAPython,备注(姓名-单位-研究方向)
下图展示了拍立淘的整个图像搜索架构,分为离线和在线处理流程。
(图1 图像搜索架构)
离线处理主要是指每天生成图像引擎索引的整个过程。
具体过程为,首先构建离线图像选品,通过目标检测在选品图像上提取感兴趣的商品,然后对商品进行特征提取,再通过图像特征构建大规模索引库,并放入图像搜索引擎等待查询。执行完成后,以一定频率更新索引库。
在线处理主要是指用户上传查询图片后,对图像的实时处理到返回最终图像列表的在线步骤。与离线处理相似,给定查询图像后,首先预测其具体的商品类目,然后提取图像目标区域的特征,再基于相似性度量在索引引擎中搜索,最后通过重排序返回搜索结果。
01
类目预测模块
1.图像选品构建
淘宝上有大量不同来源的商品图像,包括商品主图、SKU图、拆箱图等,涵盖了电子商务各个方面的图像。
我们需要从这些海量图像中选择用户相对感兴趣的图像作为宝贝图像进行索引。也就是根据图像附带的类目等属性以及图像质量过滤整个图像库。
由于淘宝上存在太多相同或高度相似的宝贝图像,不过滤会导致最终的搜索结果出现大量相同的商品宝贝,使得用户体验不佳。因此,我们添加了图像选品过滤模块,每天定时选择和删除重复或高度相似的商品图像,并优化索引文件。
2.基于模型和搜索融合的类目预测
考虑到一定的视觉和语义相似性,淘宝类目是基于叶子类目的层次化的类目体系。
类目体系不仅涉及技术问题,也涉及关于消费者认知的商业问题。
目前,我们在拍立淘中先预测图像的类目到14个大类目之一,如服饰、鞋、包等,以缩小图像库的搜索空间。可以采用基于模型和基于搜索的方式来进行类目预测(识别)。
对于基于模型的预测模块,我们采用GoogLeNet V1网络结构来权衡高精度和低延迟,使用包含不同商品类目标签的图像集进行训练。
这里使用单标签分类问题的算法(书中第3章介绍过),作为模型训练的输入图像,根据常用设置将每个图像的大小调整为256像素×256像素,随机裁剪为227像素×227像素 ,使用Softmax 损失函数作为分类任务的损失函数。
对于基于搜索的预测模块,我们不直接训练分类模型,而是利用一个特征模型(参考第6章)和一个待检索数据库完成基于搜索的加权KNN分类。
每当用户输入一张待分类图片,基于搜索的分类方法会先对该图片进行特征提取,然后利用该特征在待检索的数据库中,找出与其最相似的K个图片,根据这些图片的类目标签对输入图片进行预测。
具体来说,我们收集了2亿张附带真实类别标签的图像对 作为参考图像库,训练一个通用类目的特征模型对参考图像库离线提取通用特征并构建索引。预测时,对查询图像提取通用特征,并在图像参考集中检索Top 30的结果。通过查询图像的Top 30个邻居,再根据每个 的类目标签 加权投票,以预测待查询图像 的标签 。其中,加权函数 为查询图像 与 的距离函数。
为了提高类目预测的准确性,我们将基于模型和基于搜索的结果再一次加权融合。
其中,基于搜索的方法利用了特征的判别能力,纠正了部分混淆的类目,结合分类模型的优势提高了类目预测的精度。总的来说,我们的方法使类目预测的精度提高了2%以上。
02
目标检测和特征联合学习
接下来主要介绍基于用户点击行为的检测和特征联合学习方法。
在拍立淘图像搜索场景下,主要挑战来自用户和商家图像之间的巨大差异。
商家的图片通常是高质量的,是在受控环境下用高端相机拍摄的。然而,用户的查询图像通常是用手机摄像头拍摄的,并且可能存在光照、模糊和复杂的背景等问题。
为了减少复杂的背景影响,系统需要具备在图像中定位主体目标并提取主体特征的能力。
下图说明了用户在查询图像过程中主体检测对检索结果的重要性。
(图2 图中的第一行是没有进行主体检测的检索结果,明显受到了背景干扰;第二行显示了采用主体检测的检索结果,有非常显著的改进效果)
为了在没有背景干扰的情况下使用户实拍图像和商家的索引图像特征保持一致,我们提出了一个基于度量学习的分支网络CNN框架,来联合学习主体检测框和特征表示。
我们最大程度地利用用户点击行为反馈,来挖掘难样本数据。
通过用户点击图像构造有效的三元组,使得能够在不需要进一步对边界框进行标注的情况下,联合学习到对象的检测框和特征表示。
1.三元组挖掘
书中的第6章介绍过用三元组损失函数来学习特征的相似度度量。
在我们的场景中,给定一个输入图像 ,首要问题是利用CNN图像特征 可靠地匹配来自用户和卖家的不同源图像。
这意味着需要拉近查询图像 与其同款宝贝图像 之间的距离,并拉远查询图像 与不同款宝贝图像 之间的距离。
因此,这里采用三元组排序损失函数:
其中,L2表示两个向量之间的L2标准化距离, 是Margin参数