Milvus在以图搜图的最佳实践

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: Milvus在以图搜图的最佳实践

内容简要:

一、UDS & Milvus

二、Image Search

三、UseCases

 

 

一、 UDS & Milvus

(一)Unlock the treasure of unstructured data

们通常将数据分为三类

一类是结构化数据,包括数字日期和字符串等。

第二类是半结构化数据,包括有一定格式的文本信息,比如说系统日志等。

第三类就是非结构化数据,像图片、视频、音频、自然语言等不容易被计算机所理解的非结构化数据。

关系型数据库和传统的大数据技术都是为了解决结构化数据问题,而半结构化数据可以通过基于文本的搜索引擎来处理在我们的日常生活中,每天产生大量非结构化数据占总数据的80%过去一直缺乏有效的数据分析手段,直到近年来随着人工智能和深度学习的兴起,非结构化数据才广泛应用。

image.png

深度学习的魅力在于它可以将原本计算机难以处理的非结构化信息转化为计算容易理解的特征向量。通过利用深度学习模型,把图片、视频、音频和自然语言等非结构化数据提取成特征向量,通过对特征向量做相似度计算等实现对非结构化数据的分析

 

(二)The flow-based AI applications

基于流的人工智能应用为例,假设我们要分析一段视频,可以创建一些操作流实现,通常称之为管道Pipeline。

image.png

如上图所示,最左边的流水线会首先截取视频的帧,然后从截取到的图像中提取到图像特征。比如这里可以使用VGG模型,获得视频当中的图片特征向量来实现对视频中的图像分析。中间的流水线会处理视频中的音频,生成一个音频特征向量,然后最右边的流水线会自动为视频标注一些相关属性。如果有其他的特殊要求,也可以建立一个新的Pipeline

AI的应用十分灵活和易部署,可以通过扩展操作流来增加AI应用,可以通过基于Web界面通过对操作流的增加和修改,同时对操作流的划分,每个Pipeline的操作也会变得相对简单,这样也给我们带来了更多的挑战数据会变得十分碎片化原本是一个视频,随着管道的运行,逐渐变成了不同的数据分散在了不同的角落。

image.png

我们需要一套非结构数据化的服务。如上图所示,上下层的输入输出都是非结构化数据,AI技术主要应用在中间绿色模型蓝色数据服务层。

模型推理的任务主要是将非结构数据转化为一些特征向量,模型通常都是训练好的,但目前在数据服务层还没有全面的解决方案,有些用户会把向量放在传统关系型数据库中,有些用户会放在HDF当中,利用Sparse做向量分析,也有用户会引入一些ARN算法库。

挑战主要在于如何高效管理和分析向量,针对海量的非结构化数据,高效分析需要付出大量成本。针对这一挑战,我们给出的答案是由Milvus项目去驱动非结构化数据服务,它包含了4个部分

第一部分是嵌入向量相似度搜索,包括深度学习场景下的高危稠密向量和传动机器学习下的系数向量。

第二部分是属性和标签数据如用字符串等结构化数据去描述标签,把标签和向量结合起来,实现混合查询功能。

第三部分是支持多模型,比如前面讲到的视频例子,一个视频会有不同维度向量,有图片向量和音频向量,在现实世界中多模态的减也是一个常见需求,那么我们需要引入非结构化数据实体概念,一个实体可以包含多个不同维度的向量。

部分是融合打分机制比如在多模态搜索中,我们引入了一些不同的模型,对多个模型进行融合,形成一个新的打分机制来实现综合打分目前Milvus已经具备了矢量分析能力。

Milvus的定位不仅是高性能的向量搜索引擎,在此基础上希望可以建立全面的非结构化数据分析服务

 

(四)Why Milvus: Vectors are different.

image.png

向量是由一组数字构成的向量和数字的区别主要在两个方面

首先向量和数字的常用操作不同数字之间的常用操作包括加减乘除,向量最常见的操作是计算相似度,比如计算向量之间的欧式距离,从上图可以看出向量的计算会比数字的计算复杂得多

其次向量和数字的索引方式也是不同的两个数字之间可以进行数词比较,然后建立Betray索引,而向量之间无法比较大小,只能计算它们之间的相似度,所以向量的索引通常都是基于最近04ARN算法。上图给出了两种ARN方式,分别是基于聚类的索引以及基于图的索引传统的数据库以及大数据分析技术很难满足传统的数据和向量,所需要的算法以及构建的索引都是不一样的。

 image.png

