ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CVAT 第三方模型接入实践:serverless 部署与自动标注全链路

CVAT 第三方模型接入实践:serverless 部署与自动标注全链路 CVAT 第三方模型接入实践serverless 部署与自动标注全链路【免费下载链接】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/cvatCVAT 是开源的计算机视觉标注平台。接入第三方模型是把你自己的检测、分割或姿态模型引入自动标注的标准路径。本文讲清三条链路serverless 模型服务部署、LambdaManager 接口契约、一次推理请求的完整流转。1. 先选对框架目录CVAT 自带的模型函数按推理框架组织在 serverless/ 下。写代码前先选一个与你自己模型同框架的目录做参照框架适用场景仓库内示例模型目录PyTorch通用检测器、SAM 分割、姿态估计等detectron2 RetinaNet、SAM、mmpose hrnet32、transt、iogserverless/pytorch/TensorFlowFaster R-CNN 系检测模型faster_rcnn_inception_v2_cocoserverless/tensorflow/ONNX跨框架导出的模型、YOLO 系检测YOLOv7serverless/onnx/OpenVINOIntel CPU 加速推理face-detection-0205、mask_rcnn_inception_resnet_v2_atrous_cocoserverless/openvino/每个模型目录下都有 nuclio/ 子目录放着 function.yamlCPU与 function-gpu.yamlGPU两份部署配置外加 main.py 和 model_handler.py。做 CVAT 自定义算法封装时照抄一个最接近的目录改造即可。2. 启动模型服务Nuclio 函数怎么跑起来模型服务基于 Nuclio 部署。先启动 serverless 基础设施容器# 在项目根目录执行 docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d再选择硬件对应的脚本部署函数./serverless/deploy_cpu.sh # 只部署 **/function.yamlCPU ./serverless/deploy_gpu.sh # 只部署 **/function-gpu.yamlGPUCPU 与 GPU 部署怎么选serverless/deploy_cpu.sh 会先构建 cvat.openvino.base 基础镜像再扫描部署所有 function.yaml适合人脸检测、YOLOv7 这类中小模型serverless/deploy_gpu.sh 不构建镜像只部署 function-gpu.yaml要求宿主机有 GPUSAM、detectron2 这类大模型应走这条两个脚本都用 nuctl 把函数部署到本地项目 cvat统一挂 Rediscvat_redis_ondisk:6666与网络 cvat_cvat。部署完执行 nuctl get function --platform local 可核对函数是否齐全。3. 模型接口契约LambdaManager 的四个动作前端统一通过 cvat-core/src/lambda-manager.ts 中的 LambdaManager 类访问模型服务核心是四个动作动作方法说明列模型list()拉取全部已部署函数的元数据返回 MLModel 数组提交推理run(taskID, model, args)POST /lambda/requests请求体为 { …args, task: taskID, function: model.id }监听进度listen(requestID, callback)轮询状态QUEUED 每 30 秒、STARTED 每 10 秒查一次取结果call(taskID, model, args)POST /lambda/functions/model.id请求体为 { …args, task: taskID }最小调用流程只有三行const request await lambdaManager.run(taskID, model, { frame: 10 }); // 提交推理 lambdaManager.listen(request.id, (status, progress) {}); // 监听进度 const result await lambdaManager.call(taskID, model, {}); // 取回结果结果格式在社区文档中常被称为 DetectedShape 格式当前代码里对应 shapes 数组每个元素是 { type, points, attributes }type 为矩形、多边形、mask 等形状枚举points 是坐标序列mask 时是 RLE 序列attributes 是按 spec_id 关联的属性。interactor 类模型直接返回 mask 也行call() 内部会自动转 RLE 并补齐包围框格式归一化不用手动做。4. 一次推理请求的流转list → run → listen → call 构成完整闭环途中想中止请求调用 cancel(requestID) 即可对应 HTTP 为 DELETE /lambda/requests/ 。5. 排错速查现象可能原因处理办法列表里看不到模型serverless 容器未启动或函数未部署后端 503 时列表会返回空用 docker compose 启动后执行 nuctl get function --platform local 核对函数推理速度慢大模型只部署了 CPU 函数改用 function-gpu.yaml 部署deploy_gpu.sh或换 OpenVINO 转换后的模型参考 serverless/openvino/结果写不进标注画布返回 shape 不符合 { type, points, attributes } 结构对照 cvat-core/src/lambda-manager.ts 中 call() 的归一化逻辑mask 可直接返回会被自动转 RLE进度长时间不动请求状态已不是 QUEUED/STARTED先查 GET /lambda/requests/ 的 statusFAILED 时错误信息在 exc_info 字段收束理解模型服务与 LambdaManager 之间的契约后接入自定义算法就只剩三件事复制 serverless/ 下的函数目录、写好自己的 main.py、跑 deploy_cpu.sh 或 deploy_gpu.sh。仓库内可继续深入这些文件serverless 部署说明components/serverless/README.md部署脚本serverless/deploy_cpu.sh、serverless/deploy_gpu.sh前端接口层cvat-core/src/lambda-manager.ts、cvat-core/src/server-proxy.tsserverless 容器配置components/serverless/docker-compose.serverless.yml【免费下载链接】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),仅供参考
返回列表