【综述专栏】浅谈微信AI在通用图像搜索领域的探索

01

导语

02

以上小视频简单介绍了识物的产品形态,它对微信扫一扫的扫封面能力进行了升级。打开微信扫一扫,左滑切换到“识物”功能,对准想要了解的物品正面,可以获取对应的物品信息,包括物品百科、相关资讯、相关商品。在微信识物发布不久,也快速地支持了像识花、识车这些实用的识别能力。
从一个query到结果,识物引擎是如何完成一次图像识别全过程呢?
首先我们会对query的图片做目标检测,去除背景干扰。
然后以图像主体进行检索,拿到图像召回的列表。
最后一步是进行信息提炼,得到商品的标题,品牌,主体,主图等。
从一个识别天地一号的例子来讲,可以看到从检测、图像召回、信息提炼后,我们得到了这是一个天地一号的苹果醋,再关联更多的搜索结果。
我们的识别效果究竟如何,我们也跟公司内外的识别引擎作了一些对比发现,基于微信自研的识物引擎和微信小程序商城海量的商品数据,我们取得了一流的识别效果。
跟业界同类产品相比,微信识图无论是在体验、识别效果、内容和商品上,都更具有微信的特色。

03

微信图像搜索
微信图片搜索是我们最近刚刚上线的,大家应该能看到,在微信会话和朋友圈中,图片多了一个搜一搜的入口。
识物搜索的现状
那么讲起图像搜索,大家肯定马上想到google、baidu。这些搜索引擎在10年前就上线了图像搜索,并且经过多年经营,已经成了一个很大的入口。
微信识图又是怎么样的,如何基于微信的场景做出差异化?这是我们首先思考的问题。
微信识图
接下来这个图,是我对微信识图的一个设计蓝图。我们期望微信识图是这样的一个产品形态:
微信图像识别的入口,拓展各类识别能力,包含图像识别、图像搜索、二维码识别、文字提取,以及各种图像的应用及玩法。
接下来,我会介绍一下识图的一些具体应用场景。
商品识别
社群中经常会看到商家在推荐商品,我们直接通过搜一搜,可以快速了解商品信息,看看是否真是物有所值,价廉物美。
细分类识别
群聊中有时候看到一些豪车不认识时,长按搜一搜,避免被忽悠。
有些同事经常会在朋友发一些花草,尤其春夏季节。但可能发表者自己都不认识花的名字,搜一搜可以帮你快速知道植物的所有细节。
前几天我看到一个北大同学发湖的图片,我猜测是未名湖,但不太确实。这时候果断搜一搜,感觉评论的时候就自信多了。
我们还支持动物识别、菜品识别、红酒识别、名画识别等细分类识别能力。
菜品识别对一些正在减肥健身的人群,了解食品的热量是个强需求。长按识别菜品我们很快会支持查热量,我们支持常见的菜肴、水果蔬菜、包装食品等。
以图搜图的拓展
接下来介绍以图搜图的一些拓展能力:
包含图片内容:溯源。当图片是某个电影里的截图,你想要知道它的出处。或者你想知道你的原创图片是否被他人转载或者盗用。又或者有一个长得很漂亮的美女主动加你微信,说头像是本人。这时候通过图片搜索,我们很容易一探究竟。
相似图片:找一些相同风格的图片。
搜索物料:通过识别logo+ocr的方法,可以实现内容提取并跳转的能力。

04

