CV / CLIP
CLIP ViT-B/32
在 reComputer RK3576 和 RK3588 上通过 RKNN 加速的 OpenAI CLIP ViT-B/32 图文匹配模型。
6 次下载
精度
RKNN选择你正在使用的设备,设置指南和文档将相应更新。
快速开始
部署
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-clip:latestREST API
使用 REST API 进行推理。复制以下命令。
Curl
curl http://localhost:8080/v1/chat/completions -d '{
"model": "clip-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'Python
import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "clip-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())模型详情
快速开始
1. 安装 Docker
在开发板上运行以下命令安装 Docker:
bash
# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里云镜像源安装
sudo sh get-docker.sh --mirror Aliyun
# 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker2. 运行项目(一条命令,Web 预览)
本项目通过 Web 浏览器提供零样本图像分类和自然语言图像检索,图像编码器与文本编码器均以 RKNN 模型运行。
步骤 A:拉取镜像
bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-clip:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-clip:latest步骤 B:一键运行
适用于 RK3588:
bash
sudo docker run --rm --privileged --net=host \
+ -e PYTHONUNBUFFERED=1 \
+ -e RKNN_LOG_LEVEL=0 \
+ -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
+ ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-clip:latest通过以下地址访问: http://<Board_IP>:8000
适用于 RK3576:
bash
sudo docker run --rm --privileged --net=host \
+ -e PYTHONUNBUFFERED=1 \
+ -e RKNN_LOG_LEVEL=0 \
+ -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
+ ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-clip:latest通过以下地址访问: http://<Board_IP>:8000
3. 命令行推理
bash
python inference.py --platform rk3576 --model_dir model \
+ --file samples/dog_224x224.jpg \
+ --prompts 'a photo of a dog|a photo of a cat'在 RK3588 源目录中运行时,请使用 --platform rk3588。
🔌 API 文档
Endpoint: POST /api/models/clip/predict
请求参数(Multipart/Form-Data):
file:必填图像文件;运行时预处理为224 x 224。prompts:必填候选标签,支持 JSON 数组、换行或|分隔,最多 32 项。topk:可选返回数量,范围 1–32,默认 5。
使用示例:
bash
curl -X POST "http://127.0.0.1:8000/api/models/clip/predict" \
+ -F 'file=@samples/dog_224x224.jpg' \
+ -F 'prompts=a photo of a dog|a photo of a cat' -F 'topk=2'响应格式(JSON):
json
{
"success": true,
"model": "clip",
"platform": "rk3576",
"inference_time_ms": 58.2,
"result": {
"mode": "classification",
"image": {
"width": 224,
"height": 224
},
"candidate_count": 2,
"predictions": [
{
"text": "a photo of a dog",
"score": 0.97
}
]
}
}文本输入固定为 20 个词元。检索接口 POST /api/models/clip/retrieve 接受 1–32 个重复的 files 字段、必填 text 和可选 topk。当前每个平台仅提供一套图像/文本编码器,不含量化变体选择。
2. 自然语言图像检索接口
端点: POST /api/models/clip/retrieve
请求参数(Multipart/Form-Data):
files:必填重复字段,包含 1–32 张图像。text:必填自然语言查询。topk:可选返回结果数,范围 1–32。
使用示例:
bash
curl -X POST "http://127.0.0.1:8000/api/models/clip/retrieve" \
-F 'files=@image1.jpg' -F 'files=@image2.jpg' \
-F 'text=a red car' -F 'topk=2'3. 系统配置接口
获取当前配置
- Endpoint:
GET /api/config - Response:
{"topk": 5}
更新配置
bash
curl -X POST "http://127.0.0.1:8000/api/config" \
+ -H 'Content-Type: application/json' -d '{"topk": 3}'使用 GET /api/health 查看当前平台、模型就绪状态、已加载的 RKNN 文件和运行时能力。OpenAPI 文档位于 /docs。
🛠️ 开发者指南(生产环境建议)
代码说明
web_service.py:- Web API:提供浏览器界面、推理接口、配置接口、健康状态和请求校验。
task_runtime.py:- 处理图像与提示词,归一化特征并计算分类或检索相似度。
inference.py: 提供一次性命令行推理。
模型文件
| 组件 | 文件 |
|---|---|
| Image encoder | model/clip_images.rknn |
| Text encoder | model/clip_text.rknn |
| Vocabulary | model/clip_vocab.h |
修改模型
- 将兼容的转换后文件放入
model/,并保留上表中的文件名。 - 替换时保持所有组件来自同一转换套件,并维持原有输入、输出和预处理约定。
- 发布前在 RK3576 和 RK3588 上验证 Web、REST API 和命令行路径。
构建本地镜像
请在 reComputer-RK-CV 根目录运行:
bash
docker build -f docker/rk3576/clip.dockerfile \
+ -t rk3576-clip:local src/rk3576_clip
docker build -f docker/rk3588/clip.dockerfile \
+ -t rk3588-clip:local src/rk3588_clip输入与输出
输入:图像与候选提示词,或最多 32 张图像与文本查询。输出:归一化相似度分数和排序结果。