本文不生产技术,只做技术的搬运工!
前言
目前网上能够找到的资料有限,要么收费,要么配置复杂,作者主打一个一毛不拔,决定自己动手实现一个,功能清单受启发于Nvidia AI lab实验室的nanodb项目,打算开发一个可以实现以文搜图和以图搜图的demo,由于作者非科班出身,代码知识面较窄,因此未实现网页功能,仅提供demo,具体业务功能大家需要自行编写。
实现思路
整体思路如下图所示,我们先将图像使用clip生成其对应的特征向量存入数据库当中,然后通过图像输入或者文本输入进行查询,需要注意,图像和文本输入有一项即可。
环境配置
milvus:
pip install -U pymilvus
pytorch:
pip install torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu117
源码
数据入库
import torch
from PIL import Image
import cn_clip.clip as clip
from cn_clip.clip import load_from_name, available_models
import numpy as np
import os
from pymilvus import MilvusClient
client = MilvusClient("/home/project_python/Chinese-CLIP/my_database/coco2017.db")
if client.has_collection(collection_name="text_image"):
client.drop_collection(collection_name="t