基于 Milvus 的以图搜图系统 2.0

2021-04-26 15:00:14 浏览数 (1)

Milvus 以图搜图 1.0 版本自发布以来便受到广大用户的欢迎。近日,Zilliz 推出了 Milvus 以图搜图系统 2.0 版。本文将介绍 Milvus 以图搜图系统 2.0 版的主要更新内容。

系统升级

以图搜图系统 2.0 版在 1.0 版的基础上,升级了 Milvus 版本 ,增加了图像目标检测功能,替换了图片识别模型,并增强了在多物体图片检测的能力。

1.1 Milvus 版本升级

搭建 Milvus 以图搜图系统 1.0 版时使用的 Milvus v0.10.0,在 2.0 版中升级为最新发布的 Milvus v1.0.0。Milvus v1.0.0 新增了将日志写入到标准输出 (stdout) 的功能,修复了之前版本中内存泄漏的问题。

详见发版说明:https://www.milvus.io/cn/docs/v1.0.0/release_notes.md

1.2 图像目标检测功能

Milvus 以图搜图 2.0 版增加了图像目标检测功能。本功能中使用了 YOLOv3 增强模型——PaddleDetection。PaddleDetection 进一步提升了图像检测速度和精度,还使用了 Bag of Freebies for Training Object Detection Neural Networks 中提出的图像增强和 label smooth 等优化方法。

1.3 图片识别模型升级

Milvus 以图搜图 2.0 版将图片识别模型从 VGG 替换为 Resnet50。Resnet50 模型训练速度更快,对图片的识别精度也更高。

系统简介

Milvus 以图搜图系统 2.0 的结构如下图所示:

首先,将图片库输入到目标检测模型 YOLOv3 中,检测出库中每一张图片中包含的所有物体,并将检测出的物体分别保存成图片。

然后,将生成的图片输入到图片识别模型 Resnet50 中,转化为向量并存储到 Milvus 中。Milvus 会对每条向量生成 ID 并建立索引。其后将 ID 和对应的原始图片存储路径存储到 CacheDB 数据库中。

最后,输入一张待搜索的图片,依次进行目标检测和图片识别,并将待搜索图片转化为向量。Milvus 会对向量进行相似度计算并检索出相似图片的 ID ,根据 ID 在CacheDB 数据库中查找对应的图像存储路径,最后将检索结果返回给用户。

搭建步骤

请参考 GitHub 项目 搭建 Milvus 以图搜图系统。

(https://github.com/milvus-io/bootcamp/tree/1.0/solutions/image_search2)

3.1 环境安装

在成功安装并启动 Milvus 后,下载 GitHub 项目到本地,安装对应的 Python 环境。

3.2 启动查询服务

安装 Python 环境后,启动查询服务,并验证环境配置是否正确。

注:Milvus 安装后需要修改 config.py 中相对应 Milvus 的参数

App.py 脚本中提供多个 API ,包括 train API 及 search API。

调用 train API 将图片库的路径传入系统中,对图片进行目标检测和图片识别,并将图片向量存储到 Milvus 中。

调用 search API 进行相似图片检索。将图片库进行目标检测、图片识别,然后在 Milvus 中进行相似图片检索,返回相似图片的 ID 和距离。

3.3 启动客户端

启动客户端查看以图搜图系统查询结果:

注:WEBSERVER_IP 为本机的 IP 地址,浏览器打开地址为<本机的 IP :8001>

结果比对

如下图所示,相较于 1.0 版,Milvus 以图搜图 2.0 版提升了多物体检测的能力:

图 1: Milvus 以图搜图 1.0 版本相似度搜索结果

图 2: Milvus 以图搜图 2.0 版本相似度搜索结果

经过多次搜索比对,我们发现如果在图片中仅包含少量物体,使用 Milvus 以图搜图系统 1.0 版本可以满足大多数用户的需求。在图片中包含多个物体的情况下,使用 Milvus 以图搜图系统 2.0 版本比使用 1.0 版本产生的检索结果准确率更高。总而言之,用户可依据自身业务和需求来选择使用 Milvus 以图搜图系统 1.0 版本或 2.0 版本。

想要了解更多 Milvus 的教程和应用场景,可以关注我们的微信公众号或者加入微信群。我们期待与你进一步交流!

About Zilliz

Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。

Zilliz 构建了 Milvus 向量相似度搜索引擎,以加快下一代数据平台的发展。Milvus 目前是 LF AI & Data 基金会的孵化阶段项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。

欢迎加入 Milvus 社区

github.com/milvus-io/milvus | 源码

milvus.io | 官网

zhihu.com/org/zilliz-11| 知乎

zilliz.blog.csdn.net | CSDN 博客

space.bilibili.com/478166626 | Bilibili

0 人点赞