CVAT平台部署与半自动标注实战:从零到一搭建高效标注环境

张开发
2026/4/13 12:09:38 15 分钟阅读

分享文章

CVAT平台部署与半自动标注实战:从零到一搭建高效标注环境
1. CVAT平台部署前的环境准备在开始搭建CVAT平台之前确保你的硬件和软件环境符合要求至关重要。我曾在多个项目中部署过不同版本的CVAT这里分享一些实战经验。首先你需要一台运行Ubuntu 18.04或更高版本的机器配备NVIDIA GPU如2080Ti或更高性能显卡。为什么强调Ubuntu 18.04因为在16.04上会遇到各种依赖库不兼容的问题这个坑我踩过不止一次。关于Docker环境建议使用Docker 19.03及以上版本。这里有个小技巧在安装Docker之前先执行sudo apt-get update和sudo apt-get upgrade更新系统可以避免很多莫名其妙的依赖问题。安装Docker时我推荐使用官方源而不是Ubuntu默认源因为版本更新更及时。具体命令如下sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io安装完成后记得将当前用户加入docker组这样就不需要每次都加sudo了sudo groupadd docker sudo usermod -aG docker $USER newgrp docker验证Docker是否安装成功可以运行docker run hello-world。如果看到欢迎信息说明基础环境已经就绪。接下来我们需要安装Docker Compose插件注意不是老版的docker-compose这是管理CVAT多容器服务的关键工具。2. CVAT核心服务部署实战2.1 获取CVAT源码与基础配置首先从GitHub克隆CVAT的官方仓库。建议使用最新稳定版我在项目中用的是2.6.0版本git clone https://github.com/opencv/cvat cd cvat这里有个重要步骤设置CVAT_HOST环境变量。这个变量决定了CVAT服务的访问地址。如果你打算从其他机器访问这里需要设置为服务器的IP地址而不是localhostexport CVAT_HOST你的服务器IP接下来需要修改docker-compose.yml文件。用vim或nano打开文件找到所有包含localhost的地方替换为你的服务器IP。这个步骤很关键否则你可能只能在本地访问CVAT服务。修改完成后保存文件。2.2 启动CVAT核心服务现在可以启动CVAT服务了。使用以下命令在后台启动所有容器docker compose up -d第一次启动会下载所有需要的Docker镜像可能需要一些时间。启动完成后可以通过docker ps查看容器状态。正常情况下应该看到cvat_server、cvat_ui、cvat_db等容器在运行。接下来需要创建超级用户这是管理CVAT平台的必要步骤docker exec -it cvat_server bash -ic python3 ~/manage.py createsuperuser按照提示输入用户名、邮箱和密码。这个账号将拥有管理员权限可以用来创建其他用户和管理项目。2.3 访问CVAT Web界面服务启动后在浏览器中输入http://你的服务器IP:8080即可访问CVAT界面。我推荐使用Chrome浏览器因为某些标注功能在Firefox上可能会有兼容性问题。如果无法访问请检查服务器防火墙是否开放了8080端口docker-compose.yml中的IP配置是否正确CVAT_HOST环境变量是否设置正确登录后你就可以开始创建标注项目和任务了。建议先创建一个小型测试项目上传几张图片进行简单标注验证基础功能是否正常。3. 半自动标注功能部署指南3.1 Nuclio框架安装与配置半自动标注功能依赖于Nuclio无服务器框架。首先停止正在运行的CVAT服务docker compose down然后启动带有Nuclio的CVAT服务docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d如果遇到构建问题可以尝试添加--build参数重新构建docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d --build验证Nuclio是否正常运行访问http://你的服务器IP:8070应该能看到Nuclio的管理界面。3.2 安装nuctl命令行工具nuctl是管理Nuclio函数的必备工具。下载时要注意版本必须与docker-compose.serverless.yml中指定的版本一致wget https://github.com/nuclio/nuclio/releases/download/1.8.14/nuctl-1.8.14-linux-amd64 chmod x nuctl-1.8.14-linux-amd64 sudo ln -sf $(pwd)/nuctl-1.8.14-linux-amd64 /usr/local/bin/nuctl创建Nuclio项目nuctl create project cvat --platform local3.3 部署CPU版半自动标注模型CVAT提供了一些开箱即用的半自动标注模型。以OpenVINO的YOLOv3和DEXTR模型为例./serverless/deploy_cpu.sh serverless/openvino/omz/public/yolo-v3-tf ./serverless/deploy_cpu.sh serverless/openvino/dextr部署过程中可能会遇到Python包下载慢的问题。解决方法是在function.yaml文件中将pip源替换为国内源例如commands: - pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python torch torchvision4. GPU加速的半自动标注部署4.1 NVIDIA容器工具包安装要使用GPU加速首先需要安装NVIDIA Container Toolkitdistribution$(. /etc/os-release;echo $ID$VERSION_ID) \ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \ sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker验证GPU支持是否正常工作docker run --rm --runtimenvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi4.2 部署GPU加速的SAM模型Segment Anything Model (SAM)是当前最先进的图像分割模型。部署前需要修改function-gpu.yaml文件将pip源替换为清华源加速下载确认CUDA版本与你的驱动兼容然后执行部署命令./serverless/deploy_gpu.sh serverless/pytorch/facebookresearch/sam部署完成后在CVAT的标注界面中就可以使用SAM进行智能分割了。实测下来相比手动标注使用SAM可以节省80%以上的时间特别是对于复杂形状的对象。5. 常见问题排查与优化建议在实际部署过程中你可能会遇到各种问题。这里分享几个我遇到过的典型问题及解决方案问题1Nuclio部署失败检查docker-compose.serverless.yml中的Nuclio版本与nuctl版本是否一致查看日志docker logs cvat_nuclio尝试删除旧容器和镜像后重新部署问题2GPU加速不工作运行nvidia-smi确认驱动正常检查Docker运行时配置docker info | grep Runtime确保部署时使用了正确的function-gpu.yaml文件问题3标注工具加载缓慢检查服务器资源使用情况htop考虑增加SWAP空间对于大型项目建议使用Redis缓存性能优化方面我建议为CVAT配置SSD存储加速数据读取对频繁使用的模型启用预热定期清理不再使用的标注任务释放资源最后提醒一点记得定期备份你的标注数据。虽然CVAT本身有数据库但额外备份可以防止意外数据丢失。可以使用以下命令导出数据库备份docker exec -it cvat_db pg_dump -U root -d cvat cvat_backup.sql

更多文章