以图搜图的系统实现
前面是一些产品介绍,接下来我详细聊一下以图搜图的系统实现,核心讲三个东西:分类、检测、检索。
分类篇 | 图片内容标签体系
图像分类是CV的基础,为了更好地理解微信内图片的类型分布,我们构建了一套图片内容标签体系。从图上来源上,我们主要分为广告、拍照、手机截屏这三种。从图片的内容标签上,我们划分成9个一级类目,42个二级类目。这是一个多标签、多任务的分类任务。
分类篇 | 多标签分类
之所以是多标签,是因为多标签分类更加适合复杂的图像场景,比如上面图1,同时有美女、服装、植物、户外场景等标签。所以我们的做法是来源和标签两种任务共享backbone网络,通过一个slice层、一个Batch训来源和标签两种分类任务。
上图像来源这块的分类结果示例,不同来源的图片,特征差异明显。
分类篇 | 细分类的应用
前面提到的图像标签,是一个粗分类的方法。我们只需要知道是一只狗,但不需要知道是蛤蟆狗,还是哈士奇。要真的能见微知著,通过一些细节来分辨物体具体的款式,这也是计算机视觉擅长的领域。实现细分类,总的来说,我们有两种做法。
电商场景:我们要识别的集合是无限大的,而且还是动态的。所以我们是通过动态图像召回。从召回的结果上推断出商品的具体款式。
动植物汽车这种场景:集合是相对固定的。而且需要一些专业的数据库。我们采用分类+检索的方法,在具体的处理逻辑上,也依据具体的场景不同而不同。目前我们支持了动物/植物/菜品/地标/汽车/名画/红酒识别。
检测篇 | 移动端主体检测
在微信识物中,我们需要在移动端构建一套图像采集的SDK。首先我们基于运动估计中的光流追踪方法,先判断用户手机是否处于静止状态,如果已经静止则会从camera的图片序列中,根据图像梯度的方法,选出较为清晰的帧,再用深度模型进行主体检测,如果检测到有物品,进行裁剪后再发送到后台,后台返回后还会做一些纠正后处理。整个过程中难点在于实现一个轻量级的移动端物体检测模型。
我们基于centernet的方法,并基于移动端的场景进行专项优化,如大感受野、轻检测头、改进可形变卷积在移动端的实现等。最终我们的方法与主流方法在ms-coco上对比,在MAP相当的情况下,参数量只有1M,大大降低。在iphone下测试,每帧只需25ms.。从上图可以看出,扫描模型改进版,有效提高了扫描速度,节省3倍流量。
检测篇 | 服务端物品检测
移动端是objness的无类别主体检测,服务端则更倾向于class-wise的目标检测。我们既要支持商品类目,又需同时识别出各种自然场景。故我们基于maskrcnn的训练框架,改进RetinaNet成为双流的RetinaNet, 一条流用于商品的精确位置和类别输出,一条流只用于分类自然场景图片,以便快速拓展更新模型。
检测篇 | 目标检测的应用
在微信界面中,我们看到识别的主体上,有个小绿点。这个就是目标框的中心点。在识图中,我们看到query头部,有多个主体,这是更直接的目标检测出来的bbox. 目标检测算法对于Query理解,去除背景干扰,理解多主体,还有压缩源数据的基础算法能力。
在我们离线构建检索库的过程中,检测器会检出非常多的目标,这里会包含很多的噪声目标,如图中还会检出鞋子、上衣等。我们最后会根据标题NER后的主体,还有所有bbox之的聚类结果,来决定商品最后的bbox是哪些。
以图搜图本质上是寻找度量图像之间距离的方法,这个距离的表示有很多维度。
所以这里的核心工作之一,就是寻找一个强大的特征表达,可以跨越不同视角,不同装扮下的gap,让我们探寻事物的本质,更靠近任务的目标。一开始在重复图任务上,我们还会使用ORB,SIFT,SURF这些局部特征,再使用像BOW、VLAD、Fisher Vector这些方法,把多个局部特征聚合成一个统一维度的向量表示,以利于检索的工程化。但当我们积累了足够多的同款数据后,CNN的方法在平面图上的表达能力,也已远超传统的图像方法。
关于CNN特征学习的探索,在《微信扫一扫识物技术的从0到1》一文中已有全面的论述。
我们的另一块核心工作,是解决大规模数据下带来的挑战。
检索篇 | 大规模检索系统之分库实现
以微信图片搜索为例,每天新入库图片达500w张,我们收录半年的数据,就有近9亿张图片。我们的思路是多机多库的拆解方法,先把数据在离线阶段分成多个库,在线召回为了减少检索耗时,我们只检索其中几个库,这时候需要做智能的路由。最后根据召回的结果,进行类目预测。
检索篇 | 识物引擎系统框架
1.分库:以微信识物为例,这里的分库比较简单,直接按商品大类划分,比如箱包、美妆、食品这些,一共有12大类。
检索篇 | 识物引擎之分库路由
2.路由:那么当一个query到来时候,我们去检测哪个库呢?这就涉及到路由的逻辑。
前面提到服务端的检测是带有类别的,比如图中输出鞋子,那么我们就走鞋子的专用检索模型提取特征,再到鞋子库中检索。这是最朴素的版本。然而现实场景中的真实的数据分布往往是离散,且存在较大交叉边界的,这会导致以下问题。
检索的开集问题,比如未出现过的子类容易分错;
类间混淆性,从视觉上存在歧义。
检索篇 | 识物引擎之类目预测
基于我们前面提到的数据分布,我们首先从分类好的商品库中,采样出图片进行聚类,通过聚类堆中包含商品类目的多少,把所有的堆分成clean cluster和dirty clean。如上图所示,clean cluster代表商品图是容易从视觉上分类的,都是鼠标。而dirty clean则代表不容易视觉区分,都是一些相似的瓶瓶罐罐。相应的,clean的图一般只需检索1-2个类目库,而dirty的图需要检索4-5个类目库。简单讲,我们实现了一个动态topk检索的优化。从最终优化效果看,在平均检索次数更低的情况下,实现了更高的类别准确率。
3.类目预测:由于每个库都是专有模型,特征之间是可以度量的。于是我们引入了一个精排模型,可以度量所有商品图片的距离,统一对多库召回的结果作归一化。最后我们会结合query图的分类检测结果,召回结果的图像精排特征,以及相关的结果图像及结果一致性,通过一个MLP网络进行类目预测,同款归纳等后处理。
检索篇 | 通用以图搜图之无监督的分库
上面提到的是识物的检索方案实现,回到通用的以图搜图场景,我们无法简单的把图片定义成N个库出来,所以我们用了无监督的分库方法。
1. 分库:基于moco这种无监督的对比学习方法,得到图片一个向量表示。再通过聚类的方法产生伪标签,如下面的16个标签。可以看出,相同topic的图片,会被尽量分到同一个库中。
检索篇 | 图搜流程框架
2.路由:在离线流程中,我们把所有的图片通过上述的分库方法,分成了16个库。在线检索的时候,路由层会预测query图的标签,只走top3的分库。最后通过一个统一多库精排模型,把召回结果融合到一起。

