CVAT 全景解析:平台形态、数据格式支持、标注工具体系与 AI 自动标注架构
【免费下载链接】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 官方文档中的 Overview 章节为主体,系统梳理 CVAT 作为计算机视觉数据标注平台的三大核心能力:三种产品形态与定位、对图像/视频/3D 数据及主流标注格式的支持、手动标注的模式与几何工具体系,以及基于无服务器架构的 AI 自动标注方案。读完后,你可以基于当前仓库中的格式注册器、MIME 类型表、serverless 模型函数与部署脚本,快速验证这些能力在源码层面的落地方式,并据此选择合适的部署与集成路径。
产品与服务的分层设计
CVAT 定位为面向计算机视觉应用的高质量视觉数据集管理平台,提供图像、视频与 3D 标注工具、内建质量保障(QA)、自动化能力与安全的团队协作机制。官方文档将其划分为三个版本与一项标注服务:
| 产品/服务 | 部署方式 | 核心特征 |
|---|---|---|
| CVAT Community | 自托管(本地或自有云) | 免费版本,包含完整标注工具集、导入/导出格式与核心工作流,适合有基础设施管理能力的技术团队 |
| CVAT Online | 托管云 | 自动更新与维护、托管基础设施,提供 Free / Solo / Team 多档订阅,面向快速上手与协作场景,内置灵活存储 |
| CVAT Enterprise | 托管或私有云/本地部署 | 面向大型组织与受监管环境,提供 SSO/LDAP、审计日志、专属支持与定制 SLA 等高级能力 |
| Labeling as a Service | 由 CVAT 团队提供 | 专家标注服务,跨项目规模化标注,内置 QA 与报表看板,适合一次性标注项目与常态化工作流 |
对于开发者而言,本仓库对应的就是 CVAT Community 代码库:所有标注引擎、格式转换、AI 集成与 REST API 均以开源形式提供,Enterprise 与 Online 版本在此代码库之上叠加商业功能与托管服务。
支持的数据类型与格式
Overview 文档声明的输入数据能力如下:
- 图像:所有 Python Pillow 库支持的格式,包括
JPEG、PNG、BMP、GIF、PPM与TIFF; - 视频:ffmpeg 支持的所有格式,包括
MP4、AVI、MOV; - 3D:
.pcd、.bin点云数据。
源码层面的格式证据
仓库内有一份直接参与上传解析的 MIME/扩展名映射表 media.mimetypes,它由系统 mime 数据库生成,可以验证上述声明的实际覆盖面:
- 视频段涵盖
mp4、mov、avi、mkv、webm、m2ts、mpeg、flv等(第 3–64 行),与“ffmpeg 支持的所有格式”的表述一致; - 图像段涵盖
jpeg/jpg、png、bmp、gif、ppm、tif/tiff、webp以及多种 RAW 格式(第 66–200 行); - 3D 段显式登记了
image/x-point-cloud-data pcd(第 109 行)与image/x.kitti-velodyne bin(第 110 行),对应文档中.pcd、.bin的 3D 输入能力; - 归档段还支持
zip、rar、7z、tar.*等压缩包(第 201–224 行),这是批量上传数据集时的实际入口。
导入/导出格式注册器
除原始媒体输入外,CVAT 的标注数据还可通过一套格式注册体系在不同标准之间转换。核心实现位于 registry.py:
Exporter与Importer两个基类定义了格式的可调用接口(第 21–28 行);exporter()/importer()装饰器将具体格式以DISPLAY_NAME为键注册进全局字典EXPORT_FORMATS/IMPORT_FORMATS(第 81–123 行),并支持按 2D/3D 维度(DimensionType)区分格式适用性;- 文件末尾的导入块(第 134–156 行)一次性挂载了仓库实际提供的全部格式模块。
对照 formats 目录 中的实现文件,仓库内置的格式覆盖包括:
| 类别 | 格式实现 |
|---|---|
| CVAT 原生 | cvat.py(CVAT 1.1 XML,分图像/视频两种) |
| 检测/目标识别 | coco.py、yolo.py、pascal_voc.py、openimages.py、imagenet.py、labelme.py |
| 语义分割 | mask.py、camvid.py、cityscapes.py |
| 3D 点云 | pointcloud.py、velodynepoint.py、kitti.py |
| 视频多目标跟踪 | mot.py、mots.py |
| 行人再识别/人脸 | market1501.py、vggface2.py、widerface.py、lfw.py |
| 文本识别 | icdar.py |
| 音频 | audio_tsv.py |
| 通用框架 | datumaro.py(对接 Datumaro 生态) |
注册器中还有一个值得注意的默认行为:format_for()函数(第 71–78 行)显示,当未显式指定导出格式时,图像任务默认回落到 “CVAT for images 1.1”,视频任务回落到 “CVAT for video 1.1”,即 CVAT 原生 XML 始终是最稳的交换格式。
手动标注体系
CVAT 的手动标注体系由两个正交维度组成:标注模式决定工作区的可用操作集,几何工具决定对象的空间表示。两者共同约束编辑器的行为、图形创建方式与可用的几何类型。
标注模式
| 模式 | 行为 |
|---|---|
| Standard(标准模式) | 完整访问所有标注工具与对象编辑能力 |
| Attribute annotation mode(属性标注模式) | 仅编辑对象属性(颜色、尺寸等),不改动几何形状 |
| Single shape mode(单形状模式) | 绘制一个形状后自动退出绘制状态,适合逐帧快速框选 |
| Tag annotation mode(标签模式) | 为帧添加帧级标签,不绘制形状 |
| Review mode(审核模式) | 审阅并校验已有标注,用于 QA 流程 |
从源码结构看,这些模式在前端有对应的状态管理实现:cvat-ui/src/reducers/ 目录下除通用的 annotation-reducer.ts 外,还单独维护了 review-reducer.ts 用于审核流,与文档中的 Review mode 声明相印证。
Shape 与 Track:几何对象的时间维度
在帧上绘制对象时,可以选择对象在时间轴上的行为:
- Shape(形状):仅在当前帧创建单个形状;
- Track(轨迹):将多个帧上的形状链接为同一对象,形成跨帧序列,支持插值(interpolation)与外推,是视频标注的核心抽象。
绘制方式上,CVAT 同时支持“由两个对角点定义”与“通过四个角点放置”两种方式以获得更细的控制。这一抽象在 cvat-core/src/annotations-objects/ 中体现得非常直接:每种几何类型都有一对*-shape.ts与*-track.ts文件,例如rectangle-shape.ts/rectangle-track.ts、cuboid-shape.ts/cuboid-track.ts、skeleton-shape.ts/skeleton-track.ts、polygon-shape.ts/polygon-track.ts等,统一继承自shape.ts与track.ts基类。
形状工具与适用场景
文档给出的形状类型与用途对照表如下(继承自 Overview 原文):
| 形状 | 适用场景 |
|---|---|
| Rectangles(矩形) | 简单目标检测,对象呈盒状,如建筑物中的窗户 |
| Polygons(多边形) | 图像中复杂形状,如地图地理特征、精细产品轮廓 |
| Polylines(折线) | 线性对象,如道路、路径或姿态估计中的肢体 |
| Ellipses(椭圆) | 圆形/椭圆形对象的分割掩码,如盘子、球、眼睛 |
| Cuboids(长方体) | 3D 分割掩码,捕获对象体积与位姿,用于自动驾驶与机器人 |
| Skeletons(骨骼) | 关节结构的分割掩码,用于人体姿态估计、动画与运动分析 |
| Brush Tool(刷笔工具) | 自由形态像素级分割掩码,如医学影像 |
| Tags(标签) | 图像/视频分类任务,如场景或主题识别 |
2D 标注绘制引擎位于 cvat-canvas/ 包(drawHandler.ts、editHandler.ts、masksHandler.ts等),3D 标注则由独立的 cvat-canvas3d/ 包承担(canvas3d.ts、cuboid.ts等),两者分别对应表格中 2D 形状与 Cuboids 的实现载体。
自动化标注:AI Agent 与无服务器模型函数
CVAT 的自动标注通过一组 AI 工具实现,用于在图像和视频上自动检测、分割或跟踪对象。这些工具分为三类来源:
- 内置模型:如 SAM/SAM2 交互分割模型;
- 原生集成平台的预训练模型:如 Hugging Face、Roboflow(CVAT Online 能力);
- 自部署的自定义或第三方模型(即 CVAT AI Agent 机制):涵盖 YOLO 等框架,以 Nuclio 函数形式运行。
官方内置模型清单
Overview 文档列出了完整的内置模型支持矩阵:
| 算法 | 类别 | 框架 | CPU | GPU |
|---|---|---|---|---|
| Segment Anything | Interactor(交互器) | PyTorch | 支持 | 支持 |
| Faster RCNN (inception_resnet_v2) | Detector(检测器) | OpenVINO | 支持 | — |
| Mask RCNN (inception_resnet_v2) | Detector | OpenVINO | 支持 | — |
| YOLO v3 | Detector | OpenVINO | 支持 | — |
| YOLO v7 | Detector | ONNX | 支持 | 支持 |
| Object Reidentification | ReID(再识别) | OpenVINO | 支持 | — |
| Semantic Segmentation for ADAS | Detector | OpenVINO | 支持 | — |
| Text Detection v4 | Detector | OpenVINO | 支持 | — |
| SiamMask | Tracker(跟踪器) | PyTorch | 支持 | 支持 |
| TransT | Tracker | PyTorch | 支持 | 支持 |
| Inside-Outside Guidance | Interactor | PyTorch | 支持 | — |
| Faster RCNN (inception_v2_coco) | Detector | TensorFlow | 支持 | 支持 |
| RetinaNet (r101) | Detector | PyTorch | 支持 | 支持 |
| Face Detection (0205) | Detector | OpenVINO | 支持 | — |
仓库中的模型函数布局
当前仓库的 serverless/ 目录承载了其中一部分模型的 Nuclio 函数实现,目录结构按“框架/作者/模型”组织:
| 模型 | 仓库路径 |
|---|---|
| SAM (ViT-H) | serverless/pytorch/facebookresearch/sam/nuclio/ |
| TransT | serverless/pytorch/dschoerk/transt/nuclio/ |
| RetinaNet r101 | serverless/pytorch/facebookresearch/detectron2/retinanet_r101/nuclio/ |
| IOG (Inside-Outside Guidance) | serverless/pytorch/shiyinzhang/iog/nuclio/ |
| HRNet32 (mmpose) | serverless/pytorch/mmpose/hrnet32/nuclio/ |
| YOLOv7 | serverless/onnx/WongKinYiu/yolov7/nuclio/ |
| Faster RCNN (inception_v2_coco) | serverless/tensorflow/faster_rcnn_inception_v2_coco/nuclio/ |
| Mask RCNN / Face Detection (OpenVINO) | serverless/openvino/omz/ |
以 SAM 为例,其函数声明文件 function.yaml 展示了 AI Agent 的元数据约定:metadata.annotations中的type: interactor声明模型类别,spec字段(min_pos_points: 0、startswith_box_optional: true)描述前端交互约束(最少正/负点数、是否允许从框开始),help_message则直接渲染为界面提示。构建部分通过 Nuclio 的directives在安装 PyTorch、segment-anything 源码并下载sam_vit_h_4b8939.pth权重,HTTP 触发器将请求体上限设为 32MB。
部署流程:deploy 脚本
仓库提供了 deploy_cpu.sh 与 deploy_gpu.sh 两个部署脚本。CPU 脚本的执行逻辑(deploy_cpu.sh)为:
- 构建 OpenVINO 基础镜像
cvat.openvino.base; nuctl create project cvat --platform local在本地平台创建 Nuclio 项目;- 以 glob 遍历
**/function.yaml,对含Dockerfile的函数目录先构建专属基础镜像; - 逐个执行
nuctl deploy,注入CVAT_FUNCTIONS_REDIS_HOST=cvat_redis_ondisk与CVAT_FUNCTIONS_REDIS_PORT=6666环境变量(模型函数通过 Redis 与后端交换任务状态),并将函数挂载进cvat_cvat容器网络。
这套“脚本 + Nuclio + Redis 状态通道”的组合,就是 CVAT 将任意第三方模型接入为 AI Agent 的标准路径:为模型编写main.py(HTTP handler)与model_handler.py,描述好 function.yaml,再经由脚本部署到与 CVAT 后端同网络内的 Nuclio 实例即可。
开发者生态与关键资源
Overview 文档的 “Useful links” 一节指引了从安装到开发接口的完整资源链。结合当前仓库,这些能力的落地位置如下:
| 资源 | 说明 | 仓库位置 |
|---|---|---|
| 自托管安装 | Community 版本地/自有云部署(含 AWS 部署指南) | 根目录 Dockerfile、docker-compose.yml、docker-compose.dev.yml |
| 数据集管理框架 | 基于 Datumaro 的构建、转换与分析 CLI,是构建/转换/分析数据集的核心工具 | cvat/apps/dataset_manager/ 及 utils/dataset_manifest/ |
| Server REST API | 客户端(CLI、浏览器、脚本)通过 HTTP 与 CVAT 交互的完整接口契约 | cvat/schema.yml(OpenAPI 规范)、cvat/urls.py |
| Python SDK | 提供服务器交互与数据校验、序列化等附加功能的 Python 库 | cvat-sdk/(含 cvat_sdk/core/client.py 及 examples/ 实战脚本) |
| 命令行工具 | 管理 CVAT 任务的轻量 CLI,具备成长为完整管理工具的潜力 | cvat-cli/(入口 cvat_cli/main.py) |
| XML 标注格式 | CVAT 原生标注数据的格式规范,理解数据结构与兼容性的基础 | cvat/apps/dataset_manager/formats/cvat.py |
| 测试体系 | REST API、SDK、CLI 的端到端验证 | tests/python/(含 rest_api/、sdk/、cli/) |
SDK 一栏特别值得一提的是 examples/ 目录下的脚本集合,覆盖了创建项目、导入/导出标注、自动标注、Webhook 注册与资源监控等典型工作流,是理解 REST API 实际用法的最佳入口。
生态集成
CVAT 作为全球化标注平台,文档列出了与其生态紧密关联的三方服务:
| 服务 | 可用范围 | 集成说明 |
|---|---|---|
| Human Protocol | Online / Community / Enterprise | 在 Human Protocol 框架内集成 CVAT,增强其数据标注能力 |
| FiftyOne | Online / Community / Enterprise | 开源数据集管理与模型分析工具,与 CVAT 深度集成以强化标注能力与标签精修 |
| Hugging Face / Roboflow | Online | 可将 Hugging Face 与 Roboflow 的模型添加到 CVAT Online 中以增强计算机视觉任务 |
许可证信息
CVAT 采用多许可证并存的策略,Overview 文档给出的完整清单为:
| 许可证类型 | 适用范围 | 说明 |
|---|---|---|
| MIT License | Community、Enterprise | 宽松自由软件许可证,允许广泛使用、修改与分发(见根目录 LICENSE 及源码文件头部的SPDX-License-Identifier: MIT声明) |
| LGPL License (FFmpeg) | Online、Community、Enterprise | 内嵌 FFmpeg 项目的 LGPL 组件;用户应自行确认 FFmpeg 的使用是否触发额外许可义务,CVAT.ai 公司不提供该许可且不对相关许可费用负责 |
| Commercial License | Enterprise | Enterprise 商用方案适用单独的商务许可证,面向企业与客户组织 |
| Terms of Use | 全部产品 | 规定使用条款与保密信息处理框架 |
| Privacy Policy | 全部产品 | 规定访问与使用服务过程中的信息收集、保护与披露规则 |
联系与支持渠道
| 咨询类型 | 适用对象 | 渠道 |
|---|---|---|
| Commercial Inquiries | Online、Enterprise、Labeling Services | 咨询 Enterprise 报价、Online Team 订阅或订购标注服务 |
| General Inquiries | 全部产品与服务 | 洽谈合作、联合营销或投资机会 |
| CVAT Online Customer Support | Online(Pro 与 Team 计划) | 产品支持、账单问题与功能反馈 |
| CVAT Community Customer Support | Community | 在项目代码库的 Issues 渠道报告缺陷或提交功能请求 |
小结
Overview 文档勾勒出的 CVAT 能力版图,在当前仓库中均有对应的源码落点:media.mimetypes与格式注册器证实了从图像、视频、点云到 COCO/YOLO/PASCAL VOC/KITTI 等标准格式的完整 I/O 能力;cvat-core与cvat-canvas/cvat-canvas3d的 shape/track 双轨抽象支撑了全部八类标注工具;serverless/下的 Nuclio 函数与部署脚本则展示了将 SAM、YOLOv7、TransT 等模型接入为 AI Agent 的工程路径。沿着这些入口深入,即可把 Overview 中的产品描述转化为可直接操作、可验证的技术方案。
【免费下载链接】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),仅供参考