CVAT 视觉数据标注完整指南:免费自托管标注平台的部署、标注与协作实操
【免费下载链接】cvatCVAT is a leading data annotation platform for image, video, audio, and 3D datasets. It offers open-source, cloud, and enterprise products, as well as labeling services, with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat
CVAT(Computer Vision Annotation Tool)是一个免费的自托管视觉数据标注工具,支持图像、视频、音频和 3D 点云四类数据的标注,内置 AI 辅助预标注、多人协作与 20 多种导出格式,适合科研、产品团队和个人独立部署使用。本文从部署讲起,用四个真实场景带你走完全流程。
CVAT 标注平台 Docker 部署步骤
前提是你有一台已安装 Docker Engine 和 Docker Compose 的 Linux 机器(8GB 内存起步较稳妥)。部署分三步:
git clone https://gitcode.com/GitHub_Trending/cvat/cvat cd cvat docker compose up -d启动完成后创建管理员账号:
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'然后浏览器访问http://localhost:8080,用刚创建的账号登录即可。注意两点:
- 首次启动需要拉取镜像并初始化数据库,耐心等几分钟;用
docker compose logs -f观察服务启动日志。 - 官方说明 CVAT 主要基于 Chromium 内核浏览器(Chrome、Edge)测试,Safari 不支持,Firefox 可能出现兼容问题——标注卡顿时先检查浏览器再怀疑部署。
进入界面后你会看到 Projects、Tasks、Jobs、Cloud Storages、Models 几个一级入口,对应官方文档 site/content/en/docs/ 里的核心概念:Project(项目)→ Task(任务)→ Job(作业)的三层结构。Task 装一份数据,Job 是实际派给标注员的工作单元,Project 用于把同一数据集的多个 Task 归拢在一起。理解了这条线,后面所有操作都不迷路。
视频标注:Track 模式与关键帧插值实操
视频标注最大的痛点是帧数:一段 30 秒 25fps 的视频有 750 帧,逐帧画框不现实。CVAT 的解法是Track 模式——你只在关键帧上画框,中间帧由插值自动计算。
操作流程:
- 新建 Task 时选 Video 类型,上传 mp4,在 Labels 页签定义类别(如 car、pedestrian),可为每个类别挂属性,例如给 car 加 "color"(Unique,全程不变)和 "truncated"(Temporary,可随帧变化)。
- 在 Track 模式下,定位到目标出现的关键帧,画出第一个框;CVAT 会自动把该框按线性插值推到后续关键帧。
- 勾选 Trackable 后,上一关键帧的对象进入自动追踪状态,系统按运动规律预测位置,你只负责在预测失准时修正——修正幅度越小,说明追踪越准。
- 全部 Job 完成后导出。视频检测常用 COCO(JSON)或 MOT(TXT)格式,两者在导出器里都有独立实现。
上图是同一套工作区在音频数据上的样子:顶部波形区对应视频里的画面区,下方时间轴上标注的对象类型从"框"换成"区间"(Interval)
一个取舍要说明:Track 模式的代价是插值假设物体运动近似线性。急转弯、遮挡、物体突然变形的场景失准率高,需要多打关键帧。如果目标是密集小目标且运动剧烈,老老实实提高关键帧密度比依赖追踪更可靠。
3D 点云与音频标注:两种非图像数据怎么标
CVAT 的标注对象不止图像。仓库的格式模块 cvat/apps/dataset_manager/formats/ 里有 pointcloud、velodynepoint、kitti、audio_tsv 等独立实现,说明这两类是一等公民而非边角功能。
3D 点云(自动驾驶/机器人场景)
上传 Velodyne 等激光雷达数据后,Standard 3D 工作区同时显示俯视图、侧视图、前视图三个投影,你在任意一个视图里画 3D 边界框(cuboid),三个视图联动更新。右侧 Objects 面板可按 Label、Instance、Group 着色,调节透明度便于观察重叠目标。自动驾驶目标检测最终通常导出 KITTI 格式,这是该领域的事实标准。
音频(语音识别/声源事件场景)
音频 Task 的标注单位是时间区间:在波形上拖选起止点,挂上标签(如 "speech"、"dog barking"),可再叠加属性。导出走 audio_tsv 或 COCO Audio 格式。前端实现位于 cvat-ui/src/audio/,支持多音频轨与转写(transcript)模式。
这两类数据的手感差异很大:3D 标注的难点在遮挡与深度判断,音频的难点在边界精度。建议先各做一个小 Task 熟悉操作,再投入正式项目。
AI 辅助预标注:用内置模型省掉第一轮人工
纯手工标注最费时间的是第一轮"从零画框"。CVAT Community 内置了一批预置模型,覆盖检测、分割、姿态、追踪四类任务,模型源码在 serverless/ 目录:
| 模型 | 框架 | 类型 | 目录 |
|---|---|---|---|
| Segment Anything (SAM) | PyTorch | 交互分割 | serverless/pytorch/facebookresearch/sam/ |
| YOLOv7 | ONNX | 检测 | serverless/onnx/WongKinYiu/ |
| RetinaNet R101 | PyTorch | 检测 | serverless/pytorch/facebookresearch/detectron2/ |
| HRNet32 Whole Body Pose | PyTorch | 姿态估计 | serverless/pytorch/mmpose/hrnet32/ |
| Faster R-CNN Inception v2 | TensorFlow | 检测 | serverless/tensorflow/faster_rcnn_inception_v2_coco/ |
启用方式:在默认部署之外叠加 serverless 组件:
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d这启动了 serverless 基础设施(Nuclio);具体模型的加载还需要按仓库说明安装nuctl并部署对应函数。取舍在于:serverless 组件会额外占用内存与镜像空间,如果你只做少量标注,跳过它、纯手工标注反而更省资源。
模型部署后,在标注界面的 Models 入口选择模型发起自动标注,产出的是"待审核的标注结果"而非最终答案。常见用法是:YOLO 类检测器跑全帧初标,标注员只做增删和微调;SAM 则适合"点一下出掩码"的交互分割,人给提示、模型出结果。
一个坑:预置模型权重不是部署后自动下载的,部分模型需要手动准备权重文件。遇到"模型加载失败",先查服务日志里模型路径相关报错,再对照 serverless/ 下各模型的说明确认权重是否就位。
团队协作、质量检查与 20+ 格式导出
单人用 CVAT 是工具,多人用才是它的完整形态。协作链路在 cvat/apps/organizations/ 和 cvat/apps/consensus/ 等模块:
- 组织与角色:创建 Organization 后邀请成员,按 Admin、Manager、Contributor、Worker 分配权限,决定谁能建 Task、谁能改标注。
- 任务分配:Project 下的 Job 可指派给指定标注员,进度在项目页实时可见。
- 质量检查:Quality Control 模块支持多人标注同一 Job 后做共识合并(consensus),也可通过 API 跑 Ground Truth 与 Honeypot 校验——前者对照已知标准答案,后者混入"陷阱样本"检测标注员是否敷衍。
- 统计看板:Analytics 按标签统计各类标注数量、事件流水、用户工时,支持导出报表。
导出格式怎么选:格式实现在cvat/apps/dataset_manager/formats/下,每种一个文件。对照你的训练框架选:
| 训练框架/任务 | 推荐格式 | 文件后缀 |
|---|---|---|
| Ultralytics YOLO | YOLO / Ultralytics YOLO | txt / yaml |
| mmdet、Detectron2 等 | COCO | json |
| 传统检测评估 | Pascal VOC | xml |
| 多目标跟踪 | MOT | txt |
| 自动驾驶 3D 检测 | KITTI | txt |
| 点云原始数据 | Velodyne Point | bin |
如果你要程序化操作,pip install cvat-sdk装官方 Python SDK(cvat-sdk/),或pip install cvat-cli用命令行批量化建 Task、导数据,示例脚本见 cvat-sdk/examples/。
常见问题:部署与标注时的坑和解法
现象一:标注操作明显卡顿、画框延迟。先确认浏览器是 Chrome 或 Edge(Safari 直接不支持);其次看数据量——4K 原图、几百帧视频加密集多边形是重灾区,降低预览分辨率或减少同屏多边形数量立竿见影;最后检查docker stats看 server 容器 CPU/内存是否打满,必要时给 compose 文件加资源限制。
现象二:Track 插值"跑飞",中间帧框位漂移。原因是关键帧间隔内运动不连续(急转、遮挡)。解法不是加大追踪强度,而是补关键帧:在漂移段中间插入关键帧重新画框,插值会基于新锚点重算。
现象三:AI 模型加载失败。90% 是权重文件缺失或 serverless 组件未启动。按顺序排查:docker compose是否带上了 serverless 文件、nuctl是否已部署对应函数、日志中模型路径是否存在。
现象四:自定义快捷键无效。浏览器和操作系统会保留一部分组合键(如Ctrl+Tab、Alt+F4),这类按键 CVAT 无法接管。换一组功能键(如 F3、F4 一类)通常就能成功。
CVAT 把视觉数据标注的完整链路——部署、手动标注、AI 预标注、质量检查、多格式导出——装进了一个可自托管的开源系统里,数据不出你的机房,这是它相对云端 SaaS 的根本优势。各场景的更多细节,建议直接查阅仓库内的官方文档 site/content/en/docs/,从 getting_started 目录开始最顺。
【免费下载链接】cvatCVAT is a leading data annotation platform for image, video, audio, and 3D datasets. It offers open-source, cloud, and enterprise products, as well as labeling services, with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考