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/cvat想把自己的检测模型接入CVAT标注平台让标注人员直接在界面上跑自动标注CVAT的Serverless模块就是干这件事的它把模型封装成Nuclio函数一种轻量级serverless计算框架用Docker独立部署前端通过统一接口调用。部署完成后模型会出现在Automatic Annotation面板里框选区域一键出推理结果。前置条件仓库已克隆到本地装好Docker与nuctl命令行工具。核心概念速览Nuclio函数运行时Serverless底层依赖Nuclio每个模型是一个独立函数跑在各自容器里、装各自的依赖。正因如此serverless/目录下的PyTorch、ONNX、OpenVINO、TensorFlow模型才能共存互不干扰。function.yaml模型声明文件每个函数目录下有一份function.yaml声明模型名、角色detector/interactor/tracker即检测器/交互器/跟踪器和支持的标签列表。CVAT靠它渲染UI模型列表并做标签映射是前端与模型之间的合同。LambdaManager前端管理器前端所有模型操作收敛在LambdaManager类里list查列表、run提交推理、call取结果、listen轮询进度。它是前端与模型服务的边界写自定义集成时读这一个文件就够。部署成功后模型列表与自动标注入口就出现在这样的面板里。拉起Serverless容器叠加serverless编排文件在仓库根目录执行下面命令除了启动nuclio运行时容器还给后端加了CVAT_SERVERLESS1环境变量来开放模型API# 从仓库根目录执行 docker compose -f docker-compose.yml \ -f components/serverless/docker-compose.serverless.yml up -dcomponents/serverless/docker-compose.serverless.yml中的关键项参数作用默认值nuclio imageNuclio控制台版本quay.io/nuclio/dashboard:1.16.3-amd64CVAT_SERVERLESS开关开启后端模型API1NUCLIO_DASHBOARD_DEFAULT_FUNCTION_MOUNT_MODE模型代码装载方式volume声明并部署模型函数编写function.yaml声明标签以YOLOv7 ONNX为例。文件核心是metadata.annotations块CVAT据此识别名字、角色与标签规格spec块声明运行时与入口metadata: name: onnx-wongkinyiu-yolov7 # 唯一名称 namespace: cvat annotations: name: YOLO v7 # 显示名 type: detector # detector / interactor / tracker spec: | [ { id: 0, name: person, type: rectangle } ] # 其余标签见完整示例 spec: runtime: python:3.10 handler: main:handler # 入口函数 build: image: cvat.onnx.wongkinyiu.yolov7build块用directives安装依赖并下载模型文件完整写法见 serverless/onnx/WongKinYiu/yolov7/nuclio/。选择部署脚本执行nuctl部署脚本会遍历function.yamlCPU版或function-gpu.yamlGPU版逐个nuctl deploy并自动注入CVAT_FUNCTIONS_REDIS_HOST/PORT环境变量连上CVAT的Redis任务队列不用手写命令CPU环境bash [serverless/deploy_cpu.sh](https://link.gitcode.com/i/192bd332576a5628250146e8e30b2012) serverless/onnxGPU环境bash [serverless/deploy_gpu.sh](https://link.gitcode.com/i/6b0d49e842bc463f2d86c6e934d5a0ed) serverless/onnx第一个参数是函数目录省略则部署脚本能扫到的全部函数。跑完执行nuctl get function --platform local顺手确认所有函数都是READY状态部署就搞定了。触发一次完整推理编写推理处理入口每个函数在main.py里实现两个函数init_context在加载时执行一次负责装载模型handler处理每张图像。以YOLOv7为例核心逻辑是def init_context(context): # 读function.yaml中的标签、加载模型并缓存 ... def handler(context, event): data event.body image Image.open(io.BytesIO(base64.b64decode(data[image]))) results context.user_data.model.infer(image, float(data.get(threshold, 0.5))) return context.Response(bodyjson.dumps(results), content_typeapplication/json, status_code200)对齐推理结果字段返回JSON是数组每个元素对应一个检测目标前端直接用它生成标注字段作用易错点type形状类型rectangle / polygon / mask等points坐标数组矩形为[x1,y1,x2,y2]图像像素坐标左上角原点label类别名必须与spec中的标签名一致confidence置信度字符串格式走查前端调用链路轮询间隔、结果后处理的完整实现见 cvat-core/src/lambda-manager.ts。排障与调优UI里看不到模型现象部署后模型列表为空。根因函数未READY或metadata的namespace没写cvat。解法nuctl get function --platform local核对状态并检查function.yaml的namespace字段。标签不映射、框位置错乱现象推理出的label显示unknown或框整体偏移。根因返回的label与spec中标签名不一致或points不是像素坐标。解法逐字段比对spec确认坐标为图像像素左上角原点。推理超时现象请求长时间无响应后报504。根因CPU部署推理慢或function.yaml的eventTimeout过短。解法改用GPU部署脚本并调大eventTimeout。调优建议高分辨率视频的检测模型尽量走GPU环境部署大图上传场景调大触发器的maxRequestBodySize示例默认32MBOpenVINO模型用 serverless/openvino/base/ 构建基础镜像多函数复用延伸与参考Serverless组件说明components/serverless/README.mdYOLOv7完整示例含GPU配置serverless/onnx/WongKinYiu/yolov7/nuclio/预置模型清单README.md前端模型管理源码cvat-core/src/lambda-manager.ts下一步建议模型接入后可以试试interactor类模型如SAM实现交互式分割或用SDK的auto_annotation模块以脚本方式批量驱动推理。【免费下载链接】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),仅供参考
返回列表