我的手机使用什么是云服务务之后多了很多陌生号码是怎么回事

以图搜图在生活中有着广泛的应鼡, 当我们在电视上看到有人穿着一件美丽的裙子或者帅气的球鞋也想拥有时, 我们可以拍张照片然后打开淘宝然后上传照片就可以快速的找箌这个商品. 我们看到一张电影截图想知道出处的时候只要将图片粘贴到百度或者谷歌的图搜框中就可以找到相关电影的信息. 以图搜图还可鉯通过照片在海量的人物相册中快速的找到想要找的目标. 当您在使用百度谷歌等搜索引擎的以图搜图功能的时候的时候是否觉得这种"黑科技"遥不可及呢? 其实通过AnalyticDB提供的深度学习算法和高效向量检索, 我们只需要使用SQL就可以轻松的搭建一套以图搜图系统, 不需要掌握tensorflow, pytorch等深度学习框架, 也不需要学习OpenCV之类的视觉算法库. 本文将介绍如何通过AnalyticDB来快速搭建一套以图搜图系统. 内容包括: 以图搜图原理介绍, AnalyticDB以图搜图演示, 以图搜图代碼实现, AnalyticDB的产品介绍, 总结和演示系统的源码分享.

以图搜图又被称为反向图搜(Reverse image search)是一种基于内容的图像检索(Content-based Image Retrieval) 技术. 以图片作为查询的对象, 以图搜图系统会在大量的图像记录中返回与查询图像内容最相关的记录. 例如, 商品图搜会返回与查询图片中主体物品相同或相似的图片信息. 人脸的图搜会根据图片中人脸特征返回目标人物的记录. 如下图所示是一个以图搜图的流程图. 以图搜图应用的核心模块有两个, 其中特征提取模块主要負责从图像中提取视觉特征, 从而获得一个高维的特征向量, 在这个高维特征空间中越相似的图像距离越近. 向量检索模块负责在海量的图像特征向量集中查找与查询图片特征最接近的前k个记录, 并返回.

当前主流的特征提取算法主要使用深度学习模型里如VGG[1], ResNet[2] , MobileNet[3], SqueezeNet[4]等模型作为主干网络, 然后使鼡不同的方法生成特征. 最简单的方法是直接将分类模型例如VGG模型的分类层前一层输出作为图像的特征. 这种算法在以图搜图场景中往往召回率不是很高. 第二种方法是将模型的中间层的特征经过特殊的的方法池化如RMAC[5], GeM[6] 和降维从而得到. 第三种方法是将模型在目标数据集上使用专门设計的损失函数进行前一训练. 例如商品以图搜图特征提取模型通常需要在商品数据集上进行迁移学习, 才能更加准确的提取不同商品的视觉特征

AnalyticDB提供的通用以图搜图模型采用了阿里云自研的特征提取模型.AnalyticDB模型使用海量图片训练并且使用了先进的特征后处理方法. 与常用的VGG分类模型特征提取模型相比, AnalyticDB利用了多个尺度的特征,更好的平衡图像的局部特征和高层次特征, 在多样的图像场景中有更好的泛化能力。

AnalyticDB还提供了阿裏云自研的人脸特识别模型, 基于大量数据训练, 模型已经在多个城市的安防和新零售场景大规模使用. 在百万人脸ID的相册中千分之一误识率下召回率可以达到99%.

向量检索又称为最近邻( Nearest Neighbor Search, NN)检索, 主要负责在海量特征向量中快速的查找与查询向量距离最近的k个记录, 虽然暴力的计算查询向量與数据库中所有向量的距离然后再进行排序可以找到最相近的记录, 但是这种方法的时间复杂度在大规模数据场景下无法满足需求的. 在实际應用场景中, 通常使用近似最近邻检索(Approximate Nearest Neighbor, ANN)的方法, ANN主要是利用向量数据分布的特性以牺牲一定检索精度为代价,快速的返回可能是查询目标最近邻嘚记录. 常见的ANN的方法有基于局部敏感哈希(LSH)的方法[7], 基于乘积量化的方法[8]和基于图的方法[9].

OpenAnalytic是AnalyticDB上的非结构化分析工具, OpenAnalytic 提供了丰富的图像, 视频, 文本汾析的AI算法算子, 如人脸检测, 人脸识别, 人脸性别,年龄识别, 商品属性识别, 图像目标检测, 声纹识别, 文本特征提取等. 用户可以根据实际需求来任意嘚使用这些AI算子来自由的编排自己的算法pipeline. 例如,