Mlivus整体架构图主要4个部分构成

第一,对异构计算的支持目前Mlivus所支持的异构计算资源包括X86平台上的SSE指令集AVX2和AVX512指令集,还有英伟达的CPU等

第二数据管理的能力提供非结构化数据的服务,所以数据管理的功能也是十分关键Mlivus支持了数据分片、数据分区向量插入和删除等操作。

第三吸收和完善ARN算法库向量搜索的能力是非结构化数据服务中的一个基本功能Mlivus通过采用和改进FAISSAnnoy ARN算法库,可以提供一个良好的搜索性能。

第四对应用开发环境的支持为了让AI开发者可以轻松的在Mlivus上构建应用,提供了Python、C++Java还有Go等多种API。

 

 

一、 Image Search

(一)Why image search.

image.png

图片检索是一个常见的应用,常见的图片检索包括根据文本内容搜索图片和基于图片本身的内容搜索图片。之前是通过给图片打标签,然后通搜索标签来实现对图片的搜索。

 

(二)Image search Scenarios.

image.png


基于图片内容搜索图片,就是常说的以图搜图,这种搜图方式在电商领域被广泛应用

电商网站主要通过以图搜图搜索商品商品外观最好的呈现方式,同时图像搜索可以用于文字搜索无法描述的场景用户会将拍摄到的图片在电商网站中去搜索,去找同款或者相似的商品来提升搜索查找的便捷性,优化用户的体验。

以图搜图在设计类行业的应用也是比较广泛的,包括服装设计、室内设计以及海报素材的设计等。

例如拍摄照片可以通过拍摄的照片查找相似或者相同图片,方便设计师查询原版图片或者是更加相似的图片。除此之外,企业商标或者品牌logo的搜索引擎的以图搜图以及在部分查重网站中也是陆续上线了。

以图搜图还可以用于广电行业的媒体资讯等,同时也是ARVR三重模型建立以及辅助驾驶等热门应用的一个基础的支撑技术之一。

 

(三)What is image

图片是由一组像素点的集合组成的第一张图片上面左图的红色圈内圈出的部分就是右图一系列的像素点再第二张图片,假设红圈部分一是一幅图像,其中每一个独立的小格就是一个像素点,像素是一个图片的最基本的信息单元,这幅图片图像的像素就是11×11px。

image.png

在数学上表示像素点有两种方式,一种是二值图像,二值图像的像素点只有黑白两种情况,因此每种像素点都可以由0和1来表示,如图所示的是一张像素点为4成4的二图像的表示,还有一种用RGB来表示图像,RGB分别代表了红、绿蓝,对于RGB、图像,每个像素点包含了 RGB共三个通道的信息,这里是一张4×4相素点的 RGB图像表示

 

(五)Image search system

image.png

对于图像搜索来说,如果只是找原图,也就是像素点完全相同的图像,直接对比MD5即可,然而图像在网络传输过程中常常会伴随着压缩以及水印等情况,由于MD5的特点是小部分内容的一个改变,最差的结果也是偏差的比较多的,因此只要图片中有一个像素点不一致,那MD5都是无法去比较的对于以图搜图的系统而言,我们要搜索的本质其实是搜索内容相似的图片,为此我们需要准备三个基本的过程。

首先需要架构图中进行目标检测在检测出要搜索的目标对象后,需要提取图片的特征信息,也就是这里的Encoder这一步在提取完特征信息之后,我们需要对图片的特征向量进行相似度的比较,返回图片的一个相似度概括来说,以图搜图就是目标检测加目标特征的提取以及特征向量的一个相似度计算。

 

(六)Object detection

 image.png

以图搜图中第一个关键技术就是目标检测目标检测关注的是特定的物体目标,要同时获得这一目标的类别和位置信息目标检测给出的是对图景前景和背景的理解,需要从背景中分离出感兴趣的目标,并确定这一目标的类别和位置信息等

