【Milvus的以图搜图】

0. 介绍

Milvus官方在bootcamp项目中给开发者提供多种解决方案,包含常见的以图搜图、人脸检索、DNA相似性检索、视频检索等等,具体可以参考bootcamp项目。

本文主要就bootcamp中以图搜图reverse_image_search的代码介绍如何运行该样例,进而了解如何打造自己的图像搜索engine。

 参考连接:

  • https://github.com/milvus-io/bootcamp/tree/master/solutions/reverse_image_search
  • https://fastapi.tiangolo.com/zh/
  • 搭建自己的Milvus以图搜图服务_在平凡生活中挣扎的博客-CSDN博客
  • 虹软人脸识别SDK接入Milvus实现海量人脸快速检索_Memory2414的博客-CSDN博客
  • 【pymysql的基本使用】_hello_dear_you的博客-CSDN博客
  • 【Milvus的安装和使用】_hello_dear_you的博客-CSDN博客

1. 启动Milvus和MySQL容器

在Milvus的系列文章,【Milvus的安装和使用】和【pymysql的基本使用】两篇文章介绍了如何安装Milvus、pymvilus的基本使用,以及如何通过pymysql库来操作MySQL。

在这一部分,主要是确认Milvus和MySQL容器处于启动状态下,以及两个容器的基本信息。首先,在milvus的docker-compose.yml文件的同级目录下,通过如下命令插入milvus容器的状态。

# 启动
docker-compose up -d# 查看
docker-compose ps -a# 停止
docker-compose down

 大致的过程如下图所示:

 然后确认MySQL容器的状态,具体过程如下图所示:

 此外,需要在MySQL中建立一个milvus的db来存放后续实验的数据内容。

2. 项目内容

本文此次以reverse_image_search的quick_deploy工程进行讲解,milvus中以图搜图的例子主要思路如下图所示。

 整个过程可以如下两个阶段:

  • 构建数据样本库阶段
  1. 准备用于构建样本库的图像数据;
  2. 使用目标分类网络ResNet50提取图像特征信息;
  3. 将每个图像的特征embedding信息插入到Milvus中,同时将Milvus对每个图像生成index和对应的图像名信息存储到MySQL数据库中;
  • 目标样本检索阶段
  1. 输入目标样本文件名;
  2. 目标样本经过目标分类网络提取特征得到对应embedding信息;
  3. 执行搜索;
  4. milvus返回与该样本相似的topK个图像名;

接下来,主要介绍一些需要用户配置的参数以及相关的一些改进。

2.1 特征提取网络修改

在该项目的server端的encode.py文件是图像特征提取的实现,通过towhee库调用resnet50网络提取图像特征,部分代码如下图所示:

 由于本人没有用过towhee库,所以基于pytorch重写了特征提取的过程,同时支持single图像和batch图像推理,在构建样本库使用batch推理可以极大节省时间。部分代码如下图所示。

 2.2 配置信息

以图搜图项目中,主要是milvus和MySQL容器的相关参数需要配置,具体如下图所示:

 首先分析一下miluvs的相关参数:

  • MILVUS_HOST和MILVUS_PORT:miluvs容器的IP地址和端口
  • VECTOR_DIMENSION:特征提取网络输出的维度,在pytorch中,resnet50的输出为1000维
  • DEFAULT_TABLE:默认存放特征embedding数据的collection名称

  • TOP_K:即检索时,输出前K个相似的图像名

然后,MySQL相关参数含义如下:

  • MYSQL_HOST和MYSQL_PORT:MySQL的IP地址和端口
  • MYSQL_USER和MYSQL_PWD:用户名和密码

  • MYSQL_DB:存放数据的database名称

3. 运行服务端

在配置好上述参数和确认milvus和MySQL容器处于启动状态之后,此时就可以来启动项目的服务端。以图搜图使用fastapi库来构建服务端,启动服务的命令如下:

uvicorn main:app --reload

对于fastapi库的内容本人不是特别熟悉,如果想要了解具体了解fastapi可以参考其官方文档。

运行上述命令,看到如下截图信息即可表示,服务启动成功。 

 如同所提示的一样,此时可以在浏览器中输入地址127.0.0.1:8000,可以看到如下页面内容。

 然后输入FastAPI - Swagger UIicon-default.png?t=M85Bhttp://127.0.0.1:8000/docs

 即可看到,该服务定义的一些接口,大致的含义,已经在图上描述出来。

 接下来对其中重要接口调用功能和使用方法进行介绍。

