
CVAT 接入第三方模型4 步在标注画布上跑出检测框【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat想让自研检测模型接入 CVAT在标注画布上直接产出检测框整套流程就是 CVAT 算法集成的最小闭环交付物共 4 个serverless 容器一组、模型函数一个、推理请求一次、可被画布渲染的检测结果一批。终点验收很简单在标注页的 Automatic annotation 对话框里选中 YOLO v7、确认标签映射、点 Annotate检测框出现在画布上。验收目标倒推跑通需要哪四样东西这一步不敲命令先把完成的样子钉死再倒推出依赖。验收动作就是下面这张图里的操作模型出现在下拉框、标签映射确认无误、点 Annotate 出框。要支撑这个动作四样东西缺一不可serverless 容器在跑Nuclio 控制平面 开启CVAT_SERVERLESS的 CVAT 后端至少一个模型函数已部署且function.yaml里声明了名称、类型和标签前端LambdaManager能跑通 list → run → listen → call 四个方法模型标签与任务标签可建立映射。启动 serverless 容器的一条命令这一步把 Nuclio 容器拉起来让 CVAT 后端能连上算法网关做完得到模型服务注册可用的状态。前提是你的基础 CVAT 栈已经docker compose up -d跑着。# 项目根目录执行叠加 serverless 配置 docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d这条命令把 docker-compose.serverless.yml 叠加到基础栈上新增nucliodashboard 容器Nuclio 1.16 控制平面并给cvat_server注入CVAT_SERVERLESS: 1后端由此启用算法网关逻辑。验证用同样的两个-f参数把末尾的up -d换成ps看到 nuclio 容器处于 running 状态即成功。部署 YOLO v7 示例让模型出现在下拉框这一步把仓库自带的 YOLO v7 示例推到 Nuclio做完得到模型列表里多出 YOLO v7。deploy_cpu.sh 会扫描指定目录下所有function.yaml逐个构建镜像并nuctl deployGPU 版 deploy_gpu.sh 逻辑相同只是匹配function-gpu.yaml。只部署 yolov7 一个模型时把目录传进去./serverless/deploy_cpu.sh serverless/onnx/WongKinYiu/yolov7每个模型函数目录就三类文件以 yolov7 示例为准function.yaml声明名称、类型、标签——CVAT 发现模型全靠它main.pyinit_context加载模型handler处理每次推理请求model_handler.py具体 ONNX 推理实现。function.yaml头部长这样spec里的标签列表就是下拉框里那个映射的来源metadata: name: onnx-wongkinyiu-yolov7 annotations: name: YOLO v7 # 下拉框中显示的名称 type: detector # 模型种类detector / interactor / tracker / reid spec: | [ { id: 0, name: person, type: rectangle }, ... ] # 标签列表验证脚本最后一步会执行nuctl get function --platform local列表里出现 onnx-wongkinyiu-yolov7 且状态 READY就说明函数上线了。推理接口怎么调LambdaManager 的四个方法这一步看清前端如何把一次点 Annotate变成模型调用核心都在 lambda-manager.ts 里。run是发起推理的入口把任务 ID 和模型 ID 一起 POST 给后端async run(taskID: number, model: MLModel, args: any) { const body { ...args, task: taskID, function: model.id }; return serverProxy.lambda.run(body); // 提交到后端 api/lambda }它返回一张请求单id请求号、status排队/运行/完成、progress进度。之后listen(requestID, callback)注册状态回调内部按排队 30 秒、运行 10 秒的间隔轮询直到终态call(taskID, model, args)在终态后拉取检测结果。后端路由挂在api/lambda/下见 cvat/apps/lambda_manager/urls.py。验证在对话框点 Annotate进度条能从 0 走到 100说明 run listen 这条链路完全通了。结果格式对不上怎么办检测形状与标签映射这一步弄清推理结果长什么样、标签在哪里对齐——两者都满足框才会落上画布。yolov7 函数每一帧返回的是一段这样的数组仓库里前端对应MinimalShape、InteractorShape等类型[ { confidence: 0.87, label: person, points: [x1, y1, x2, y2], type: rectangle } ]points是左上、右下两个角点左上角为原点这正是 CVAT 的标准图像坐标系。验证推理成功后在浏览器 Network 面板里看call对应的响应数组结构与函数返回一致。⚠️ 一个容易踩的坑模型标签来自function.yaml的specCVAT 要求它能与任务标签建立映射——对话框里 Setup mapping between labels and attributes 就是干这个的后端会在 views.py 里做兼容性校验。状态成功但画布没框十有八九是这步映射没配。现象 → 方向 → 文件排错速查表卡住时按表定位比从头读源码快。现象排查方向对应文件模型不在下拉框函数未部署或未就绪先nuctl get function --platform localdocker-compose.serverless.yml函数构建失败基础镜像或依赖缺失函数目录的 Dockerfile、function.yaml 的 build 段推理排队久、速度慢未启用 GPU 部署deploy_gpu.sh 与函数目录的 function-gpu.yaml画布没有框标签映射未配置或不匹配function.yaml 的 spec、views.py框位置偏移ROI 裁剪或坐标变换问题views.py 的_get_roi、model_handler.py 的 letterbox下一步可以做什么跑通之后三个方向任选写自己的函数复制 yolov7 目录替换模型文件与spec标签重新部署即可换模型种类facebookresearch/sam 是 interactor 交互模型openvino/omz 有现成 OpenVINO 示例pytorch/ 下还有 MMPose 姿态估计深入服务端标签校验、ROI 裁剪、结果转换的完整逻辑都在 cvat/apps/lambda_manager/views.py值得通读一遍。【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考