在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南
1. 安装 Docker 和 Docker Composesudoapt-getupdatesudoapt-get--no-install-recommendsinstall-y\apt-transport-https\ca-certificates\curl\gnupg-agent\software-properties-commoncurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-sudoadd-apt-repository\deb [archamd64] https://download.docker.com/linux/ubuntu \$(lsb_release-cs)\ stablesudoapt-getupdatesudoapt-get--no-install-recommendsinstall-y\docker-ce docker-ce-cli containerd.io docker-compose-plugin2. 安装 CVAT2.1 从 Github clone CVAT 工程gitclone https://github.com/cvat-ai/cvatcdcvat2.2 局域网使用要想在局域网内使用 CVAT需 export CVAT_HOST 环境变量exportCVAT_HOSTFQDN_or_YOUR-IP-ADDRESS2.3 运行容器需要一些时间下载最新的 CVAT 和其它镜像文件dockercompose up-d2.4 创建管理员你可以使用默认方式注册用户但无法查看任务列表。因此你需要创建超级用户超级用户能使用管理员面板来分配任务给不同的用户创建命令如下dockerexec-itcvat_serverbash-icpython3 ~/manage.py createsuperuser然后根据提示依次输入用户名、邮箱和密码即可。2.5 浏览器默认为 Google Chrome访问地址是localhost:8080。输入登录用户名和密码进入页面然后就可以创建新的标注任务。使用说明可以参考Manual | CVAT3. 可能遇到的问题由于我们在中国境内可能遇到一些安装依赖的问题。其它安装问题可以参考Installation Guide | CVAT3.1 apt update可能需要修改源地址pre-compiled packagesdeb 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 multiversesource packagesdeb-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 multiverse3.2 Docker 镜像站在 daemon.json 中添加注册镜像{registry-mirrors:[http://f1361db2.m.daocloud.io,https://docker.mirrors.ustc.edu.cn,https://hub-mirror.c.163.com,https://mirror.ccs.tencentyun.com]}3.3 pippip configsetglobal.index-url https://pypi.tuna.tsinghua.edu.cn/simple4. 安装 SAM 半自动标注工具详细可以参考官网说明Semi-automatic and Automatic Annotation | CVAT4.1 运行 Docker 容器服务为了创建带自动标注工具的 CVAT在 CVAT 工程的根目录下运行dockercompose-fdocker-compose.yml-fcomponents/serverless/docker-compose.serverless.yml up-d备注如果对 Docker Compose 文件做了修改需要在上述命令后加上 --build。CPU 版本如果只配置 CPU 版本的 SAM 服务在serverless/pytorch/facebookresearch/sam/nuclio/function.yaml中需做如下修改配置 port该端口是 nuclio function 的端口需要和 SAM 算法服务 docker 容器的端口一致... triggers: myHttpTrigger: maxWorkers:2kind:httpworkerAvailabilityTimeoutMilliseconds:10000attributes: maxRequestBodySize:33554432# 32MBport:32728# 指定端口与其它端口不冲突即可GPU 版本如果配置 GPU 版本的 SAM 服务在 serverless/pytorch/facebookresearch/sam/nuclio/function-gpu.yaml 中需做上述修改配置 port该端口是 nuclio function 的端口需要和 SAM 算法服务 docker 容器的端口一致。4.2 停止 Docker 容器服务dockercompose-fdocker-compose.yml-fcomponents/serverless/docker-compose.serverless.yml down4.3 安装 nuctl你必须安装 nuctl 命令行工具来构建和部署 serverless functions。下载下载地址Release 1.11.24 · nuclio/nuclio · GitHub版本需要和 docker-compose.serverless.yaml 里的版本一致。wgethttps://github.com/nuclio/nuclio/releases/download/version/nuctl-version-linux-amd64安装下载完成后设置权限和软链接sudochmodx nuctl-version-linux-amd64sudoln-sf$(pwd)/nuctl-version-linux-amd64 /usr/local/bin/nuctl4.4 部署 serverless functions通过 nuctl 部署 serverless functions它会自动创建一个包含这些 functions 的 cvat Nuclio 项目。在 CVAT 使用 docker compose 安装完成后运行下述命令因为 nuclio dashboard 会管理所有的 serverless functionsCPU 服务./serverless/deploy_cpu.sh serverless/pytorch/facebookresearch/sam/nuclio或 GPU 服务maxWorkers 是 SAM 服务开启的进程数应和 GPU 资源匹配./serverless/deploy_gpu.sh serverless/pytorch/facebookresearch/sam/nuclio下面是里面的大致的命令形式nuctl deploy\--project-name cvat\--pathserverless/pytorch/facebookresearch/sam/nuclio\--platformlocal\--base-image ubuntu:22.04\--descgpu based implementation of sam on python3, pytorch\--imagecvat.pth.facebookresearch.sam.vit_h:latest\--triggers{myHttpTrigger: {maxWorkers: 4}}\--resource-limit nvidia.com/gpu1如果想固定容器服务的端口比如设置为 32728就使用下面的命令nuctl deploy\--project-name cvat\--pathserverless/pytorch/facebookresearch/sam/nuclio\--platformlocal\--base-image ubuntu:22.04\--descgpu based implementation of sam on python3, pytorch\--imagecvat.pth.facebookresearch.sam.vit_h:latest\--triggers{myHttpTrigger:{kind:http,maxWorkers:2,attributes:{port:32728}}}\--resource-limit nvidia.com/gpu14.5 拷贝 SAM 权重到容器内离线下载 SAM 权重文件然后注释掉 function.yaml 和 function-gpu.yaml 里下载权重的命令... download sam weights# - kind: RUN# value: curl -O https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth...手动将提前下载好的 SAM 权重文件拷贝到容器内dockercp./sam_vit_h_4b8939.pth 5b915cbc903e:/opt/nuclio/sam/4.6 TroubleshootingDocker 镜像下载及网络问题Docker images在服务器上提前下载好部署本项目所需的全部镜像无需再 docker pull。其它网络问题建议科学上网。8080 端口占用如果遇到 8080 端口不可用的情况则在 docker-compose.yml 下面修改traefik:image:traefik:v3.3container_name:traefikrestart:alwaysports:-8081:8080# 将 8080 修改为 8081-8090:8090SAM 容器的其它问题通过下述命令行发现问题然后进入 docker 容器内修改dockerlogs nuclio-nuclio-pth-facebookresearch-sam-vit-h进入容器dockerexec-itnuclio-nuclio-pth-facebookresearch-sam-vit-h /bin/bash完成修改后重启容器注意查看端口是否和 nuctl function node 端口一致dockerrestart nuclio-nuclio-pth-facebookresearch-sam-vit-h端口问题可以通过命令来查看 nuctl 服务节点的端口:nuctl getfunction打印信息如下NAMESPACE|NAME|PROJECT|STATE|REPLICAS|NODE PORT nuclio|pth-facebookresearch-sam-vit-h|cvat|ready|1/1|32728这里的32728应和 docker 容器的端口一致不然会报错。删除 serverless functions如果 nuctl 创建 function 时遇到任何问题需要删除该 function管理页面地址为http://$IP_ADDR:8070/projects/cvat/functionsIP_ADDR是部署该服务的 IP 地址如果部署在本地就是localhost。删除后就可以重新部署serverless functions。IP 问题如果在局域网内共享使用但是发现localhost:8080可以访问但是IP_ADDR:8080无法访问则需要在运行容器时做如下的修改CVAT_HOSTIP_ADDRdockercompose-fdocker-compose.yml-fcomponents/serverless/docker-compose.serverless.yml up-d