05

结语
从识物到识图,我们不断扩大计算机视觉所能感知的范围。从技术上我们日趋完善,逐渐搭建起从数据采集->半自动化清洗->训练->上线->反馈优化的pipeline, 从基础的分类检测到各类应用层的算法,从移动端部署到大规模GPU集群。另一方面,基于微信的图片应用场景,我们开拓出了微信识物、长按识图等新的尝试入口。相信紧贴用户场景,通过技术的不断沉淀积累,一定可以孕育出更多的智能产品。
(0)

相关推荐

  • 大厂出品还免费!还有啥理由用这些小作坊的收费产品?

    一直以来,不管在电脑上还是手机上,OCR 功能也就是图片转文字功能都算是刚需中的刚需. 可是想找一个功能全面的而且又是免费的工具还真是不容易,不少工具还得充会员,充会员也行吧,然而功能又不是十分完善. ...

  • 微信重要功能,AI识图

    截图识别文字 之后把这些文字拷贝到自己的博客或者文件里,做汇报或者读书笔记,就十分方便了. ✍️具体操作步骤: ①保存好需要读取的图片 ②打开手机微信 ③打开文件传输助手 ④上传图片 ⑤长按图片直至跳 ...

  • 微信识物功能在哪里

    微信识物功能在哪里,对于很多网友来说,有很多网上的东西都是没有见过的,但是又出于好奇想要知道东西是什么东西,所以就有很多网友想知道微信识物功能在哪里,那么下面就让小编给大家介绍一下. 1.首先用户需要 ...

  • 浅谈微信AI在通用图像搜索领域的探索

    导语 以上小视频简单介绍了识物的产品形态,它对微信扫一扫的扫封面能力进行了升级.打开微信扫一扫,左滑切换到"识物"功能,对准想要了解的物品正面,可以获取对应的物品信息,包括物品百科 ...

  • 浅谈微信图片之原图

    王云飞 近年来,在微信上交流.分享旅游照片时,笔者常要求提供者发送原图过来,于是常有朋友问起微信发送原图的方法.方法较简单,一说便知晓.可是时间一久,下次要用时,有的又忘了.加上每次出游多有新朋友加入 ...

  • 浅谈微信公众号排版(三)———— 高级进阶

    此篇将把之前写的小工具放出来方便大家排版. 接着上一次的说,上一篇的推送我介绍了微信公众号的排版原理.今天我会根据这个原理来教大家写一个自己的专属排版工具(以及花式排版),还会教大家如何看别人是如何排 ...

  • ​浅谈微信公众号排版(一) —— Markdown 入门

    什么是 Markdown Markdown 在维基百科上的解释是:使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML ( 或者 HTML ) 文档.其实说白了,就是将特定的符号解析成特定的 ...

  • 浅谈微信公众号排版(二) —— 工具进阶

    HTML CSS 简介 这一部分算是基础知识,但是因为有很多没有写过代码的朋友也会看这个系列,所以我就单独抽出来一个部分来写. 我不打算叙述怎么去写,我单独抽出来只是想表达,这个东西真的不难. 打开电 ...

  • 浅谈岸钓鲈鱼的一些搜索小技巧

    近几年专注岸钓路亚鲈鱼,开始也是迷茫没方向,从胡投胡扔,偶尔中个一条起步,通过每次出勤收获后的观察与记录,一点点琢磨积累,如今大致略懂一二.询问我找我一同玩路亚鲈鱼的人也逐渐多起来,今日再用图文对岸钓 ...

  • 浅谈“破坏计算机信息系统罪”在环境监测领域中的适用!

    2021/6/27 <刑法>第二百八十六条 [破坏计算机信息系统罪]违反国家规定,对计算机信息系统功能进行删除.修改.增加.干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期 ...

  • 浅谈数字孪生技术及在航空领域中的应用

    美国空军和美国国家航空航天局(NASA)对数字孪生的定义为:一种面向飞行器或系统的高集成度多物理场.多尺度.多概率的仿真模型,能够利用物理模型.传感器数据和历史数据等反映与该模型对应实体的功能.实时状 ...

  • 【论坛】浅谈雅安地方志服务乡村振兴的实践与探索 ‖ 曾艳

    浅谈雅安地方志 服务乡村振兴的实践与探索 曾 艳 实施乡村振兴战略,是党的十九大作出的重大战略部署,是实现"两个一百年"奋斗目标和中华民族伟大复兴中国梦的必然要求.改革开放以来,特 ...