
CVAT 算法集成实战3 步接入第三方模型跑通自动标注【免费下载链接】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实现 serverless 模型部署与自动标注从启动 Nuclio 基础服务、实现 list / run / call 调用接口到解析推理结果格式最后给出一份高频问题排查清单。 先看懂架构模型服务为什么独立于平台CVAT 把每个算法模型打包成一个独立的 Nuclio 函数运行在与后端完全隔离的容器里。模型自带的 Python 依赖、推理框架版本都封在函数镜像内升级或下架某个模型不会影响标注平台本身这就是 serverless 隔离的核心思路。平台侧的 lambda_manager 后端通过 HTTP 网关转发请求前端则由 接口定义源码中的LambdaManager统一调度。官方仓库内置了四类框架的示例模型可直接参考或直接部署框架示例模型参考路径PyTorchDetectron2 RetinaNet、SAM、mmpose、TranSTrack、IOGserverless/pytorch/TensorFlowFaster R-CNN Inception v2serverless/tensorflow/ONNXYOLOv7serverless/onnx/OpenVINO人脸检测、Mask R-CNNserverless/openvino/ 跑起第一个模型启动 serverless 基础服务下面这条命令在项目根目录执行它会拉起 Nuclio 控制台并给 CVAT 后端注入CVAT_SERVERLESS1环境变量以开启算法功能编排文件位于 components/serverless/docker-compose.serverless.ymldocker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d基础服务就绪后按你的硬件选择部署脚本# CPU 环境先构建 openvino/base 基础镜像再部署所有 function.yaml 描述的函数 bash serverless/deploy_cpu.sh # GPU 环境只部署带有 function-gpu.yaml 的函数适合显存推理 bash serverless/deploy_gpu.sh两个脚本都在 serverless/ 目录下均支持传入第一个参数指定要部署的函数目录默认部署整个 serverless 目录。执行结束后用nuctl get function --platform local可以核对函数列表是否全部在线。 接入你自己的模型最小接口清单对接算法时平台侧只依赖 接口定义源码中LambdaManager的四个方法你的模型本质上是要被它们正确调用的一个 Nuclio HTTP 函数方法签名职责list()async list(): Promise{ models: MLModel[], count: number }拉取 Nuclio 函数列表返回可用模型元数据名称、类型、标签规格run()async run(taskID: number, model: MLModel, args: any): PromiseSerializedFunctionRequest向模型函数提交推理任务请求体自动携带task任务 ID与function模型 IDlisten()async listen(requestID: string, callback: (status: RQStatus, progress: number, message?: string) void)轮询任务状态回调推送status与progresscall()async call(taskID, model, args): PromiseTrackerResults \| InteractorResults \| SerializedCollection推理完成后取回结果按模型类型detector / tracker / interactor解析为不同结构模型侧你真正要写的入口只有一个handler以 serverless/onnx/WongKinYiu/yolov7/nuclio/main.py 为准最小形态如下——入参event.body里是 base64 编码的图像出参是 JSON 形状列表def handler(context, event): image decode(event.body[image]) # 请求体中为 base64 图像 return context.Response(bodyjson.dumps(infer(image)))除代码外function.yaml是模型的身份证CVAT 后端会校验其中的元数据见 function.yaml 示例配置位置必填内容metadata.annotations.name/type模型显示名与类型detector/tracker/interactormetadata.annotations.spec标签规格数组每项含id、name、type可选attributesspec.handler入口函数如main:handler同目录Dockerfile打包模型文件与推理依赖构建为函数镜像 跑通推理调用链与结果格式一次完整的自动标注按四步走提交任务前端在任务详情中点击 AnnotateLambdaManager.run()把task、function与参数打包发给模型函数拿到请求 ID。监听状态listen(requestID, callback)定期查询任务状态按 10 秒排队时 30 秒间隔轮询把statusQUEUED / STARTED / FINISHED 等和progress推给界面。取回结果任务 FINISHED 后调用call(taskID, model, args)获取形状数据。落入画布后端校验points与type是否匹配、标签能否与任务标签映射通过后生成标注。结果中每个形状对应一个DetectedShape对象关键字段如下字段含义说明type形状类型rectangle/polygon/points/cuboid/mask等必须与points数组长度匹配label类别标签模型侧类别名自动标注对话框会用它与任务标签建立映射points坐标数组图像坐标系原点在左上角、y 轴向下矩形为[x1, y1, x2, y2]多边形按顶点顺序排列mask掩码数据掩码模型使用interactor 场景下会被mask2Rle转成 RLE 编码再转mask类型attributes属性列表可选spec_id为 0 的属性约定承载置信度confidencerotation旋转角度可选仅部分形状支持写模型时最容易踩的坐标系坑CVAT 用的是屏幕坐标系而非数学坐标系如果你的框架输出原点在左下角或归一化坐标务必在handler内先换算成左上角原点的像素坐标再返回。 避坑清单现象 → 原因 → 自查动作现象常见原因自查动作模型加载失败Dockerfile未打包模型文件或依赖函数镜像构建不完整先单独docker build同目录 Dockerfile在 Nuclio 控制台127.0.0.1:8080查看函数日志推理速度远低于预期只部署了 CPU 版function.yaml而函数没有 GPU 配置GPU 函数必须提供function-gpu.yaml并用 serverless/deploy_gpu.sh 部署画布上形状位置错乱坐标系原点或 y 轴方向与 CVAT 不一致确认points为左上角原点、y 向下且未做多余的宽高缩放标签对不上function.yaml的spec标签与任务标签未完成映射打开自动标注对话框核对 Label mapping标签名对不上时结果会被整批丢弃有结果但画布为空全部形状被 Threshold 过滤或points长度与type不匹配先调低阈值验证检查rectangle是否为 4 个点、polygon是否成对闭合进阶方向熟悉单任务推理后可以继续用requests()查看排队中的批量推理任务、用cancel(requestID)撤销误提交的任务自动标注对话框里的 Region of interest 还能把推理范围限制在指定矩形内适合大图像的局部精修。更完整的函数部署细节见 components/serverless/README.md。【免费下载链接】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),仅供参考