3.1 构建样本检索库

img/load条目的作用是输入collection名称和图像路径从而构建样本检索库,通过点击/img/load条目,然后点击try it out,输入相应的collection名称和图像路径,最后点击execute。然后图像路径下的图像会经过resnet50提取特征,得到embedding,最后插入到指定的collection中。具体过程如下图所示。

3.2 加载数据

/embedding/load条目的作用是将collection中的数据加载到memory中,输入collection名称即可。

3.3 执行检索

 /img/search条目的作用是执行目标样本的搜索,需要输入collection名称,选择目标样本的路径和topK的值。

 该操作会返回topK个相似的图像路径,如下图所示。

 

4. 运行客户端

milvus提供了一个以图搜图项目对应的客户端,通过如下命令拉取客户端的镜像。

docker pull milvusbootcamp/img-search-client:1.0

 然后,通过如下命令启动客户端容器。

#!/bin/bash# Modify API_URL to the IP address and port of the server.
export API_URL='http://127.0.0.1:8000'
docker run -d -p 8001:80 \
-e API_URL=${API_URL} \
milvusbootcamp/img-search-client:1.0

 在浏览器中输入127.0.0.1:8001,进入到客户端,如下图所示:

到这里就完成milvus以图搜图实例如何运行的描述,替换图像样本库路径就能打造属于自己的以图搜图工具。在milvus的reverse_image_search中除了本文所说的使用目标分类网络来提取特征之外,还有一种以目标检测+分类的object_detection样例。同样也可以将特征提取网络替换为人脸识别模型,这样就可以打造属于自己的人脸搜索引擎✌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70954.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一言独立APP支持语音/ 知乎限制AI生成回答/ AMD新掌机芯片性能超NS二十倍...今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是4月26日星期三,离五一不远了,大家安排好假期怎么过了吗? 如果不打算出门,也可以利用这个时间研究一下最新的AI工具。 今日科技圈新鲜事也会送上~‍…

波士顿动力新机器人登场!

问耕 编译整理 量子位 出品 | 公众号 QbitAI 互联网改变了现代人类生活的方方面面。 未来还能更好么? “互联网让人们收到世界上所有的信息,但是机器人技术能让人们触达和操纵世界上所有的东西。不仅仅局限于信息,而是一切”,莱伯…

服务器ip被封一般是什么情况?

在什么情况下,我们的网站才会有被封的概率?跟我们所选择的服务器有所关联? 使用国外云主机ip被封的几率会比国内云主机高,有朋友就认为使用国外云主机ip容易被封,其实这个观点是错误的。由于使用国外云主机不用备案,有不少站长…

服务器ip总是被封,怎么办?

服务器IP被封如何预防?IP被封了,会对网站带来影响,要解决这一问题,我们需要从预防这一步开始。下面跟大家讲讲如何操作。 1、预防流量超载   如果你的服务器流入/流出的数据过多,远超出已订购的服务器带宽资源,那么…

为什么自己的IP会被服务器封?

网络爬虫类是获取互联网大数据的主流方式,但在获取信息时,IP地址总是受到目标站点的限制。   在很多情况下,IP地址是网站反爬机制的依据。当我们访问网站时,我们的ip地址将被记录下来。   如果抓取频率高于目标网站的限制阀值…

Linux做爬虫被封IP怎么办

如果您的 Linux 爬虫被目标网站封禁了 IP 地址,可以考虑以下几种解决方案: 1、切换 IP 地址 您可以使用代理服务器或 PPTP 等工具来改变您的 IP 地址。这些工具可以模拟不同的网络位置并使您的爬虫变得更加隐蔽。例如在 Python 中,可以通过…

论文解读:GPT Understands, Too

论文解读:GPT Understands, Too 虽然GPT在传统的预训练微调方面并没有在自然语言理解任务上达到最好的效果, 但是当使用我们提出的P-tuning方法时,便可以与BERT相媲美。P-tuning是一种新的微调方法,其使用可训练的连续空间内的pro…

【论文阅读】GPT系列论文详解

