Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Milvus 实战|基于 Milvus 的图文检索系统

Milvus 实战|基于 Milvus 的图文检索系统

作者头像
Zilliz RDS
发布于 2021-05-17 02:49:00
发布于 2021-05-17 02:49:00
2.7K20
代码可运行
举报
运行总次数:0
代码可运行

本文主要介绍基于 Milvus 搭建的多模态图文检索系统。检索流程为:

1. 通过 TIRG(Text Image Residual Gating)模型将图片特征和文本特征转化为多模态特征向量。

2. 结合开源向量数据库 Milvus 对目标图像特征向量和多模态特征向量进行相似度检索。

关键技术

图像检索的关键在于图像的查询方式。不同于一般的图像检索系统,本文中的基于 Milvus 搭建的图文检索系统需要用户先输入一张图像和一段相关的图像约束文本后再进行图像查询。用户查询图像时除了输入图片,还能输入期望的图像大小、位置、颜色、形状变化等图像约束文本,图文检索系统会相应地返回满足约束条件的图像结果。对于相同的查询图像,不同的图像约束文本会得到不同的图像检索结果。

TIRG

基于 Milvus 图文检索系统使用的深度学习模型 TIRG (Text Image Residual Gating) 模型源于 2019 年收录在 CVPR(Conference on Computer Vision and Pattern Recognition )的一篇文章 《Composing Text and Image for Image Retrieval - An Empirical Odyssey》。

TIRG 模型是一种融合了文本特征和图像特征的深度学习模型,其整体实现流程如下:

1. 使用 CNN 模型 ResNet-17 提取给定查询图像的特征。

2. 使用 LSTM (Long Short Term Memory networks)模型提取图像约束文本的特征。

3. 使用门控机制(gated feature)和残差网络(residual feature)结合图像特征和文本特征。

TIRG 模型门控机制能够利用图像约束文本修改原始图像特征。更多 TIRG 模型详情,请见论文《Composing Text and Image for Image Retrieval 》[1]。

Milvus

Milvus 是一款开源的向量相似度搜索引擎,可与多种 AI 模型相结合。Milvus 提供向量化的非结构数据检索服务,目前广泛应用于图像处理计算机视觉自然语言处理语音识别推荐系统以及新药研发等领域。

Milvus 适用于多种场景,与深度学习相融合的架构如下图所示:

采用 Milvus 的数据处理流程包括以下几个步骤:

1. 与深度学习模型相结合,将非结构化数据转化为特征向量。

2. 将特征向量存储到 Milvus 并建立索引。  

3. 返回向量相似性搜索结果。  

系统介绍

本文中的图文检索系统基于 Milvus 结合 TIRG 模型和 MySQL 数据库搭建而成。

具体实现过程如下图所示:

1. 插入目标图像的特征向量:

将数据集中所有目标图像的特征向量存储至 Milvus 中。Milvus 对特征向量建立索引,并生成对应的 ID。将 ID 和对应特征向量存储于 MySQL 中。

⚠️ 目标图像指的是满足文本约束的相似图像

2. 生成多模态特征向量:

查询图像时,用户需要输入一张图片和一段特定的图像约束文本。使用深度学习模型 CNN 和 LSTM 分别提取图片特征和文本特征,通过 TIRG 模型将图片和文本特征结合成多模态特征向量。

3. 特征向量间的相似度检索:

Milvus 对多模态特征向量和 Milvus 库中目标图像的特征向量进行相似度计算,返回最为相似的图片 ID 。根据此 ID 可以在 MySQL 中获得对应的相似图像,将最终检索结果返回给用户。

系统搭建

