值得一看
广告
彩虹云商城
广告

热门广告位

基于 Flask 与 Milvus 构建高效图片搜索引擎,可通过API接入,支持Docker一键部署

一、简介

  • 这是一个利用flask、ant design pro v5、milvus、towhee、resnet50等技术实现的一个具有以图搜图功能的应用系统
  • 提供可视化管理后台,支持在线管理图片库、在线识别体验
  • 可通过API调用的方式接入以图搜图服务
  • 支持Docker一键快速部署
  • 项目代码地址可参考:https://github.com/luler/reverse_image_search
  • 该项目的整体架构图可参考:

二、安装

  • 准备一台不低于2C4G的主机(配置越高越好),并提前安装好Docker、docker-compose软件环境
  • 拉取代码
    git clone https://github.com/luler/reverse_image_search.git
  • 进入项目根目录,查看编辑目录下的docker-compose.yml配置文件,检查相关端口、环境变量是否需要调整,参考内容如下
    version: "3"
    services:
      paddle:
        image: ghcr.io/luler/reverse_image_search:latest
        restart: always
        environment:
          - JWT_SECRET=s@Q$eubj #安全起见,更换为复杂秘钥
        ports:
          - 4456:5000
        volumes:
          - .:/root/work
      nginx:
        image: nginx:1.21.6
        restart: always
        ports:
          - 8899:80
        volumes:
          - ./log/nginx_logs:/var/log/nginx
          - ./web/dist:/home/wwwroot/web/dist
          - ./static:/home/wwwroot/resource/static
          - ./config/nginx/conf.d:/etc/nginx/conf.d
      etcd:
        image: quay.io/coreos/etcd:v3.5.0
        restart: always
        environment:
          - ETCD_AUTO_COMPACTION_MODE=revision
          - ETCD_AUTO_COMPACTION_RETENTION=1000
          - ETCD_QUOTA_BACKEND_BYTES=4294967296
          - ETCD_SNAPSHOT_COUNT=50000
        volumes:
          - ./log/volumes/etcd:/etcd
        command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
      minio:
        image: minio/minio:RELEASE.2022-03-17T06-34-49Z
        restart: always
        environment:
          MINIO_ACCESS_KEY: minioadmin
          MINIO_SECRET_KEY: minioadmin
        volumes:
          - ./log/volumes/minio:/minio_data
        command: minio server /minio_data
        healthcheck:
          test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
          interval: 30s
          timeout: 20s
          retries: 3
      standalone:
        image: milvusdb/milvus:v2.1.4
        restart: always
        command: [ "milvus", "run", "standalone" ]
        environment:
          ETCD_ENDPOINTS: etcd:2379
          MINIO_ADDRESS: minio:9000
        volumes:
          - ./log/volumes/milvus:/var/lib/milvus
        ports:
          - "19530:19530"
          - "9091:9091"
        depends_on:
          - "etcd"
          - "minio"
      attu:
        image: zilliz/attu
        restart: always
        ports:
          - 30000:3000
        environment:
          MILVUS_URL: standalone:19530
  • 目录下执行如下命令实现一键启动
    docker-compose up -d

    镜像拉取可能拉取比较慢,可自行配置加速,成功运行参考如下

三、使用

1. 登录使用在线管理后台

  • 安装完成后,可访问地址:http://127.0.0.1:8899/,默认登录账号:admin,密码:admin

  • 上传图片,建立图片库

  • 在线识别体验,可以上传图片,搜索现有库中关联性最近的图片

2. 通过API调用实现以图搜图

  • 获取访问授权接口
    接口(POST):/api/login
    请求参数(json):
    {
        "name": "admin", //账号
        "password": "admin" //密码
    }
    返回(json):
    {
        "code": 200,
        "info": {
            "live_time": 7200, //有效期(秒)
            "token": "eyJ0eXAiOiJKV1QiLCJ...." //授权凭证
        },
        "message": "访问成功"
    }
  • 以图搜图接口
    接口(POST):/api/image/search
    请求参数(form-data):
    {
        "limit": 20, //限制返回数量
        "file": (binary)
    }
    返回(json):
    {
        "code": 200,
        "info": [
            {
                "distance": 14.32137393951416, //差异系数,越小越相似
                "image_path": "/static/images/2025-08-20/416291da-7db7-11f0-bfdf-e6eba293e60d.jpg", //图片
                "md5": "996270ff7860e65110f6652f1ceabe18",
                "milvus_id": 460242204212098050 
            }
        ],
        "message": "上传成功"
    }
  • 其他接口,可自行探索,与页面接口一致

四、总结

  • 这是一个简易的以图搜图工具,核心是基于milvus的向量搜索能力,默认的图片向量化模型是resnet50
  • 可以在商品推荐、图片搜索等场景应用起来,如:用户手机拍照上传后找出自己商品库里的相似商品等等
  • 支持Docker快速部署,所有组件一键启动,实现快速应用
  • 如果在生产环境应用,建议把默认的sqlite数据库改为mysql、图片向量模型也可以调整到更大更好的模型

在线试用演示地址:https://cas.luler.top/?search=636d2a970a26e

温馨提示: 本文最后更新于2025-09-30 16:05:54,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容