目前目标检测领域的深度学习方法主要分为两类,分别是两阶段的目标检测算法和一阶段的目标检测算法。对于两阶段的目标检测算法来说,首先会有算法生成一系列的样本候选框,然后会通过卷积神经网络去进行样本框分类常见的两阶段目标检测算法有R-CNNFast R-CNNFaster R-CNN,都是基于卷积神经网络一阶段的目标检测是不需要产生候选框的,直接将目标框候选转化为回归的问题去处理,常用的算法有YOLO和SSD。

 

(七)Feature extraction

 image.png

在以图搜图中图像特征的提取也是一个非常重要的技术点特征提取的好坏是决定后续图像搜索准确率的关键。过去的20年中,计算机视觉研究集中在了人工标注上,通过人工标注去提取良好的图像特征.随着深度学习的兴起,特别是得益于卷积神经网络-CNN的发展,基于卷积神经网络的一些模型也不断的推陈更新。常用的CNN模型,从早期影响力比较大的AlexNet到后来常用的VGG和ResNet以及DenseNet等,都是目前用的比较广泛的图像特征提取模型。

这些模型大体结构如上面的图片所示,基本上是包含了多个卷积层以及磁化层,还有全连接层去构建这样一个网络。然后通过对图片的训练,提取出我们的图片特征

 

8)Embedding search

 image.png


将图片转化为特征向量后,我们需要进行某种相似度度量来比较它们。在以图搜图中常用的度量特征相似度的方法有欧式距离还有余弦距离两种方式。根据我们选用的提取特征的模型不同,使用的相似度计算方式也是不同的。欧式距离表示的是空间上两个点的直线距离,余弦距离表示的是两个高向量在空间上的夹角。

为了实现在大规模的向量库中找到与给定向量相似的一些向量,我们通常需要对库中的这些向量建立索引,常用的索引有基于聚类的索引和基于图的索引,这一过程会用到Mlivus,提供了从向量的存储、删除以及查询等一系列完整的向量检索服务。

在数据量比较大的以图搜图的过程中,向量检索的性能会直接影响到我们整个以图搜图的性能。

 

一、  UseCases

1)Use case: Image search helps sports event

image.png

,一家移动互联网公司,有一个专业的摄影服务平台,主要用于为运动员和赛事方提供赛事拍摄、实时上传以及照片的云端识别等服务,以此来连接线上线下的运动人群和民间赛事,其中有一项重要的服务是用户可以上传运动员的照片,然后在赛事的图片库中去搜索出包含该运动员的一些赛事图片,在他们的图像搜索服务中都用到了前面讲到过的目标检测、特征提取以及向量检索这三个关键技术。

其中,目标检测、特征提取使用自研的算法,向量搜索起初也用自研的算法,但项目初期仅有只有百万级的图片,随着赛事的业务飞速发展,仅2019年一年的照片量就达到了6000万,整个系统中存储了上亿的图片以及十几亿的人像特征,这些数据让系统更为庞大,占用的资源也会越来越多,为了保障搜索服务的高性能,只能通过不断的增加硬件资源和服务器的数源来进行横向扩容,通过增加内存和使用高性能的CPU去提高他们的执行效率,只是这样导致务成本变得非常高。

另外,在图像上传高峰期出现上百万张图片同时入库的情况,在运动员的赛事图像入库后,需要尽快能够查到满足用户对照片的期待,因此为了节约运维的成本和支持后续的业务发展,进行服务的改造和升级。通过调研多个向量服务之后,最终决定使用Mlivus支持向量服务。

之所以选择Mlivus,是因为在检索的速度上,Mlivus单机版可以达到10亿向量的秒内级搜索响应。其次是Mlivus可以实现数据的快速插入,同时满足客户对检索方面的需求,后续他们数据如果持续增长的话,Mlivus也可以直接从单机版很便捷的升级到分布式。

 

2)Use case: Image search for company trademark

 image.png

二,一家大数据公司收集了大量企业的金融数据5500多万张商标图片,希望为会员提供通过商标去检索公司的功能他们在微调了VGG模型和Mlivus的基础上建立了一个图像搜索功能与之前不同的是,里的图像搜索去掉了目标检测的环节,因为图片本身就是商标,没有额外的多余信

此外目标检测针对的是有一定规则可循的事物,对于商标来说,任何设计图像可以成为商标,因此就无需去做目标检测,直接使用VGG模型对有商标的图像进行特征提取,然后进行一个向量相似度检索

