文本图片特征检索
功能介绍
CLIP 是由OpenAI提出的一种多模态机器学习模型。该模型通过对大规模图像和文本对进行对比学习, 能够同时处理图像和文本, 并将它们映射到一个共享的向量空间中。本示例展示在RDK平台上利用CLIP进行图片管理与文本搜图的功能。
代码仓库: (https://github.com/D-Robotics/hobot_clip.git)
应用场景:利用CLIP图像特征提取器, 对图片进行管理, 进行图文搜图, 以图搜图等。
项目组成
项目包含几个节点:
- clip_encode_image: 图像编码器边缘端推理节点, 支持两种模式:
- 本地模式:支持回灌输入, 输出图像编码特征。
- 服务模式:基于Ros Action Server, 支持Clinet节点发送推理请求, 计算返回的图像编码特征。
- clip_encode_text: 图像编码器边缘端推理节点, 支持两种模式:
- 本地模式:支持回灌输入, 输出文本编码特征。
- 服务模式:基于Ros Action Server, 支持Clinet节点发送推理请求, 计算返回的文本编码特征。
- clip_manage: CLIP中继节点, 负责收发, 支持两种模式:
- 入库模式:向图像编码节点 clip_encode_image 发送编码请求, 获取目标文件夹中图像编码特征, 将图像编码特征存储到本地SQLite数据库中。
- 检索模式:向文本编码节点 clip_encode_text 发送编码请求, 获取目标文本编码特征。进一步将文本特征与数据库图像特征进行匹配, 获得匹配结果。
- clip_msgs: CLIP系统的话题消息, action server的控制消息。
支持平台
平台 | 运行方式 | 示例功能 |
---|---|---|
RDK X5, RDK X5 Module | Ubuntu 22.04 (Humble) | · 启动CLIP 入库/检索, 入库结果保存在本地/检索结果显示在Web |
RDK S100, RDK S100P | Ubuntu 22.04 (Humble) | · 启动CLIP 入库/检索, 入库结果保存在本地/检索结果显示在Web |
算法信息
模型 | 平台 | 输入尺寸 | 推理帧率(fps) |
---|---|---|---|
clip image encoder | X5 | 1x3x224x224 | 4.6 |
clip image encoder | S100 | 1x3x224x224 | 166.92 |
准备工作
RDK平台
-
RDK已烧录好Ubuntu 22.04系统镜像。
-
RDK已成功安装TogetheROS.Bot。
依赖安装
pip3 install onnxruntime
pip3 install ftfy
pip3 install wcwidth
pip3 install regex
模型下载
# 从Web端下载运行示例需要的模型文件。
wget http://archive.d-robotics.cc/models/clip_encode_text/text_encoder.tar.gz
sudo tar -xf text_encoder.tar.gz -C config