Skip to content

该项目旨在通过输入文本描述来检索与之相匹配的图片。

Notifications You must be signed in to change notification settings

sjy0727/CLIP-Text-Image-Retrieval

Repository files navigation

多模态大模型图像检索

demo

项目概述

该项目是一个基于 OpenAI 的 CLIP 模型的应用,旨在通过输入文本描述来检索与之相匹配的图片。它结合了 CLIP 模型的强大图像和文本理解能力,使得用户可以通过简单的文本查询来发现感兴趣的图片。为了提高检索效率,项目采用了 MilvusRedis 数据库,并利用 ONNX 进行推理加速。

主要特性

  1. 图文检索:用户可以输入文本描述,系统将利用 CLIP 模型从数据库中检索出与之最匹配的图片,并返回结果。

  2. 索引技术:项目使用 Milvus 数据库来存储图像特征向量,利用其高效的相似度搜索功能进行图像检索。

  3. 缓存优化:通过 Redis 数据库,将一部分检索结果缓存在内存中,以加速后续的相似度搜索。(可选功能)

  4. ONNX 推理加速:通过将 CLIP 模型转换为 ONNX 格式,利用 ONNX Runtime 进行推理加速,提高检索的实时性。

性能指标

R@1 R@3 R@10 MRR MAP NDCG@50 Precision@50
Mini-ImageNet 98.0 98.0 98.0 0.980 0.980 0.980 0.980
ImageNet-val 93.1 94.9 95.3 0.940 0.936 0.931 0.929
R@1 R@3 R@10 MRR MAP NDCG@1 Precision@1
MSCOCO-5k 78.7 89.7 86.1 0.850 0.850 0.787 0.787
MSCOCO 60.7 74.7 85.6 0.694 0.693 0.607 0.607
Flickr30K 93.7 98.1 99.3 0.960 0.960 0.937 0.937

安装指南

在这里提供项目的安装指南:

  1. 下载安装单机版milvus向量数据库 https://milvus.io/docs/install_standalone-docker.md
$ wget https://github.com/milvus-io/milvus/releases/download/v2.2.12/milvus-standalone-docker-compose.yml -O docker-compose.yml
$ sudo docker-compose up -d
$ docker port milvus-standalone 19530/tcp
  1. 下载安装Redis (可选功能)
$ sudo apt-get install redis-server
  1. 安装所需依赖项:
$ git clone https://github.com/sjy0727/CLIP-Text-Image-Retrieval.git
$ cd ./CLIP-Text-Image-Retrieval
$ pip install -r requirements.txt

数据集准备

数据集下载

  • 下载mini-imagenet 数据集

  • mini-imagenet,MSCOCO,flickr30k等文件夹与*.py文件放在同级目录下。

mini-imagenet
├── classes_name.json
├── imagenet_class_index.json
├── images
│   ├── xxx.jpg
│   ├── xxx.jpg
│   └── ...
├── new_train.csv
├── new_val.csv
├── train.json
└── val.json

下载coco2014数据集: https://cocodataset.org/#download

MSCOCO
├── annotations
│   ├── captions_train2014.json
│   └── captions_val2014.json
├── train2014
│   ├── xxx.jpg
│   └── ...
└── val2014
    ├── xxx.jpg
    └── ...

下载flickr30k数据集: http://shannon.cs.illinois.edu/DenotationGraph/data/index.html

Flickr30k
├── flickr30k-images
│   ├── xxx.jpg
│   └── ...
└── results_20130124.token

配置文件

  • 本项目将微调,导出onnx,推理相关的参数写在config.py中。可通过指定参数来灵活替换模型及数据库等参数。

微调

  • 通过Huggingfaceaccelerate实现单机多卡训练。
$ accelerate launch --multi_gpu \
                    --mixed_precision=fp16 \
                    --num_processes=2 \
                    finetuning.py \
                    --ep=5 \
                    --lr=5e-5 \
                    --bs=64

图库建设

  • 通过运行embed2db.py将数据集存入milvus中。
$ python embed2db.py

onnx 推理加速

  • 将模型经PyTorch权重转为onnx权重,并用onnxruntime-gpu实现推理加速。
  • 实现了动态batch高效利用硬件算力。
$ python export_onnx.py

部署

  1. 启动Grdio界面。
$ python demo.py
  1. 通过http://localhost:7860访问。

About

该项目旨在通过输入文本描述来检索与之相匹配的图片。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages