YQisme/cvat

计算机视觉标注工具(CVAT)是一个领先的平台,用于为视觉人工智能构建高质量的视觉数据集。它提供开源、云端和企业级产品,以及标注服务,支持图像、视频和3D标注,具备AI辅助标注、质量保证、团队协作、分析和开发者API等功能。

★ 0Forks 0PythonGitHub ↗Compare

Project website ↗

README

CVAT Community header

CVAT:计算机视觉标注工具

Release GitHub stars License CI server pulls ui pulls CVAT Online CVAT Enterprise Status Discord Docs

官网 · 文档 · 更新日志 · 教程 · 学院 · 博客

什么是 CVAT Community?

CVAT Community 是 CVAT 的免费、可自托管开源版本,是构建计算机视觉与视觉 AI 高质量数据集时最广泛使用的标注平台之一。自 2018 年以来,CVAT 已成为计算机视觉领域最知名的标注工具之一,拥有活跃的开源社区、数百万次 Docker 拉取量,并在科研与生产 AI 团队中被广泛采用。

CVAT Community 支持图像、视频和 3D 标注,提供数据集管理、团队协作、云存储集成,以及便于开发者使用的 SDK 与 API,让团队完全掌控数据与标注基础设施。该平台是 CVAT Online 与 CVAT Enterprise 的基础,并由 CVAT 工程团队持续维护。

团队选择 CVAT Community 的原因:

  • 数据自主: 完全运行在自己的基础设施中,数据不会离开你的环境。
  • AI 辅助标注: 接入自有的检测、分割、跟踪模型,加速标注流程。
  • 团队协作: 支持多用户、多组织,提供角色、任务分配与审核工作流。
  • MIT 开源核心: 可在宽松的 MIT 许可证下使用、修改与分发 CVAT Community。部分 serverless 资源与依赖可能适用其他许可证。
  • 生产级可靠: 所有 CVAT 商业产品的基础,已在规模化场景中验证。
  • 真正的开源: 开发过程透明,社区活跃,自 2018 年起托管于 GitHub。

本仓库包含 CVAT Community 的源代码与部署资源。

如需全托管方案、标注服务或企业级功能,请参阅 CVAT Online、CVAT Enterprise 与 CVAT 标注服务。

快速开始

💡 想在部署之前先体验 CVAT? 可直接在浏览器中 试用 CVAT Online(免费计划)。 各计划的功能与使用限制不同,详见 CVAT Online 定价。

安装

前置条件:

💡 CVAT 主要在基于 Chromium 的浏览器(Google Chrome、Microsoft Edge)上测试。 Firefox 可能可用但存在部分限制;不支持 Safari/WebKit。

1. 启动默认服务栈

克隆仓库并启动服务。

git clone https://github.com/cvat-ai/cvat
cd cvat

# 可选:设置你的 IP 或域名
# export CVAT_HOST=your-ip-or-domain

# 首次启动建议加 --build:cvat_ui 会从源码构建本地镜像(见下方「本地构建 UI 镜像」)
docker compose up -d --build

2. 创建管理员账户

docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'

完整安装说明及各操作系统配置,请参阅 安装指南。

3. 登录并开始标注

  • 在浏览器中打开 http://localhost:8080(或你的 CVAT_HOST)。
  • 使用超级用户账户登录。
  • 创建项目或任务,上传数据(图像、视频或点云),定义标签后即可开始标注。

更多标注工具与工作流说明,请参阅 CVAT 文档 或免费课程 CVAT Academy。

其他部署方式(AWS、Kubernetes、外部 PostgreSQL、备份、升级等),请参阅 部署指南。

本地构建 UI 镜像(Docker 部署)

本仓库的 docker-compose.yml 中,cvat_ui 已配置为从源码构建前端镜像,而不是从 Docker Hub 拉取预构建的 cvat/ui:dev。构建逻辑见根目录 Dockerfile.ui(在 Node 中执行 yarn run build:cvat-ui,再将产物放入 nginx)。

cvat_ui 相关配置如下:

cvat_ui:
  image: cvat/ui:${CVAT_VERSION:-dev}
  build:
    context: .
    dockerfile: Dockerfile.ui

Compose 会将构建结果打上与 image 相同的标签(默认为 cvat/ui:dev)。后端服务 cvat_server 等仍使用镜像 cvat/server:${CVAT_VERSION:-dev}(默认从 registry 拉取);若也需本地构建服务端,可叠加 docker-compose.dev.yml。

构建与启动

cd cvat

# 仅构建 UI 镜像
docker compose build cvat_ui

# 启动全栈(含刚构建的 UI)
docker compose up -d

# 或一步完成构建并启动 UI
docker compose up -d --build cvat_ui

修改前端后更新到 8080

在 cvat-ui/ 或相关 workspace 中改完代码后,重新构建并重启 UI 容器:

