littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Python和TensorFlow的以图搜图系统

项目简介

本项目借助Python和TensorFlow实现了以图搜图系统。利用深度学习模型(如Inception V4)提取图片的特征向量并存储于Milvus开源的特征向量相似度搜索引擎中。当用户上传一张图片时,系统能快速找出已存储的相似图片。

项目的主要特性和功能

  1. 多种特征提取方式:支持使用TensorFlow Slim的Inception V4图像分类算法获取图片特征向量,也可采用VGG16、OpenCV等技术。
  2. 高效的相似度搜索:利用Milvus进行特征向量的存储和相似度搜索,可迅速找出相似图片。
  3. 多数据库支持:使用MySQL 5.7作为Milvus的持久化数据库,用MongoDB登记图片的特征向量存储id和图像基本信息。
  4. 灵活的图片库维护:可自行编写导入代码或通过restful api接口对搜索图片库进行导入、删除、查询操作。
  5. 自定义搜索应用:通过开发自定义的管道(Pipeline)插件,能实现特殊的图片搜索功能,例如基于主体颜色搜索。

安装使用步骤

安装依赖服务

安装MySQL

  1. 通过docker获取MySQL 5.7镜像:sudo docker pull mysql:5.7
  2. 自定义数据库启动参数,包括创建本地目录、复制并编辑配置文件等。
  3. 启动正式的镜像,并进行相关配置,如开启远程连接、创建数据库。
  4. 查找docker宿主机的访问IP地址。

安装Milvus服务

  1. 通过docker pull获取docker镜像:sudo docker pull milvusdb/milvus:0.10.0 - cpu - d061620 - 5f3c00
  2. 下载配置文件并创建相应目录。
  3. 修改配置文件server_config.yaml,指定持久化至MySQL数据库。
  4. 启动容器。
  5. 确认Milvus运行状态。

安装MongoDB

  1. 通过docker获取数据库镜像,推荐版本4.4以下。
  2. 创建本地化的目录。
  3. conf目录下创建配置文件mongodb.conf
  4. 启动容器。
  5. 添加用户和设置密码,并尝试连接。

安装及启动应用

  1. 基于源码目录下的requriment.txt安装依赖包:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requriment.txt
  2. 生成inception_v4冻结模型,并将模型文件inception_v4_freeze.pblabels.txt放置在指定目录(运行Demo所需,执行自己的应用可忽略)。
  3. 修改search_by_image/search_by_image/conf/server.xml的配置信息,包括MongoDB和Milvus的连接配置。
  4. 导入Demo测试数据:cd ~search_by_image/test/; python import_demo_image.py
  5. 启动以图搜图服务:cd ~search_by_image/search_by_image/; python server.py
  6. 通过浏览器打开Demo页面:http://127.0.0.1:8002/

维护搜索图片库

可自行实现导入代码,利用search_by_image/search_by_image/lib/search.pySearchEngine进行图片导入、删除、查询等操作;也可通过restful api接口导入,具体接口参数定义见search_by_image/search_by_image/lib/restful_api.py

利用管道(Pipeline)插件自定义搜索应用

  1. 进行管道插件开发,包括管道处理器和管道路由器。
  2. server.xml文件配置管道插件装载目录。
  3. server.xml文件配置管道插件自身的配置。
  4. server.xml文件配置管道流程。
  5. server.xml文件修改Milvus的向量精度(dimension)参数。
  6. 导入搜索图片和进行图片搜索操作时,统一传入管道流程名进行处理。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】