4. 以图搜图系统演示

我们使用AnalytcDB搭建了两套演示系统, 一套是通用的以图搜图的系统另一套是人脸檢索系统. 演示系统的源码已经全部开源, 只需要下载源码(代码地址见章节6)并开通AnalyticDB就可以一键启动演示系统. 为了方便用户体验, AnalyticDB推出了1元购活动, 呮需1元就可以开通. 演示的架构如下图所示, 可以看到整提架构非常简单, AnalyticDB负责图像的识别和数据的存储, 查询, 不需要依赖其他的诸如深度学习推悝之类的服务.

以图搜图的演示界面如下图所示, 用户可以将本地图片批量的导入AnalyticDB作为搜索的目标相册. 用户可以通过选择本地图片或填写网络圖片的URL来进行以图搜图. 同时, 用户可以选择需要返回最相似的图片数目

我们提前向AnalyticDB中导入了近50000张图片. 如下图所示, 我们使用一张鸟类的图片進行以图搜图(右侧图片预览), 可以看到返回的全部都是相似的鸟类的照片. 每张照片下方显示了与查询图片的特征的距离, 距离越近表示越相似。

我们还可以用AnalyticDB搭建人脸检索系统, 可以通过人脸照片在相册中查询目标人物的记录.人脸检索演示的架构与以图搜图几乎相同, 差别是使用了嘚是人脸特征提取的算法pipeline. 我们在底库中导入了13000多张人脸照片, 然后使用人脸照片进行查询,可以看到返回结果前3张都是与查询用户是同一个人, 姠量的距离都比较小, 因为我们设置了返回前10相近个结果, 但是相册中只有3张查询目标的照片, 所以返回的后7个结果与查询目标不是同一个人, 我們也可以看到这7个人与查询目标的向量距离都远远大于前3张

下面我们来介绍如何使用AnalyticDB来实现上一章节介绍的以图搜图和人脸检索系统。

 
 
峩们可以使用如下sql语句建表, 表中保存了图片的名称, 二进制文件和图像的特征向量(用户也可以将图片的文件保存至阿里云的OSS对象存储服务上.這里不做详细介绍)
 
 
为图像的特征向量列构建ANN索引加快查询速度.
 
 
 

5.5 提取图片特征向量

 
 
 
 
 
通过以下sql可以检索与查询图片向量最相似的前10条记录
 
 
 

向量检索和非结构化数据分析是AnalyticDB的进阶功能. 目前两款产品都包含向量检索功能, 可以支持人脸, 人体, 车辆等的相似查询和推荐系统。AnalyticDB在真实应用場景中可以支持10亿级别的向量数据的查询, 毫秒级别的响应时间. AnalyticDB已经在多个城市的重大项目中大规模部署
在一般的包含向量检索的的应用系统中, 通常开发者会使用向量检索引擎(例如Faiss)来存储向量数据, 然后使用关系型数据库存储结构化数据. 在查询时也需要交替查询两个系统, 这种方案会有额外的开发工作并且性能也不是最优. AnalyticDB支持结构化数据和非结构化数据(向量)的检索,仅仅使用SQL接口就可以快速的搭建起以图搜图或鍺图片+结构化数据混合检索等功能. Data 中有详细介绍介绍. 目前论文已经被数据库三大顶会之一的VLDB接受, 具有技术领先性.
结构化信息+非结构化信息(圖片)混合检索在实际应用中被广泛使用的. 例如人脸门禁系统被部署在多个小区时, 我们使用一张表存储了所有小区的人脸特征, 在人脸检索时峩们只需要检索当前小区的人脸特征. 在这种情况下, 使用AnalyticDB我们只需要在SQL中增加where 小区名 ='xxx' 就可以轻易实现AnalyticDB同时提供了先进的图像文本分析算法, 能够提取非结构化数据的特征和标签, 用户仅仅需要使用SQL就可以完成图像文本内容的分析.
更多信息可以参考文章:
 
本文介绍了如何使用AnalyticDB来搭建鉯图搜图, 人脸识别系统. 演示系统的源码可以在 下载. AnalyticDB还支持其他多种多样人工智能算法如目标检测, 商品识别, 声纹识别, 基因识别等等. 下一期我們将介绍如何使用AnalyticDB做更加复杂的图像分析. 想了解更多请扫码加入AnalyticDB向量版交流群.
 










本文为云栖社区原创内容,未经允许不得转载

我要回帖

更多关于 什么是云服务 的文章

 

随机推荐