项目简介
本项目借助Python和TensorFlow实现了以图搜图系统。利用深度学习模型(如Inception V4)提取图片的特征向量并存储于Milvus开源的特征向量相似度搜索引擎中。当用户上传一张图片时,系统能快速找出已存储的相似图片。
项目的主要特性和功能
- 多种特征提取方式:支持使用TensorFlow Slim的Inception V4图像分类算法获取图片特征向量,也可采用VGG16、OpenCV等技术。
- 高效的相似度搜索:利用Milvus进行特征向量的存储和相似度搜索,可迅速找出相似图片。
- 多数据库支持:使用MySQL 5.7作为Milvus的持久化数据库,用MongoDB登记图片的特征向量存储id和图像基本信息。
- 灵活的图片库维护:可自行编写导入代码或通过restful api接口对搜索图片库进行导入、删除、查询操作。
- 自定义搜索应用:通过开发自定义的管道(Pipeline)插件,能实现特殊的图片搜索功能,例如基于主体颜色搜索。
安装使用步骤
安装依赖服务
安装MySQL
- 通过docker获取MySQL 5.7镜像:
sudo docker pull mysql:5.7
- 自定义数据库启动参数,包括创建本地目录、复制并编辑配置文件等。
- 启动正式的镜像,并进行相关配置,如开启远程连接、创建数据库。
- 查找docker宿主机的访问IP地址。
安装Milvus服务
- 通过docker pull获取docker镜像:
sudo docker pull milvusdb/milvus:0.10.0 - cpu - d061620 - 5f3c00
- 下载配置文件并创建相应目录。
- 修改配置文件
server_config.yaml
,指定持久化至MySQL数据库。 - 启动容器。
- 确认Milvus运行状态。
安装MongoDB
- 通过docker获取数据库镜像,推荐版本4.4以下。
- 创建本地化的目录。
- 在
conf
目录下创建配置文件mongodb.conf
。 - 启动容器。
- 添加用户和设置密码,并尝试连接。
安装及启动应用
- 基于源码目录下的
requriment.txt
安装依赖包:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requriment.txt
- 生成
inception_v4
冻结模型,并将模型文件inception_v4_freeze.pb
和labels.txt
放置在指定目录(运行Demo所需,执行自己的应用可忽略)。 - 修改
search_by_image/search_by_image/conf/server.xml
的配置信息,包括MongoDB和Milvus的连接配置。 - 导入Demo测试数据:
cd ~search_by_image/test/; python import_demo_image.py
- 启动以图搜图服务:
cd ~search_by_image/search_by_image/; python server.py
- 通过浏览器打开Demo页面:http://127.0.0.1:8002/
维护搜索图片库
可自行实现导入代码,利用search_by_image/search_by_image/lib/search.py
的SearchEngine
进行图片导入、删除、查询等操作;也可通过restful api接口导入,具体接口参数定义见search_by_image/search_by_image/lib/restful_api.py
。
利用管道(Pipeline)插件自定义搜索应用
- 进行管道插件开发,包括管道处理器和管道路由器。
- 在
server.xml
文件配置管道插件装载目录。 - 在
server.xml
文件配置管道插件自身的配置。 - 在
server.xml
文件配置管道流程。 - 在
server.xml
文件修改Milvus的向量精度(dimension)参数。 - 导入搜索图片和进行图片搜索操作时,统一传入管道流程名进行处理。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】