docker compose build cvat_ui
docker compose up -d cvat_ui

然后在浏览器打开 http://localhost:8080(或你的 CVAT_HOST)验证。

可选:自定义镜像标签与构建参数

# 使用自定义版本标签
CVAT_VERSION=my-local docker compose build cvat_ui
CVAT_VERSION=my-local docker compose up -d cvat_ui

# 直接 docker build(效果与 compose build 相同,需手动打标签)
docker build -f Dockerfile.ui -t cvat/ui:dev .

Dockerfile.ui 支持的构建参数示例:

docker compose build cvat_ui \
  --build-arg SOURCE_MAPS_ENABLED=true
# 或在 docker-compose.yml 的 build.args 中声明 CLIENT_PLUGINS、SOURCE_MAPS_ENABLED 等

验证是否使用本地镜像

docker images cvat/ui
docker inspect cvat_ui --format '{{.Config.Image}}'

本地构建的镜像 Created 时间应为最近一次构建时间。

与热更新开发的区别: 本节适用于通过 Docker 在 8080 端口提供 UI(接近生产部署)。若需改一行代码就刷新界面,请使用下方 前端开发(热更新) 工作流(3000 端口),无需每次 docker compose build cvat_ui。

前端开发(热更新)

当你修改 cvat-ui 并希望在浏览器中立即看到效果、且无需每次重建 cvat_ui Docker 镜像时,使用此工作流。若要把改动打进 Docker 镜像并在 8080 访问,请参阅上方 本地构建 UI 镜像(Docker 部署)。

架构: 后端用 Docker 运行,前端在本机启动 dev server。Webpack 在 3000 端口提供 UI 热更新,并将 API 请求代理到 Docker 后端的 8080 端口。

浏览器 (:3000) → webpack-dev-server → 代理 /api/* → traefik (:8080) → cvat_server

前置条件:

  • 已完成上方 安装 中的 Docker 服务栈
  • Node.js 20+ 与 Yarn(通过 corepack enable yarn 启用)

1. 启动后端(Docker)

cd cvat
docker compose up -d

# 可选:停止 Docker UI 容器,避免与本机 dev server 混淆
docker compose stop cvat_ui

所需后端服务(docker compose up -d 会自动启动):

服务 作用
traefik 8080 端口的 API 网关
cvat_server REST API
cvat_db、cvat_redis_inmem、cvat_redis_ondisk、cvat_clickhouse、cvat_opa 核心依赖
cvat_worker_* 异步任务(导入、导出等),建议保留

此工作流不需要 cvat_ui 容器。

2. 安装前端依赖(仅首次)

yarn install

3. 启动前端 dev server

若 CVAT_HOST 为 localhost(默认),或在 .env 中设置为 CVAT_HOST=localhost:

yarn run start:cvat-ui:docker

打开 http://localhost:3000。修改 cvat-ui/src/ 下的文件并保存即可触发刷新。

若 CVAT_HOST 为自定义 IP 或域名(例如 .env 中的 192.168.0.13),需将 dev server 代理指向该地址:

cd cvat-ui
npx webpack serve \
  --env API_URL=http://192.168.0.13:8080 \
  --config ./webpack.config.js \
  --mode=development

请将 192.168.0.13 替换为你的 CVAT_HOST 值。

日常开发流程

docker compose up -d
docker compose stop cvat_ui          # 可选
yarn run start:cvat-ui:docker        # 或使用上方自定义 API_URL 命令

常见问题

现象 原因 解决方法
ECONNREFUSED localhost:7000 默认 yarn run start:cvat-ui 期望本机 Django 在 7000 端口 使用 yarn run start:cvat-ui:docker,或将 API_URL 设为 8080 端口
8080 端口 API 返回 404 CVAT_HOST 不是 localhost 将 API_URL 设为 http://<CVAT_HOST>:8080
UI 修改未生效 浏览器访问的是 8080(Docker UI) 本地开发请使用 3000 端口
重建很慢 每次改动都执行 docker compose build cvat_ui 日常改 UI 用 dev server(3000);仅验证 Docker 部署时再本地构建 UI(见 本地构建 UI 镜像)

其他开发模式

模式 适用场景 访问地址
本机 UI + Docker 后端(推荐,改前端) 前端热更新,无需重建镜像 http://localhost:3000
Docker 全栈 + 本地构建 UI(docker-compose.yml) 验证 Docker 部署、使用自改前端打包进镜像 http://localhost:8080(改 UI 后执行 docker compose build cvat_ui && docker compose up -d cvat_ui)
Docker 全栈 + 预构建 UI 不改 UI、使用 Hub 镜像(需去掉 build 段或 docker compose pull) http://localhost:8080
本机 UI + 本机 Django 后端 全栈本地调试 yarn run start:cvat-ui(API 在 7000 端口),见 开发环境

UI 相关命令详见 cvat-ui/README.md。

核心能力

  • 手动与自动标注: 使用边界框、多边形、掩码、关键点、立方体、标签等标注图像、视频与 3D 点云;接入自有模型实现自动标注。
  • 任务管理: 将数据集组织为项目,拆分为任务与作业,分配给标注员并实时跟踪进度。
  • 协作: 创建组织、邀请成员、分配角色,通过评论与 issue 协作标注。
  • 质量控制: 审核标注、标记问题,通过共识对比标注员结果,并通过服务端 API 运行 Ground Truth 与 Honeypot 检查。
  • 分析: 通过 Grafana 仪表盘监控用户活动、作业工时、事件与服务端日志。
  • 数据操作与集成: 支持 20+ 种格式导入/导出(COCO、YOLO、Pascal VOC、KITTI 等),连接云存储(S3、Azure、Google Cloud),并通过 REST API 与 Python SDK 自动化。

高级能力(如高级项目分析、质量控制 UI、内置 SAM 2 / SAM 3 自动标注、AI Agent、SSO 等)可在 CVAT Online 付费计划(Solo、Team)与 CVAT Enterprise 中使用。

开发者工具

CVAT 面向自动化集成设计。除 Web UI 外,还可通过以下方式接入流水线:

  • Python SDK:执行 pip install cvat-sdk,在 Python 中自动化创建任务、上传与导出。
  • 命令行工具:执行 pip install cvat-cli,在终端脚本化常见 CVAT 工作流。
  • REST API:对 CVAT 进行完整的程序化控制。

数据与格式

CVAT Community 支持图像、视频与 3D(点云)标注工作流。可通过 20+ 种行业标准格式导入/导出:CVAT (XML)、COCO (JSON)、YOLO (TXT)、Ultralytics YOLO (TXT/YAML)、Pascal VOC (XML)、KITTI (TXT)、MOT (TXT) 等。

完整支持格式列表。

机器学习与 AI 模型

CVAT Community 通过基于 Nuclio 的预构建 serverless 模型支持自动标注,涵盖检测、分割、姿态估计与跟踪:

模型 框架 类型
Segment Anything (SAM) PyTorch Interactor
Inside-Outside Guidance (IOG) PyTorch Interactor
RetinaNet R101 PyTorch Detector
HRNet32 Whole Body Pose PyTorch Pose Estimation
TransT PyTorch Tracker
YOLO v7 ONNX Detector
Mask RCNN Inception ResNet v2 OpenVINO Detector
Face Detection 0205 OpenVINO Detector
Faster RCNN Inception v2 TensorFlow Detector

启用自动标注时,在部署中加入 serverless 组件:

docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d

这将启动 serverless 基础设施。要在 CVAT 中使用模型,需安装 nuctl 并部署所需函数(如 SAM 或 YOLO),详见 自动标注指南。

如何选择 CVAT 版本?

  • CVAT Online: 无需部署即可最快体验 CVAT 并开始标注。适合在浏览器中评估 CVAT、探索托管功能,并在需要更大容量或团队工作流时升级到性价比更高的付费计划。
  • CVAT Community: MIT 许可的自托管版本,适合希望自行运行 CVAT、定制技术栈并掌控基础设施的团队。
  • CVAT Enterprise: 适合需要在自有云或内网环境部署 CVAT、需要企业支持、SSO 等安全控制、付费平台功能与 SLA 的组织。
  • Labeling Services(标注服务): 适合希望将标注工作外包给 CVAT.ai 专业标注团队、而非自建标注团队的客户。项目期间客户可获得 CVAT Online 试用访问。

各计划的详细限制与功能可用性,请参阅 CVAT Online 定价、CVAT Enterprise 与 标注服务。

支持

如需专属支持、SLA 或高级部署方案,可考虑 CVAT Enterprise。

贡献

欢迎各类贡献:Bug 报告、文档修复、集成与代码。

安全

许可证

CVAT Community 基于 MIT 许可证发布。

  • /serverless 目录下的代码同样为 MIT 许可,但可能包含适用其他许可证(含非商业许可)的第三方资源,使用前请查阅相应许可证。
  • 本软件使用 LGPL/GPL 下的 FFmpeg 库。详见 Dockerfile 与 FFmpeg 法律信息。

更多资源

最新产品发布、功能演示及 CVAT 相关内容:

CVAT Blog CVAT Academy Case Studies YouTube LinkedIn

Contributors

bsekachevzhiltsov-maxSpecLadazhavoroklakhovcvat-bot[bot]nmanovicdvkruchininMarishka17dependabot[bot]snyk-botActiveChooNdependabot-preview[bot]TOsmanovEldiesmdacocaarchibald1418yasakova-anastasiasizov-kirillnovdabenhoffyaizkazanisveta-cvatDmitriyOparinpaveltovchigrechkoPr1nceePMazarovichorazvalievzankevichViditagarwal7479

Issues