CVAT搭建
Ubuntu 22.04/20.04(x86_64/amd64)
打开终端窗口。如果你不知道如何在 Ubuntu 上打开终端窗口,请阅读答案。
在终端窗口中输入以下命令来安装 Docker 和 Docker Compose。更多说明请参见此处。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15sudo apt-get update
sudo apt-get --no-install-recommends install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get --no-install-recommends install -y \
docker-ce docker-ce-cli containerd.io docker-compose-plugin(可选)为了避免在 Docker 命令前面添加
sudo,您可以执行安装后步骤。这包括创建一个名为 的 Unix 组docker,并将当前用户添加到该组。1
2sudo groupadd docker
sudo usermod -aG docker $USER注销并重新登录(或重启),以便重新评估你的组成员身份。
groups之后,你可以在终端窗口中输入命令,并检查docker其输出中是否包含 group 。使用 Git从GitHub 存储库克隆CVAT源代码 。
以下命令将克隆最新的开发分支:
1
2git clone https://github.com/cvat-ai/cvat
cd cvat如果您想下载其中一个发行版本或使用或工具,请参阅替代方案。
wget``curl要通过网络或其他系统访问 CVAT,请导出
CVAT_HOST环境变量1
export CVAT_HOST=FQDN_or_YOUR-IP-ADDRESS
运行 docker 容器。下载最新的 CVAT 和其他所需镜像(如 postgres、redis)并启动容器需要一些时间。
1
docker compose up -d
(可选)使用
CVAT_VERSION环境变量指定要安装的 CVAT 版本(例如v2.1.0)dev。默认行为:dev将为开发分支提取镜像,并为发布版本提取相应的发布镜像。1
CVAT_VERSION=dev docker compose up -d
替代方案:如果您想使用未发布的更改在本地构建图像,请参阅如何拉取/构建/更新 CVAT 图像部分
您可以注册一个用户,但默认情况下,该用户甚至没有查看任务列表的权限。因此,您应该创建一个超级用户。超级用户可以使用管理面板为用户分配正确的组。请使用以下命令:
1
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
为您的管理员帐户选择用户名和密码。更多信息请阅读Django 文档。
Google Chrome 是 CVAT 唯一支持的浏览器。您也需要安装它。在终端窗口中输入以下命令:
1
2
3
4curl https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get --no-install-recommends install -y google-chrome-stable打开已安装的 Google Chrome 浏览器,并访问localhost:8080。在登录页面输入超级用户的登录名/密码,然后点击*“登录”* 按钮。现在,您应该可以创建新的注释任务了。更多详细信息,请阅读 CVAT 手册。
Windows 10
安装 WSL2(适用于 Linux 的 Windows 子系统)请参阅此官方指南。WSL2 需要 Windows 10 2004 或更高版本。安装 WSL2 后,请安装您选择的 Linux 发行版。
下载并安装[适用于 Windows 的 Docker Desktop](https://desktop.docker.com/win/main/amd64/Docker Desktop Installer.exe)。双击
Docker for Windows Installer运行安装程序。更多说明请参见此处。docker WSL2 后端的官方指南请参见 此处。注意:请检查您是否专门为 Docker 使用 WSL2 后端。在 Docker Desktop 中,转到
Settings >> Resources >> WSL Integration,并启用与您选择的 Linux 发行版的集成。下载并安装 适用于 Windows 的 Git。安装软件包时,请保留所有默认选项。有关该软件包的更多信息,请参见此处。
下载并安装Google Chrome。它是 CVAT 唯一支持的浏览器。
进入 Windows 菜单,找到你安装的 Linux 发行版并运行它。你应该会看到一个终端窗口。
从GitHub 存储库克隆CVAT源代码 。
以下命令将克隆最新的开发分支:
1
2git clone https://github.com/cvat-ai/cvat
cd cvat如果您想下载其中一个发行版本,请参阅替代方案。
运行 Docker 容器。从 DockerHub 下载最新的 CVAT 版本和其他所需镜像(如 postgres、redis 等)并创建容器需要一些时间。
1
docker compose up -d
(可选)使用
CVAT_VERSION环境变量指定要安装的 CVAT 版本(例如v2.1.0)dev。默认行为:dev将为开发分支提取镜像,并为发布版本提取相应的发布镜像。1
CVAT_VERSION=dev docker compose up -d
替代方案:如果您想使用未发布的更改在本地构建图像,请参阅如何拉取/构建/更新 CVAT 图像部分
您可以注册一个用户,但默认情况下,该用户甚至没有查看任务列表的权限。因此,您应该创建一个超级用户。超级用户可以使用管理面板为其他用户分配正确的组。请使用以下命令:
1
sudo docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
如果你没有安装 winpty 或者上述命令不起作用,你也可以尝试以下操作:
1
2
3
4enter docker image first
docker exec -it cvat_server /bin/bash
then run
python3 ~/manage.py createsuperuser为您的管理员帐户选择用户名和密码。更多信息请阅读Django 文档。
打开已安装的 Google Chrome 浏览器,并访问localhost:8080。在登录页面输入超级用户的登录名/密码,然后点击*“登录”* 按钮。现在,您应该可以创建新的注释任务了。更多详细信息,请阅读 CVAT 手册。
Mac OS Mojave
下载Mac 版 Docker。双击 Docker.dmg 打开安装程序,然后将鲸鱼 Moby 拖到“应用程序”文件夹中。双击“应用程序”文件夹中的 Docker.app 即可启动 Docker。更多说明可 在此处找到。
在 Mac 上安装 Git 有几种方法。最简单的方法可能是安装 Xcode 命令行工具。在 Mavericks (10.9) 或更高版本上,您只需在第一次尝试从终端运行 git 即可完成此操作。
1
git --version
如果您尚未安装,系统会提示您安装。更多安装说明请参见此处。
下载并安装Google Chrome。它是 CVAT 唯一支持的浏览器。
打开终端窗口。终端应用程序位于“应用程序”中的“实用工具”文件夹中。要打开它,请打开“应用程序”文件夹,然后打开“实用工具”,并双击“终端”。或者,按下 Command + 空格键启动 Spotlight,输入“终端”,然后双击搜索结果。
使用 Git从GitHub 存储库克隆CVAT源代码 。
以下命令将克隆最新的开发分支:
1
2git clone https://github.com/cvat-ai/cvat
cd cvat如果您想下载其中一个发行版本或使用或工具,请参阅替代方案。
wget``curl运行 Docker 容器。从 DockerHub 下载最新的 CVAT 版本和其他所需镜像(如 postgres、redis 等)并创建容器需要一些时间。
1
docker compose up -d
(可选)使用
CVAT_VERSION环境变量指定要安装的 CVAT 版本(例如v2.1.0)dev。默认行为:dev将为开发分支提取镜像,并为发布版本提取相应的发布镜像。1
CVAT_VERSION=dev docker compose up -d
替代方案:如果您想使用未发布的更改在本地构建图像,请参阅如何拉取/构建/更新 CVAT 图像部分
您可以注册一个用户,但默认情况下,该用户甚至没有查看任务列表的权限。因此,您应该创建一个超级用户。超级用户可以使用管理面板为其他用户分配正确的组。请使用以下命令:
1
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
为您的管理员帐户选择用户名和密码。更多信息请阅读Django 文档。
打开已安装的 Google Chrome 浏览器,并访问localhost:8080。在登录页面输入超级用户的登录名/密码,然后点击*“登录”* 按钮。现在,您应该可以创建新的注释任务了。更多详细信息,请阅读 CVAT 手册。
高级主题
如何获取 CVAT 源代码
Git(Linux、Mac、Windows)
如果尚未安装 Git,请安装它
- 乌本图:
1
sudo apt-get --no-install-recommends install -y git
- Windows:按照https://git-scm.com/download/win上的说明进行操作
从GitHub 存储库克隆CVAT源代码 。
下面的命令将克隆默认分支(develop):
1
2git clone https://github.com/cvat-ai/cvat
cd cvat要克隆特定标签,例如 v2.1.0:
1
2git clone -b v2.1.0 https://github.com/cvat-ai/cvat
cd cvat
Wget(Linux、Mac)
下载最新的开发分支:
1 | wget https://github.com/cvat-ai/cvat/archive/refs/heads/develop.zip |
下载特定标签:
1 | wget https://github.com/cvat-ai/cvat/archive/refs/tags/v1.7.0.zip |
Curl(Linux、Mac)
下载最新的开发分支:
1 | curl -LO https://github.com/cvat-ai/cvat/archive/refs/heads/develop.zip |
下载特定标签:
1 | curl -LO https://github.com/cvat-ai/cvat/archive/refs/tags/v1.7.0.zip |
CVAT 健康检查命令
以下命令允许测试 CVAT 容器以确保其正常工作。
1 | docker exec -t cvat_server python manage.py health_check |
健康 CVT 容器的预期输出:
1 | Cache backend: default ... working |
在代理后部署 CVAT
如果您将 CVAT 部署在代理后面,并且不打算使用任何无服务器函数 进行自动注释,则导出的环境变量 http_proxy、https_proxy和no_proxy应该足以构建镜像。否则,请在启动容器的用户主目录中创建或编辑文件~/.docker/config.json,并添加如下所示的 JSON:
1 | { |
这些环境变量在任何容器中都会自动设置。更多详情请参阅Docker 文档。
使用 Traefik 仪表板
如果您正在自定义 docker compose 文件并且遇到一些意外问题,使用 Traefik 仪表板可能会非常有用,以查看问题出在 Traefik 配置上还是某些服务上。
您可以通过取消注释以下行来启用 Traefik 仪表板docker-compose.yml
1 | services: |
如果你正在使用docker-compose.https.yml,也请取消注释这些行
1 | services: |
请注意,不建议在生产中使用这种“不安全”的仪表板(如果您的实例是公开可用的);如果您想在生产中保留仪表板,您应该阅读 Traefik 的 文档,了解如何正确保护它。
附加组件
半自动和自动注释
请遵循本指南。
停止所有容器
下面的命令停止并删除由创建的容器和网络up。
1 | docker compose down |
使用您自己的域
如果您想在本地主机之外(在另一个域上)访问 CVAT 实例,您应该指定CVAT_HOST环境变量,如下所示:
1 | export CVAT_HOST=<YOUR_DOMAIN> |
分享路径
您可以在创建任务时使用共享存储上传数据。为此,您需要将共享存储挂载到 CVAT Docker 容器。docker-compose.override.yml 的示例如下:
1 | services: |
您可将共享设备路径更改为您的实际共享。
您可以将 云存储安装为 FUSE,然后将其用作共享。
电子邮件验证
您可以为新注册用户启用邮箱验证。在设置文件中指定以下选项 ,配置 Django allauth 启用邮箱验证 (ACCOUNT_EMAIL_VERIFICATION = ‘mandatory’)。在用户的邮箱地址验证通过之前,访问将被拒绝。
1 | ACCOUNT_AUTHENTICATION_METHOD = 'username_email' |
此外,您还需要配置 Django 电子邮件后端来发送电子邮件。这取决于您使用的电子邮件服务器,本教程不作介绍, 详情请参阅Django SMTP 后端配置。
在 Scaleway 公有云上部署 CVAT
请按照 本教程 在 Scaleway 云实例上安装并设置对 CVAT 的远程访问,并将数据放在已安装的对象存储桶中。
使用 HTTPS 部署安全的 CVAT 实例
使用 Traefik,您可以自动从 Let’s Encrypt 为您的域名获取 TLS 证书,从而能够使用 HTTPS 协议访问您的网站。
要启用此功能,首先设置CVAT_HOST(您的网站的域名)和ACME_EMAIL (Let’s Encrypt 的联系电子邮件)环境变量:
1 | export CVAT_HOST=<YOUR_DOMAIN> |
然后,使用该docker-compose.https.yml文件覆盖基础docker-compose.yml文件:
1 | docker compose -f docker-compose.yml -f docker-compose.https.yml up -d |
在防火墙中,端口 80 和 443 必须对来自任何
docker-compose-.https.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 services:
cvat_server:
labels:
traefik.http.routers.cvat.entrypoints: websecure
traefik.http.routers.cvat.tls.certresolver: lets-encrypt
cvat_ui:
labels:
traefik.http.routers.cvat-ui.entrypoints: websecure
traefik.http.routers.cvat-ui.tls.certresolver: lets-encrypt
traefik:
environment:
TRAEFIK_ENTRYPOINTS_web_ADDRESS: :80
TRAEFIK_ENTRYPOINTS_web_HTTP_REDIRECTIONS_ENTRYPOINT_TO: websecure
TRAEFIK_ENTRYPOINTS_web_HTTP_REDIRECTIONS_ENTRYPOINT_SCHEME: https
TRAEFIK_ENTRYPOINTS_websecure_ADDRESS: :443
TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_EMAIL: "agri@gmail.com"
TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_TLSCHALLENGE: "true"
TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_STORAGE: /letsencrypt/acme.json
ports:
- 80:80
- 443:443
volumes:
- cvat_letsencrypt:/letsencrypt
volumes:
cvat_letsencrypt:设置自定义证书
创建证书目录
certs在项目根目录中创建一个目录:
1 mkdir -p ./certs将您的证书移动到
./certs目录:
1
2 mv /path/to/cert.pem ./certs/cert.pem
mv /path/to/key.pem ./certs/key.pem更改 Traefik 配置
在项目目录的根目录中创建
tls.yml以下内容:
1
2
3
4
5
6 tls:
stores:
default:
defaultCertificate:
certFile: /certs/cert.pem
keyFile: /certs/key.pem编辑
docker-compose.https.yml文件并更改traefik服务配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 traefik:
environment:
TRAEFIK_ENTRYPOINTS_web_ADDRESS: :80
TRAEFIK_ENTRYPOINTS_web_HTTP_REDIRECTIONS_ENTRYPOINT_TO: websecure
TRAEFIK_ENTRYPOINTS_web_HTTP_REDIRECTIONS_ENTRYPOINT_SCHEME: https
TRAEFIK_ENTRYPOINTS_websecure_ADDRESS: :443
# Disable Let's Encrypt
# TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_EMAIL: "${ACME_EMAIL:?Please set the ACME_EMAIL env variable}"
# TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_TLSCHALLENGE: "true"
# TRAEFIK_CERTIFICATESRESOLVERS_lets-encrypt_ACME_STORAGE: /letsencrypt/acme.json
ports:
- 80:80
- 443:443
# Add certificates volume and tls.yml rules
volumes:
- ./certs:/certs
- ./tls.yml:/etc/traefik/rules/tls.yml启动 CVAT
使用以下命令启动 CVAT:
1 docker compose -f docker-compose.yml -f docker-compose.https.yml up -d如何更改默认 CVAT 主机名或端口
要更改主机名,只需设置
CVAT_HOST环境变量
1 export CVAT_HOST=<YOUR_HOSTNAME_OR_IP>复制
注意,如果您使用
docker compose来sudo运行 CVAT,那么请添加-E(或--preserve-env) 标志以保留上面设置的用户环境变量,以便在您的 docker 容器中生效:
1 sudo -E docker compose up -d复制
如果要更改默认 Web 应用程序端口,请更改服务配置
ports部分traefik``docker-compose.yml
1
2
3
4
5
6
7 services:
traefik:
...
...
ports:
- <YOUR_WEB_PORTAL_PORT>:8080
- 8090:8090复制
请注意,如果您使用 HTTPS,则更改端口是没有意义的 - 端口 443 通常用于 HTTPS 连接,并且是 Let’s Encrypt TLS 挑战所必需的。
如何在 Windows 上配置连接的共享文件夹
按照 Docker 手册配置要用作共享目录的目录:
之后,应该可以将此目录用作 CVAT 共享:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 services:
cvat_server:
volumes:
- cvat_share:/home/django/share:ro
cvat_worker_import:
volumes:
- cvat_share:/home/django/share:ro
cvat_worker_export:
volumes:
- cvat_share:/home/django/share:ro
cvat_worker_annotation:
volumes:
- cvat_share:/home/django/share:ro
cvat_worker_chunks:
volumes:
- cvat_share:/home/django/share:ro
volumes:
cvat_share:
driver_opts:
type: none
device: /d/my_cvat_share
o: bind复制
上传的图片/视频存储在哪里
上传的数据保存在
cvat_datadocker卷中:
1
2 volumes:
- cvat_data:/home/django/data复制
注释存储在哪里
注释存储在 PostgreSQL 数据库中。数据库文件存储在
cvat_dbdocker 卷中:
1
2 volumes:
- cvat_db:/var/lib/postgresql/data复制
如何在 Windows 10 家庭版上安装 CVAT
遵循本指南。
我的页眉部分没有“分析”选项卡。如何添加分析?
您应该使用“分析”组件构建 CVAT 图像。
当任务中有多个作业时,如何从 UI 将注释上传到整个任务
您可以从“仪表板”视图或“任务”视图上传多作业任务的注释。从“注释”视图上传注释仅影响当前作业。
如何指定多个主机名
为此,您需要编辑和服务
traefik.http.<router>.cvat.rule的 docker 标签 ,如下所示(有关更多详细信息,请参阅 Traefik 规则文档):cvat``cvat_ui
1
2
3
4
5
6
7
8
9
10 cvat_server:
labels:
traefik.http.routers.cvat.rule:
(Host(`example1.com`) || Host(`example2.com`)) &&
(PathPrefix(`/api/`) || PathPrefix(`/static/`) || PathPrefix(`/admin`)
|| PathPrefix(`/django-rq`))
cvat_ui:
labels:
traefik.http.routers.cvat-ui.rule: Host(`example1.com`) || Host(`example2.com`)复制
如何创建包含多个作业的任务
创建新任务时设置段大小,此选项在 高级配置 部分中可用。
如何将 CVAT 转移到另一台机器
按照 备份/恢复指南进行操作。
如何将自己的深度学习模型加载到 CVAT 中
请参阅无服务器教程中的信息 。
我的服务器使用自定义 SSL 证书,我不想检查它。
您可以使用 CLI 参数调用控制 SSL 证书检查
--insecure。对于 SDK,您可以ssl_verify = True/False在cvat_sdk.core.client.Config对象中指定。
然后,CVAT 实例将在您的域的端口 443(HTTPS)和 80(HTTP,重定向到 443)上可用。
使用外部数据库部署 CVAT
默认情况下,docker compose up将启动一个 PostgreSQL 数据库服务器,用于存储 CVAT 的数据。如果您想使用自己的 PostgreSQL 实例,可以按如下方式操作。请注意,CVAT 仅支持与 中使用的 PostgreSQL 主版本相同的版本docker-compose.yml。
首先,使用数据库连接设置定义环境变量:
1 | export CVAT_POSTGRES_HOST=<PostgreSQL hostname> # mandatory |
然后,将该docker-compose.external_db.yml文件添加到您的docker compose up命令中:
1 | docker compose -f docker-compose.yml -f docker-compose.external_db.yml up -d |
如何拉取/构建/更新 CVAT 镜像
对于低于或等于 2.1.0 的 CVAT 版本,您需要使用 docker 拉取镜像,因为 compose 配置始终指向最新的镜像标签,例如
1
2
3
4
5docker pull cvat/server:v1.7.0
docker tag cvat/server:v1.7.0 openvino/cvat_server:latest
docker pull cvat/ui:v1.7.0
docker tag cvat/ui:v1.7.0 openvino/cvat_ui:latest**对于高于 v2.1.0 的 CVAT 版本,**可以使用
CVAT_VERSION环境变量从 DockerHub 中提取特定版本的预构建映像来指定版本(例如dev):1
CVAT_VERSION=dev docker compose pull
要自行构建镜像,请将
docker-compose.dev.ymlcompose 配置文件添加到docker compose命令中。如果您想通过一些源代码更改来构建 CVAT,这将非常有用。1
docker compose -f docker-compose.yml -f docker-compose.dev.yml build
要将本地图像更新为
latest或dev标签,请运行:1
CVAT_VERSION=dev docker compose pull
或者
1
CVAT_VERSION=latest docker compose pull
故障排除
中国用户的来源
如果您在中国,则安装时需要覆盖以下来源。
使用方法
apt update:预编译包:
1
2
3
4deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse或者源包:
1
2
3
4deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse-
将注册表镜像添加到
daemon.json文件:1
2
3
4
5
6
7
8{
"registry-mirrors": [
"http://f1361db2.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
} 对于使用
pip:1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
对于使用
npm:1
npm config set registry https://registry.npm.taobao.org/
而不是
git使用gitee:要替换加速源
docker.com运行:1
2
3
4curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
(lsb_release -cs) \要替换加速源
google.com运行:1
curl https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
由于证书问题,HTTPS 无法正常工作
如果您在 SSL 连接时遇到问题,要找到原因,您需要通过运行以下命令从 traefik 获取日志:
1 | docker logs traefik |
日志将帮助您找出问题。
如果错误与防火墙有关,则:
- 打开端口 80 和 443 以接收任何入站连接。
- 删除
acme.json。位置应类似于:/var/lib/docker/volumes/cvat_cvat_letsencrypt/_data/acme.json。
acme.json删除后,停止所有 cvat docker 容器:
1 | docker compose -f docker-compose.yml -f docker-compose.https.yml down |
确保变量设置(使用您的值):
1 | export CVAT_HOST=<YOUR_DOMAIN> |
并重新启动docker:
1 | docker compose -f docker-compose.yml -f docker-compose.https.yml up -d |