由于在开发初期知道有多少人因为新功能成为新会员,所以他们的开发和托管成本是十分敏感的,就开源的Mlivus对他们来说是一个非常好的选择。同时他们对Mlivus的简单应用低成本搜索性能这些特点都非常满意。

 

3)Use case: Image search for poster design

 image.png

三,一家从事海报设计的公司在他们的设计库中有大量的海报素材,基于那些图片库做了一个海报搜索的网站,希望能根据用户的需求搜索到相似海报,供用户选择。该网站提供了根据文字检索根据海报内容检索相似海报这两种方式在使用海报搜索海报这一过程中没有使用到目标检测,而是直接去使用的ResNet去提取图片中的特征向量,然后存入到Mlivus中做相似向量检索。

对于海报来说,我们关注的是整个海报所展现的内容,要检索的也是与海报整体内容和风格相似的图片,而不是图片中的某个目标。所以在这个案例中不需要用到目标检测的。

相关文章
|
5月前
|
SQL 运维 搜索推荐
《揭秘,阿里开源自研搜索引擎Havenask的在线检索服务》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask的在线检索服务,它具备高可用、高时效、低成本的优势,帮助企业和开发者量身定做适合业务发展的智能搜索服务。
83379 138
|
12月前
|
存储 人工智能 OLAP
LangChain+通义千问+AnalyticDB向量引擎保姆级教程
本文以构建AIGC落地应用ChatBot和构建AI Agent为例,从代码级别详细分享AI框架LangChain、阿里云通义大模型和AnalyticDB向量引擎的开发经验和最佳实践,给大家快速落地AIGC应用提供参考。
128428 94
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
25029 19
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
编解码 达摩院 监控
阿里云 Elasticsearch 向量检索,轻松玩转人脸识别、搜索推荐等29个业务场景
简介:我们知道,市面上有不少开源的向量检索库供大家选择使用,例如 Facebook 推出的 Faiss 以及 Nswlib,虽然选择较多,但业务上需要用到向量检索时,依旧要面对四大共性问题。
10635 1
阿里云 Elasticsearch 向量检索,轻松玩转人脸识别、搜索推荐等29个业务场景
|
25天前
|
算法 NoSQL 数据挖掘
表格存储低成本向量检索服务助力 AI 检索
本文阐述了阿里云表格存储(Tablestore)如何通过其向量检索服务应对大规模数据检索的需求,尤其是在成本、规模和召回率这三个关键挑战方面。
|
2月前
|
人工智能 运维 Cloud Native
全新启航!阿里云向量检索服务Milvus版正式上线!
由阿里云与 Zilliz 联合推出的业内领先的云原生向量检索引擎 - 阿里云向量检索服务 Milvus 版在杭州、上海、北京、深圳四大 region 正式可用并开放公测!
|
4月前
|
运维 监控 搜索推荐
客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台
阿里云的Milvus服务以其性能稳定和功能多样化的向量检索能力,为识货团队在电商领域的向量检索场景中搭建业务系统提供了强有力的支持。该服务的分布式扩展能力不仅可靠,而且能够适应日益增长的数据规模。
客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台
|
5月前
|
存储 人工智能 Cloud Native
阿里云向量检索 Milvus 版开启公测,助力企业打造高质量 AI 服务
阿里云向量检索 Milvus 版正式开启公测,诚邀广大开发者及企业用户参与公测,赋能智能检索,解锁 AI 潜能。
阿里云向量检索 Milvus 版开启公测,助力企业打造高质量 AI 服务
|
5月前
|
存储 人工智能 自然语言处理
通过阿里云 Milvus 与 PAI 搭建高效的检索增强生成(RAG)系统
阿里云Milvus现已无缝集成于阿里云PAI平台,一站式赋能用户构建高性能的检索增强生成(RAG)系统。您可以利用Milvus作为向量数据的实时存储与检索核心,高效结合PAI和LangChain技术栈,实现从理论到实践的快速转化,搭建起功能强大的RAG解决方案。
通过阿里云 Milvus 与 PAI 搭建高效的检索增强生成(RAG)系统
|
5月前
|
分布式计算 搜索推荐 MaxCompute
基于OpenSearch向量检索版的多主体识别最佳实践
本文将介绍如何通过OpenSearch向量检索版,在图像搜索服务中进行多主体识别。
136220 9
下一篇
无影云桌面