1. 为什么选择CVAT?
计算机视觉标注工具(CVAT)是Intel开源的图像和视频标注平台,它支持多种标注类型包括矩形框、多边形、关键点等。对于需要训练计算机视觉模型的研究人员和开发者来说,CVAT提供了强大的标注功能和团队协作支持。
在Windows环境下安装CVAT可能会遇到一些特有的挑战,比如Docker的配置、端口冲突等问题。我最近在一个目标检测项目中使用了CVAT,完整走通了Windows下的安装和使用流程,下面就把详细步骤和踩过的坑分享给大家。
2. 环境准备
2.1 系统要求
- Windows 10/11 64位专业版或企业版(家庭版可能会有Hyper-V相关问题)
- 至少8GB内存(16GB更佳)
- 50GB可用磁盘空间
- 已启用虚拟化(BIOS中设置)
注意:Windows家庭版没有Hyper-V功能,需要安装Docker Desktop时使用WSL2后端
2.2 必要软件安装
-
Docker Desktop:
- 下载地址:https://www.docker.com/products/docker-desktop
- 安装时勾选"Use WSL 2 instead of Hyper-V"(即使你是专业版也建议选这个)
- 安装完成后,在设置->Resources->WSL Integration中启用你的WSL发行版
-
WSL2(如果尚未安装):
以管理员身份打开PowerShell运行:bash复制
wsl --install wsl --set-default-version 2 -
Git:
- 下载地址:https://git-scm.com/download/win
- 安装时选择"Use Git from the Windows Command Prompt"
3. CVAT安装步骤
3.1 获取CVAT源码
打开Git Bash执行:
bash复制git clone https://github.com/opencv/cvat
cd cvat
3.2 配置Docker环境
-
修改docker-compose.yml文件:
- 搜索
CVAT_HOST环境变量 - 修改为:
CVAT_HOST: 127.0.0.1
- 搜索
-
创建.env文件:
bash复制cp docker-compose.yml docker-compose.override.yml
echo "CVAT_HOST=127.0.0.1" > .env
3.3 构建并启动容器
- 启动基础服务:
bash复制docker-compose up -d
- 等待所有容器启动(首次运行需要下载镜像,耗时较长):
bash复制docker ps # 查看容器状态
- 创建超级用户:
bash复制docker exec -it cvat_server bash -ic 'python3 manage.py createsuperuser'
4. 常见问题解决
4.1 端口冲突问题
如果8080端口被占用,修改docker-compose.override.yml:
yaml复制services:
cvat:
ports:
- "8088:8080" # 将8088改为你想要的端口
4.2 WSL2内存不足
在用户目录下创建.wslconfig文件:
ini复制[wsl2]
memory=8GB
swap=4GB
localhostForwarding=true
4.3 数据卷权限问题
Windows和Linux文件系统权限不兼容,建议:
- 在WSL2中创建项目目录
- 通过
\\wsl$访问WSL文件系统 - 或者使用Docker的bind mount功能
5. 使用技巧
5.1 数据导入最佳实践
- 创建共享目录:
bash复制docker volume create cvat_data
- 在docker-compose.override.yml中添加:
yaml复制services:
cvat:
volumes:
- cvat_data:/home/django/data
5.2 性能优化
- 关闭不需要的服务:
yaml复制# docker-compose.override.yml
services:
cvat_opa: # 关闭Open Policy Agent
profiles: ["disabled"]
- 调整Redis配置:
yaml复制services:
cvat_redis:
command: redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru
6. 实际使用体验
经过一周的实际使用,我发现CVAT在Windows下的表现相当稳定。标注过程中有几点值得注意:
- 视频标注时,建议先将视频分割成片段(每个片段100-200帧)
- 多人协作时,合理分配标注任务避免冲突
- 定期导出标注结果(建议每天结束时导出一次)
对于大型项目,我推荐使用CVAT的云版本或考虑租用云服务器部署。本地Windows环境适合小型团队或个人研究者使用。
7. 进阶配置
7.1 启用HTTPS
- 生成自签名证书:
bash复制openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout cvat.key -out cvat.crt -subj "/CN=localhost"
- 修改docker-compose.override.yml:
yaml复制services:
cvat:
environment:
CVAT_TLS_CERT: /etc/nginx/cvat.crt
CVAT_TLS_KEY: /etc/nginx/cvat.key
volumes:
- ./cvat.crt:/etc/nginx/cvat.crt
- ./cvat.key:/etc/nginx/cvat.key
7.2 集成自动标注
- 安装CVAT SDK:
bash复制pip install cvat-sdk
- 创建自动标注脚本示例:
python复制from cvat_sdk import make_client
with make_client("http://localhost:8080") as client:
task = client.tasks.retrieve(1)
task.upload_annotations("annotations.xml")
8. 维护与升级
8.1 定期备份
- 备份数据库:
bash复制docker exec cvat_db pg_dump -U root -d cvat > cvat_backup.sql
- 备份标注数据:
bash复制docker cp cvat_server:/home/django/data ./cvat_data_backup
8.2 升级CVAT版本
- 停止当前服务:
bash复制docker-compose down
- 拉取最新代码:
bash复制git pull origin master
- 重建容器:
bash复制docker-compose build --pull
docker-compose up -d
9. 性能监控
9.1 资源使用情况
查看容器资源占用:
bash复制docker stats
9.2 日志查看
查看服务器日志:
bash复制docker logs cvat_server
查看数据库日志:
bash复制docker logs cvat_db
10. 卸载CVAT
如果需要完全移除CVAT:
- 停止并删除容器:
bash复制docker-compose down
- 删除Docker卷:
bash复制docker volume rm $(docker volume ls -q | grep cvat)
- 删除镜像:
bash复制docker rmi $(docker images | grep cvat | awk '{print $3}')
在实际项目中,我建议保留数据卷以便后续重新部署时恢复数据。