CVAT 自动标注(Automatic Annotation)完全指南:用预训练模型为任务批量预标注 CVAT 自动标注Automatic 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自动标注是 CVAT 内置的一项核心提效功能你只需在任务页面上选择一个人工智能模型CVAT 就会自动遍历任务中的所有帧用模型推理结果批量预标注数据让标注员从从零画框变成修正确认。读完本文你将掌握如何在 CVAT 中发起自动标注、如何把模型标签映射到任务标签、如何通过 Region of Interest 把推理限定在指定图像区域以及这些操作在前后端源码层面的真实执行链路。自动标注是什么自动标注Automatic annotation是 CVAT 提供的一个工具用于使用预训练模型自动预标注pre-annotate你的数据。它不会取代人工标注而是把模型推理结果批量写入任务作为标注工作的起点——标注员后续可以直接在自动标注结果上修改、增删、确认从而大幅缩短整个标注周期。要使用自动标注你的 CVAT 实例上必须至少能访问一个类型为 detector检测器或 reidentifier重识别器的 AI 模型。关于 AI 模型的来源可参阅 AI 模型概述CVAT 支持通过三种方式接入模型——Nuclio 函数自托管 Docker 容器、第三方服务函数Hugging Face 与 Roboflow以及 CVAT AI Agent 原生函数。其中Detector检测器自动标注与 AI Tools 的 Detectors 页签都会用到它Reidentifier重识别器仅用于自动标注负责把相邻帧之间属于同一目标的检测框串联成轨迹不同模型部署方式在不同 CVAT 版本Community / Enterprise / Online中的可用性以及每种模型 kind 的使用场景详见 AI 模型概述。发起一次自动标注在 CVAT 中启动自动标注只需要几步操作在顶部菜单点击Tasks任务。找到要标注的任务点击Action操作Automatic annotation自动标注。在弹出的Automatic annotation对话框中从下拉列表选择一个模型。配置模型与任务的标签匹配。可选如果你希望模型返回的 mask 以多边形polygon形式落库打开开关Return masks as polygons将遮罩作为多边形返回。可选如果需要删除任务上已有的全部标注打开开关Clean old annotations清理旧标注。可选为模型指定Threshold置信度阈值。如果不填将使用模型设置中的默认值。可选对于 2D 任务的 detector 模型可以指定Region of interest感兴趣区域把标注限制在选定的图像区域内。点击Annotate标注。点击 Annotate 后CVAT 会在进度条上展示自动标注的进度在自动标注执行过程中你可以随时点击取消cancel停止任务。这些开关在请求中对应什么从 detector-runner.tsx 的请求体定义可以看出对话框中的全部选项最终会打包成一次对后端的annotate_task请求export interface AnnotateTaskRequestBody { type: annotate_task; mapping: ServerMapping; // 标签匹配结果 cleanup: boolean; // Clean old annotations 开关 conv_mask_to_poly: boolean; // Return masks as polygons 开关 threshold?: number; // 置信度阈值不填则不传走模型默认值 roi?: [number, number, number, number]; // 感兴趣区域可选 }对应地后端在 lambda_manager/serializers.py 中用FunctionCallRequestSerializer校验请求threshold是可选浮点数cleanup默认False语义是是否删除已有标注conv_mask_to_poly控制 mask 到多边形的转换mapping是模型标签到任务标签的映射字典roi必须是恰好 4 个整数的列表语义为[xtl, ytl, xbr, ybr]左上角与右下角坐标。值得注意的细节对话框代码中 threshold 输入框的范围是[0.01, 1]步进0.01未填写时该字段不会出现在请求体中detectorThreshold ! null才附带后端据此使用模型自身配置的默认阈值。限制自动标注的输入Region of interest对于 2D 任务中的 detector 模型你可以把自动标注限制在图像的一个选定区域内。设置区域的方法是在自动标注对话框中填写Region of interest的四个值x、y、width、height。当设置了 ROI 后CVAT 只把该图像裁剪区域发送给模型模型产出的标注结果会被平移回整帧坐标后再写入任务。这样做的收益很明显推理输入更小、速度更快也天然过滤了区域外的误检。ROI 的限制条件文档明确说明ROI 支持detector 模型包括 Nuclio 函数、Hugging Face 与 Roboflow 模型以及原生 AI-agent detector 函数ROI不支持tracking跟踪或 ReID重识别函数对任务级自动标注所有被处理帧必须具有相同的分辨率且所选区域必须完整落在每一帧图像内部。ROI 的前后端实现细节前端组件 region-of-interest-input.tsx 实现了 ROI 输入既支持直接填写x/y/width/height四个整数也支持在画布上拖拽绘制矩形canvasInstance.interact({ command: draw_box })。所有输入都会被clamp到帧尺寸范围内并且要求 width、height 必须为正整数否则前端会提示错误。后端在 utils.py 的ROIHelper中完成核心处理parse_roi校验[xtl, ytl, xbr, ybr]必须是 4 个非负整数且xbr xtl、ybr ytl即区域尺寸必须为正crop_image先检查xbr/ybr不超过图像宽高超出即报 ROI is outside the image再执行image.crop(...)validate_task_roi在任务级标注前做预校验对图像任务它会从数据库读取所有有效帧的尺寸去重若分辨率不一致则直接拒绝与文档中所有帧必须同分辨率的约束一致对视频任务以外的媒体类型也会拒绝。调用链上views.py 会先校验 ROI is not supported for {kind} functions仅允许 DETECTOR 与 INTERACTOR然后通过_get_roi裁剪图像并 base64 编码发给模型结果回来后ROIHelper.translate_detector_shapes会把所有标注点坐标加上(xtl, ytl)偏移还原回整帧坐标系views.py。对于 mask 类型的输出translate_detector_shapes还会把 mask 边界点最后 4 个坐标一并平移对于交互器interactor的提示点与返回 mask则分别用translate_prompt_points和translate_interactor_response做双向坐标换算utils.py。这些转换逻辑都有对应的后端测试覆盖例如 lambda_manager/tests/test_lambda.py 中的test_api_v2_lambda_functions_create_detector_with_roi会验证传入 ROI 后发送给模型的 payload 中roi字段是否正确透传。标签匹配Labels matching每个模型都在特定数据集上训练因而只支持该数据集的标签。举例说明DL 模型有标签car你的任务或项目有标签vehicle。要进行自动标注你需要把这两个标签匹配起来告诉 CVAT在本场景中carvehicle。如果你的某个标签不在 DL 模型的标签列表中就无法完成匹配——因此受支持的 DL 模型只适用于特定标签集合。要查看每个模型支持的标签列表请参阅 AI 模型概述 中对应模型的论文与官方文档。匹配的底层校验逻辑后端在 lambda_manager/views.py 中实现了标签匹配的完整逻辑若用户没有显式提交 mapping后端会调用make_default_mapping按标签名自动生成默认映射只要模型标签与任务标签同名task_label.name model_label[name]且类型兼容就自动建立映射同名属性也会自动对应。若用户提交了 mapping则通过validate_labels_mapping严格校验模型标签必须真实存在、任务标签必须存在、且二者必须类型兼容labels_compatible类型完全相同或一方为any而另一方不是 skeleton或 mask 与 polygon 互相兼容。对于 skeleton 类型标签映射还会递归到sublabels骨架点子标签层级要求 skeleton 的每个元素子标签都必须显式映射见 views.py。映射后的结果会在推理返回阶段生效DetectionResultConverter会把模型输出的标签名替换为任务标签 ID同时只保留映射过的属性transform_attributes会校验属性值是否符合任务中该属性的类型与取值约束mask 类型的输出根据conv_mask_to_poly决定是转成多边形还是以 RLE 形式存储views.py。自动标注的后端执行流程自动标注并不是一个简单的同步请求而是一个基于RQRedis Queue的异步任务主要流程如下前端调用runInference(model, body)发起请求后端 LambdaQueue.enqueue 将任务放入settings.CVAT_QUEUES.AUTO_ANNOTATION队列并以任务 ID 生成固定的 RQ job id若同一任务已有运行中的自动标注请求会返回 409Only one running request is allowed for the same task避免并发冲突队列 Worker 执行LambdaJob.__call__views.py若勾选了cleanup先删除任务或 Job 上已有的标注数据随后按函数类型分派——DETECTOR_call_detector逐帧调用function.invoke推理结果先累积在DetectionResultCollector中每处理 100 帧批量提交一次减少对服务器的写请求次数也避免把所有结果常驻内存最终再提交剩余结果views.py。每帧处理完都会更新进度百分比_update_progress前端进度条读到的就是它REID_call_reid读取任务已有的矩形框逐对相邻帧调用模型做框匹配用path_id把匹配上的框串联成 track最后以outsideTrue的尾部框结束轨迹写回任务数据views.py。任务期间可随时取消取消对应 RQ job 的终止进度条即停止。注意_call_detector中每帧都会把当前帧号、mapping、threshold、conv_mask_to_poly、roi 一起传给function.invoke这与前端请求体的字段一一对应也再次印证了阈值、ROI、mask 转多边形等选项最终都作用于每一帧的推理请求。开始使用前的检查清单确认模型可用CVAT 实例上至少存在一个 detector 或 reidentifier 模型。如何部署 Nuclio 函数 / 接入第三方模型 / 运行原生 AI Agent请参阅 AI 模型概述 与 serverless 教程。确认标签可映射任务标签应尽量与模型训练标签一致或兼容同名最优否则需要手工逐条映射无法匹配的标签将无法被自动标注。按需开启选项需要多边形而非 mask 时开启Return masks as polygons希望清空旧标注再写新结果时开启Clean old annotations注意该操作会删除任务现有标注务必谨慎。合理使用 ROI只关心画面局部区域时设置 Region of interest 可以提升速度并减少误检但请确保所有帧分辨率一致、ROI 完全位于帧内且只对 detector 模型使用。把握阈值阈值留空即使用模型默认值调高可减少低置信度误检调低可让模型输出更多候选具体取值需结合模型质量与标注目标权衡。结语自动标注把模型推理与人工标注高效衔接起来通过 Tasks 页面一键发起、标签匹配保证模型输出与任务规范兼容、ROI 让推理聚焦在关键区域、异步队列与进度条保证大规模任务可观测可取消。理解其前端请求结构detector-runner.tsx与后端执行链路lambda_manager、lambda_manager/utils.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),仅供参考