通过以下关键步骤,我们将结合 TIRG 模型与 Milvus 搭建一个跨模态的图文检索系统。具体步骤,详见 GitHub 项目(https://github.com/milvus-io/bootcamp/blob/1.0/solutions/ctirg/Readme.md)。

本项目提供以下三个数据集,可任选其一也可采用全部数据集:

  • Fashion200k[2]
  • MIT-States[3]
  • 新合成的数据集 CSS (本项目中仅使用了本数据集)

1. 下载 TIRG 模型,部署 Python 环境,并训练模型。训练好的模型会自动保存。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/google/tirg.git   
pip install -r requirement   
python main.py --dataset=css3d --dataset_path=./CSSDataset --num_iters=160000 \ --model=tirg --loss=soft_triplet --comment=css3d_tirg  

2. 查看模型训练情况(包含训练损失, 训练集检索情况, 测试集检索情况)并视情况调整参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tensorboard --logdir ./runs/--port 8888   

3. 将所有目标图像向量导入 Milvus 中并生成对应的 ID。ID 和对应特征向量存储于 MySQL 中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
status, _ =insert_vectors(index_client, milvus_table, vectors, ids)   
load_images_to_mysql(conn,cursor,milvus_table,ids,Image_path)

4. 通过多模态向量在 Milvus 中对目标图像向量进行相似度检索并返回相似图片的 ID。在 MySQL 数据库中使用该 ID 查找对应的目标图片信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sql ="select * from "+ imgs_table +" where milvus_id="+ str_ids +";"   
results = cursor.execute(sql).fetchall()

总结

本文中基于 Milvus 搭建的图文检索系统是计算机视觉领域中的新兴研究热点和发展方向。未来,Zilliz 还将不断改进此图文检索系统,提高检索的准确率。

Milvus 向量相似度检索引擎可以兼容各种深度学习平台,搜索十亿向量仅需毫秒响应时间。Milvus 可以运用于图像检索和产品搜索 (Image retrieval and product search)、视觉问答(Visual Question Answering)、成分学习(Compositional Learning)等场景。更多应用场景,详见 Milvus 应用场景(https://milvus.io/cn/scenarios)。

欢迎任何对 Milvus 感兴趣的小伙伴加入我们一起解锁更多的应用场景和更有趣的玩法!

参考文献

[1] Composing Text and Image for Image Retrieval - An Empirical CVPR 2019.

[2] X. Han, Z. Wu, P. X. Huang, X. Zhang, M. Zhu, Y. Li, Y. Zhao, and L. S. Davis. Automatic spatially-aware fashion concept discovery. In ICCV, 2017

[3] P. Isola, J. J. Lim, and E. H. Adelson. Discovering states and transformations in image collections. In CVPR, 2015

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
请问下,我往milvus里面插得数据为什么重启后就查询不到了,一直查询超时,要怎么办呀?在线等。。。。
请问下,我往milvus里面插得数据为什么重启后就查询不到了,一直查询超时,要怎么办呀?在线等。。。。
11点赞举报
请关注公众号zilliztech,加入milvus微信交流群讨论技术问题。
请关注公众号zilliztech,加入milvus微信交流群讨论技术问题。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
基于 Milvus 的跨模态行人检索
近年来,由于跨模态数据的快速增长,跨模态检索备受关注。它以一种类型的数据作为查询,来检索另一种类型的相关数据。例如,用户可以用一段文字来检索相关的图片或视频。由于查询及其检索结果可以是不同的模态,如何衡量不同模态数据之间的内容相似性仍然是一个挑战。
Zilliz RDS
2020/11/11
1K0
基于 Milvus 的跨模态行人检索
图形商标近似检索-知擎者的 Milvus 实践
知擎者是一个商标大数据智能应用平台,以商标数据为核心,结合企业大数据、法律大数据、营销大数据等,提供基础业务处理、商标预警监测、案件智能挖掘、数据情报分析等服务,为知产服务者提效赋能。知擎者不断协助知产服务者改变传统业务处理模式,创建智慧服务新体系,拓展更多业务机会,以达到知产服务者快速盈利和品牌建设的目标。
Zilliz RDS
2021/02/03
9950
图形商标近似检索-知擎者的 Milvus 实践
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
目标:使用 Milvus 搭建召回系统,然后使用训练好的语义索引模型,抽取向量,插入到 Milvus 中,然后进行检索。
汀丶人工智能
2023/08/02
2.8K0
语义检索系统:基于Milvus 搭建召回系统抽取向量进行检索,加速索引
基于 Milvus 的音频检索系统
人可以通过听觉感知位置、运动、音调、音量、旋律并获取信息。日常生活中,音频是一种重要的多媒体数据,我们会收听电台节目、欣赏在线音乐等。
Zilliz RDS
2021/03/22
1.5K0
基于 Milvus 的音频检索系统
图像检索(Image Retrieval)入门
图像检索是一项重要的计算机视觉任务,它旨在根据用户的输入(如图像或关键词),从图像数据库中检索出最相关的图像。图像检索技术在许多领域中有着广泛的应用,如图像搜索引擎、图像版权认证、医学影像分析等。 这篇博客将带您入门图像检索的基本概念、方法和常用的技术。
大盘鸡拌面
2023/10/25
2K0
Milvus 实战 | 基于 Milvus 的食谱检索系统
现在,社交媒体、电商网站以及短视频应用源源不断地产生大量多模态数据。这些数据包含了自然语言、视觉信号、声音信号等多种类型。由于单一模式的数据分析已经不能满足日益复杂的查询需求,如何高效利用这些多模态数据变得至关重要。
Zilliz RDS
2020/12/02
1.2K0
AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
本文讲解音频检索技术及其广泛的应用场景。以『听曲识歌』为例,技术流程为具对已知歌曲抽取特征并构建特征向量库,而对于待检索的歌曲音频,同样做特征抽取后进行比对和快速匹配。
ShowMeAI
2022/08/26
5.1K0
AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
你的 AI 造型师-基于 Milvus 的服装图片搜索系统及应用
Mozat 是一家成立于 2003 年的互联网公司,总部位于新加坡,在广州和沙特阿拉伯设有分公司。Mozat 为全球移动互联网用户提供娱乐和社区服务,致力于打造一个充满乐趣的新移动世界。旗下产品 Stylepedia 是一款面向全球时尚女性的衣柜伴侣 APP。在这里,用户不仅可以打造自己的专属衣柜,还能与全世界的时尚达人在线互动,获取最 in 穿搭。
Zilliz RDS
2021/07/23
1K0
你的 AI 造型师-基于 Milvus 的服装图片搜索系统及应用
基于 Milvus 的钓鱼网站检测
在海量信息中,不乏非法分子利用网络骗取用户信任并从中获利,钓鱼网站就是其中之一。“钓鱼”网站的网址、网页内容、布局等与真实网站极其相似,没有安全意识的网民容易因此上当受骗,造成严重后果。
Zilliz RDS
2020/11/04
1.5K0
基于 Milvus 的钓鱼网站检测
机器学习 | 图像检索开源项目合集
关于更多机器学习、人工智能、增强现实、Unity、Unreal资源和技术干货,可以关注公众号:三次方AIRX
三次方AIRX
2020/12/15
1.9K0
Milvus 到底有多少种玩法?这份攻略合集请收好!
Milvus 是一款开源的向量相似度搜索引擎,支持使用多种 AI 模型将非结构化数据向量化,并为向量数据提供搜索服务。Milvus 集成了 Faiss、Annoy 等广泛应用的向量索引库,开发者可以针对不同场景选择不同的索引类型。使用 Milvus 就可以以相当低的成本研发出最简可行产品。
Zilliz RDS
2021/03/22
3.3K0
Milvus 到底有多少种玩法?这份攻略合集请收好!
零基础快速搭建一个图像检索系统
随着计算机视觉领域的发展,图像识别已经被广泛应用在各个领域,比如在疫情期间各个住宅、办公场所出入口位置广泛使用的人脸识别系统等等。
用户3147702
2022/06/27
1.6K0
零基础快速搭建一个图像检索系统
Milvus 实战|利用 Milvus 搭建基于图的推荐系统
推荐系统[1](Recommender System,RS)能够根据用户的偏好主动为用户推荐商品或项目。它通过用户的历史数据来发掘用户兴趣偏好,从而将用户可能感兴趣的物品推送给用户,一个设计出色的推荐系统能够为企业带来可观的经济效益。
Zilliz RDS
2020/09/24
1.9K0
Milvus 实战|利用 Milvus 搭建基于图的推荐系统
利用深度学习手把手教你实现一个「以图搜图」
在上一篇文章《图像检索系列——利用 Python 检测图像相似度》中,我们介绍了一个在图像检索领域非常常用的算法——感知哈希算法。这是一个很简单且快速的算法,其原理在于针对每一张图片都生成一个特定的“指纹”,然后采取一种相似度的度量方式得出两张图片的近似程度。
出其东门
2019/09/03
2.9K0
利用深度学习手把手教你实现一个「以图搜图」
北京大学彭宇新教授团队开源最新多轮交互式商品检索模型、数据集及评测基准
本文是北京大学彭宇新教授团队在多轮交互式商品检索的最新研究成果,已被 ICLR 2025 接收并开源。
机器之心
2025/03/04
1160
北京大学彭宇新教授团队开源最新多轮交互式商品检索模型、数据集及评测基准
Milvus开源向量搜索引擎,轻松搭建以图搜图系统
当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。 Milvus 作为一款针对海量特征向量的相似性检索引擎,旨在助力分析日益庞大的非结构化数据,挖掘其背后蕴含的巨大价值。为了让 Milvus 能够应用于相似图片检索的场景,我们基于 Milvus 和图片特征提取模型 VGG 设计了一个以图搜图系统。 正文分为数据准备、系统概览、 VGG 模型、API 介绍、镜像构建、系统部署、界面展示七个部分。数据准备章节介绍以图搜图系统的数据支持情况。系统概览章节展示系统的整体架构。 VGG 模型章节介绍了 VGG 的结构、特点、块结构以及权重参数。 API 介绍章节介绍系统的五个基础功能 API 的工作原理。镜像构建章节介绍如何通过源代码构建客户端和服务器端的 docker 镜像。系统部署章节展示如何三步搭建系统。界面展示章节会展示系统的搜索界面。
Zilliz RDS
2020/03/26
5.1K0
Milvus开源向量搜索引擎,轻松搭建以图搜图系统
Milvus 实战 | 基于 Milvus 的 CORD-19 论文检索引擎
论文检索是指根据用户输入的信息从大量的论文集合中查找出相关文本的一种技术。论文检索作为信息检索的一种,常用于搜索引擎、数字图书馆等领域,是信息检索技术的一个重要组成部分。
Zilliz RDS
2020/08/27
1.5K0
Milvus 实战 | 基于 Milvus 的 CORD-19 论文检索引擎
大厂技术实现 | 图像检索及其在高德的应用 @计算机视觉系列
图像检索任务指的是,给定查询图像,从图像数据库中找到包含相同或相似实例的图像。本文研究的是高德地图POI信息更新,即根据自有图像源,将每个新增或调整的POI及时制作成数据。这是非常典型的图像检索垂直应用,整套方便背后也包含大量CV技术。本篇我们结合资深CV工程师章鱼的分享,一起研究『高德地图POI信息更新』这一业务背景中,应用到的计算机视觉技术。
ShowMeAI
2022/01/21
1.2K0
大厂技术实现 | 图像检索及其在高德的应用 @计算机视觉系列
多语言BERT与图像编码器:EfficientNet0和微型Swin Transformer在视觉检索中的应用 !
数字世界充斥着大量信息。文本、图像和视频以空前的速度被生产出来,针对文本 Query 的传统搜索系统跟不上节拍。基于关键词的搜索通常产生大量的结果,无法捕捉用户的意图或多媒体数据的丰富性,为获取所需信息设置了障碍。理想情况下,信息检索系统应该允许用户不受本族语言或首选交互方式的限制找到所需内容。这就是多模态检索变得至关重要的地方,因为它允许使用不仅仅是文本,还有图片、口头语言或不同输入模态的组合进行搜索。这种方法显著提高了搜索能力,使信息对人们来说更加触手可及,无论他们说的是哪种语言,无论他们喜欢如何搜索。例如,在图像到图像的搜索中,可以将相机对准一座建筑物来搜索其建筑风格,或者使用一幅画来在网上找到衣服。这些例子说明了多模态数据检索如何帮助人们更高效地搜索。
AIGC 先锋科技
2024/09/10
1490
多语言BERT与图像编码器:EfficientNet0和微型Swin Transformer在视觉检索中的应用 !
5 分钟实现「视频检索」:基于内容理解,无需任何标签
「视频检索」任务就是输入一段文本,检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆,网络上视频的数量呈现井喷式增长,「视频检索」成为人们高效查找视频的一项新需求。
Zilliz RDS
2023/01/10
4.5K0
5 分钟实现「视频检索」:基于内容理解,无需任何标签
推荐阅读
相关推荐
基于 Milvus 的跨模态行人检索
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验