第一次接触CVAT这个工具时,我正为一个农业AI项目寻找合适的标注方案。团队里有5个标注员需要同时标注数万张农田病虫害图片,试过七八个标注工具后,最终被CVAT的多用户协作和视频标注功能打动。但直接在服务器上部署CVAT的过程简直是一场噩梦——各种Python依赖冲突、数据库配置错误,折腾两天都没跑起来。直到发现官方推荐的Docker部署方案,20分钟就搭好了环境,那一刻真是相见恨晚。
CVAT(Computer Vision Annotation Tool)是Intel开源的计算机视觉标注工具,相比LabelImg等单机工具,它的核心优势在于:
而Docker化部署带来的好处更直接:
docker-compose up -d就能启动所有服务提示:生产环境建议选择CVAT的稳定版本(如v2.3.0),而非直接使用main分支,避免遇到未修复的bug。
去年给一家自动驾驶公司部署CVAT时,他们最初用2核4G的云服务器跑标注平台,结果10个人同时标注时网页卡得根本动不了。后来升级到8核16G配置才流畅运行,这里分享我的硬件选择公式:
bash复制# 查看Linux系统资源配置
free -h # 内存
df -h # 磁盘
nproc # CPU核数
nvidia-smi # 显卡信息
在Ubuntu 20.04上实测最稳定,CentOS需要额外处理selinux问题。关键步骤:
bash复制curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
bash复制sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # 立即生效
docker run hello-world # 测试
bash复制sudo apt install python3-pip
pip3 install docker-compose --user
注意:如果遇到
Got permission denied错误,检查/var/run/docker.sock文件权限,重启docker服务通常能解决。
官方仓库的main分支可能不稳定,建议切换到稳定tag:
bash复制git clone https://github.com/opencv/cvat
cd cvat
git checkout v2.3.0 # 切换到稳定版本
两个关键配置文件需要修改:
docker-compose.yml:
CVAT_HOST为服务器IP(如果是云服务器填公网IP)ports映射(比如8080:8080改为80:8080)Dockerfile:
dockerfile复制RUN sed -i 's/http:\/\/archive.ubuntu.com/http:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list
首次构建会下载约3GB基础镜像(建议喝杯咖啡等待):
bash复制docker-compose build
docker-compose up -d # 后台运行
启动后检查服务状态:
bash复制docker ps # 应该看到5个容器在运行
常见问题处理:
docker system prune清理缓存后重试-v参数挂载大容量数据盘CVAT默认使用Django自带认证系统,生产环境建议:
bash复制docker exec -it cvat bash -ic "python3 manage.py createsuperuser"
docker-compose.override.yml添加:yaml复制environment:
LDAP_SERVER: "ldap://your_server"
LDAP_USER_DN: "cn=admin,dc=example,dc=com"
处理4K图像时容易内存溢出,这几个参数很关键:
nginx复制client_max_body_size 100M;
proxy_read_timeout 300s;
redis复制maxmemory 2gb
maxmemory-policy allkeys-lru
sql复制ALTER SYSTEM SET shared_buffers = '2GB';
实测案例:某医疗影像项目通过以上优化,标注吞吐量从200张/小时提升到800张/小时。
默认情况下Docker容器停止后数据会丢失,必须做持久化:
yaml复制volumes:
- ./data:/home/django/data
- ./media:/home/django/media
bash复制docker exec cvat_db pg_dump -U root -d cvat > backup.sql
bash复制docker run -d -p 443:443 -v /path/to/certs:/etc/nginx/certs nginx
nginx复制allow 192.168.1.0/24;
deny all;
bash复制docker logs cvat > access.log
去年部署时遇到一个奇葩问题:标注页面能打开但无法上传图片,查了三天发现是服务器时间不同步导致CSRF token失效。解决方案:
bash复制docker exec cvat ntpdate ntp.aliyun.com
其他常见问题:
ENV LANG C.UTF-8chmod -R 755 ./data最后推荐几个实用插件: