保姆级教程Ubuntu 22.04Docker Compose V2部署CVAT与SAM模型全流程在计算机视觉领域数据标注是模型训练前的关键环节。传统手工标注效率低下而CVATComputer Vision Annotation Tool作为开源的图像标注工具结合SAMSegment Anything Model等先进模型能实现智能化的半自动标注。本文将手把手指导您在Ubuntu 22.04系统中通过Docker Compose V2和NVIDIA GPU加速完成CVAT平台与SAM模型的完整部署。1. 环境准备与基础配置Ubuntu 22.04 LTS作为长期支持版本提供了稳定的系统基础。与旧版Ubuntu相比22.04默认使用更新的软件包和内核版本这对NVIDIA驱动和容器化工具的支持更为友好。系统更新与基础依赖安装sudo apt update sudo apt upgrade -y sudo apt install -y git curl gnupg2 software-properties-common apt-transport-https ca-certificates对于Docker的安装Ubuntu 22.04官方仓库已包含较新版本但建议使用Docker官方源获取最新稳定版# 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置仓库 echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin注意Docker Compose V2已集成在docker-compose-plugin包中命令从原来的docker-compose变为docker compose去掉横线。验证安装docker --version docker compose version配置非root用户权限sudo usermod -aG docker $USER newgrp docker2. NVIDIA驱动与容器工具包配置GPU加速是运行SAM等大型模型的关键。Ubuntu 22.04默认使用nouveau开源驱动需要替换为官方NVIDIA驱动。推荐安装方式# 添加官方PPA sudo add-apt-repository ppa:graphics-drivers/ppa -y sudo apt update # 自动安装推荐驱动 sudo ubuntu-drivers autoinstall安装后重启系统验证驱动nvidia-smi配置NVIDIA Container Toolkit使Docker支持GPU# 添加仓库 distribution$(. /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 update sudo apt install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker测试GPU容器docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi3. CVAT平台部署与配置获取最新CVAT代码git clone https://github.com/opencv/cvat cd cvat配置环境变量替换为您的实际IPexport CVAT_HOSTyour_server_ip修改docker-compose.yml文件中的服务配置version: 3.8 services: cvat_server: image: cvat/server:latest container_name: cvat_server environment: CVAT_HOST: ${CVAT_HOST} volumes: - cvat_data:/home/django/data - cvat_keys:/home/django/keys - cvat_logs:/home/django/logs depends_on: - cvat_redis - cvat_db networks: - cvat ports: - 8080:8080 deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]启动服务docker compose up -d创建管理员账户docker exec -it cvat_server bash -ic python3 ~/manage.py createsuperuser4. SAM模型部署与半自动标注配置CVAT通过Nuclio框架支持serverless函数部署。对于SAM模型需要专门配置GPU支持。Nuclio环境准备docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d --build安装nuctl命令行工具版本需与compose文件一致wget https://github.com/nuclio/nuclio/releases/download/1.12.0/nuctl-1.12.0-linux-amd64 chmod x nuctl-1.12.0-linux-amd64 sudo mv nuctl-1.12.0-linux-amd64 /usr/local/bin/nuctl修改SAM模型的function-gpu.yaml文件优化依赖安装build: commands: - pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu118 - pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple - pip install githttps://github.com/facebookresearch/segment-anything.git部署SAM模型./serverless/deploy_gpu.sh serverless/pytorch/facebookresearch/sam验证部署访问http://your_server_ip:8070查看Nuclio仪表盘在CVAT标注界面选择AI Tools即可使用SAM进行智能分割5. 性能优化与常见问题解决GPU资源监控watch -n 1 nvidia-smi容器日志查看docker logs -f cvat_server常见问题处理问题现象可能原因解决方案无法访问8080端口防火墙限制sudo ufw allow 8080/tcpSAM模型加载慢镜像源问题修改function-gpu.yaml使用国内源GPU未被识别容器权限不足检查docker-compose.yml的deploy配置Nuclio仪表盘空白版本不匹配确保nuctl与dashboard版本一致性能调优建议对于大型标注项目增加CVAT内存限制# 在docker-compose.yml中 cvat_server: deploy: resources: limits: memory: 8G批量标注时调整SAM参数# 在serverless函数中 predictor SamPredictor(sam_model) predictor.set_image(image) masks, _, _ predictor.predict(point_coordspoints, point_labelslabels, multimask_outputFalse)CVAT与SAM的结合显著提升了标注效率。在实际项目中针对特定场景微调SAM模型能获得更好的分割效果。部署过程中保持组件版本一致是关键遇到问题时查阅官方GitHub issue通常能找到解决方案。