文章目录 GPTIntroductionFrameworkUnsupervised pre-trainingSupervised fine-tuningTask-specific input transformations Experiment Language Models are Unsupervised Multitask Learners(GPT-2)AbsIntroductionApproachDataset & Model Results Language Models are …

做知识付费,这十大知识付费平台一定要知道

做知识付费,这十大知识付费平台一定要知道 想成为李一舟、透透堂这样通过知识付费赚钱的人,一定要知道下面中国排名前十大知识付费平台,这里面呢,你完全能看到各类课程是怎么制作的,以及怎么从0到1做一个能赚钱的课程。…

知识付费哪个领域最火?

小说要花钱才能看了,电影也需要会员了,就连音乐都需要花钱才能听了。如此种种,在生活中比比皆是,时代的进步提升了大众的版权意识,尊重原创。而这也意味着,在以后越来越多的知识内容,都需要通过…

知识付费网课项目靠谱吗?为什么依然有人对它有偏见

知识付费网课项目,是近几年来特别热门的一种网络赚钱方式,从操作方式来讲,适合公司,适合工作室,也适合个人,越来越多的人靠知识付费网课分销项目月入过万。 这是时代的产物,是经济发展的产物,是自然的产物,尽管如此,当提到知识付费网课项目的时候,还是很多人对它有偏…

浅谈短剧授权推广,会简单视频剪辑即可。

什么是短剧推广?相信很多人在短视频平台都有看到过一些账号发布的像电视剧一样的短剧,内容时长短,集数多,作品左下方有个按钮,点击进去可以看全集,但要看后续需要像看小说或漫画一样去充值。 短剧推广就是对…

剪映VS会声会影哪个好用,视频剪辑软件剪映会声会影之间对比之

随着网络视频的发展,越来越多的人开始学习视频剪辑,毕竟技多不压身,而在众多剪辑软件中,剪映和会声会影是很适合新手使用的软件,那剪映与会声会影的区别有哪些?剪映会声会影哪个好用?下面就仔细…

CapCut_v2.0 国际版本剪映

这是一款免费的多合一视频编辑应用程序。可帮助您创建令人赞叹的视频,专业风格滤镜,一键轻松美颜,让生活一秒变大片! 从后台下载压缩包解压后,双击应用安装,然后根据上图勾选、同意,即可一键安装…

剪辑副业怎么接单?学完剪辑去哪里可以接单赚钱

我们熟悉了剪辑的流程之后呢,剪辑一条视频就只需要每天的两三个小时的时间。之后的项目多了话,还可能熟能生巧,进行高效率的剪辑。而根据目前市场上的价格,剪辑一个视频的价格在200到500之间不等。当然了,这种兼职的前…

OpenAI估值已达290亿美元:新一轮融资宣告完成

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自:机器之心 因为 ChatGPT 的发布,OpenAI 成为了目前最炙手可热的创业公司,很多投资者都希望加入光荣的…

利用Python实现作业自动批改系统

在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得,我们不耐烦,倘若遇到许多张图片需要抠,那就今天教你用Python制作一款界面化的抠图小程序吧! 正文 PS 小故事 一…

​数字化转型升级之工业元宇宙与AIGC

月説小飞象交流会 生活就是,面对复杂,保持欢喜。心烦时,记住三句话:1、算了吧。2、没关系。3、会过去的。 内部交流│24期 数字化转型升级 工业元宇宙与AIGC data analysis ●●●● 分享人:李铁军 ‍ 现如今数字化不再…

AutoCV第四课:Python基础

目录 Python基础注意事项一、2023/4/4更新前言1.class1.1 基本介绍1.2 类的实例化1.3 魔法函数 2.生成器2.1 定义2.2 生成器函数2.3 生成器表达式 3.迭代器和可迭代对象3.1 迭代器3.2 可迭代对象3.3 区别和联系 4.装饰器4.1 定义和语法4.2 类作为装饰器4.2.1 形式14.2.2 形式2 …

为什么天蝎座出互联网大佬,我来告诉你原因!

互联网时代的统治者,天蝎座;说起天蝎座,相信大家都觉得很惊呀,为什么大部分互联网大佬都是天蝎座呢?因为天蝎座的管理力、判断力、忍耐力、责任感都是非常优秀的;他们斗志顽强,一旦决定要做到的…