CVAT工具简介

CVAT(Computer Vision Annotation Tool) 是一款开源的、基于网页的标注工具,由 Intel 开发。它支持图像和视频的 检测(框)、分割(语义/实例)、分类、跟踪 等多种标注任务。CVAT 提供了直观的浏览器界面、快捷键操作和团队协作功能,还能接入 AI 辅助标注工具(如 SAM、YOLO、GroundingDINO) 来提升效率。它既可以在云端使用(CVAT Cloud),也能本地部署,适合个人和团队快速制作计算机视觉数据集。

AI工具SAM2辅助标注

AI工具的使用官方教程https://docs.cvat.ai/docs/manual/advanced/ai-tools/

标注过程使用AI工具SAM2辅助自动生成掩膜

  1. 创建project之后创建job
    在这里插入图片描述
  2. 点击左边的魔法棒工具选择使用AI工具模型,根据任务分别对应分割,目标检测,目标跟踪三种类型的模型,开启掩膜转换多边形

在这里插入图片描述
3. 开启AI模型如SAM2之后左键点击即可自动生成掩膜
在这里插入图片描述
4… 如果想要多个掩膜连接在一起或者对于单个掩膜的区域边界不满意,可以继续左键点击附近的区域使其向量,继续点击没有掩膜的区域使其向这个方向延伸,如右上角是连续点击使得建筑掩膜相连
在这里插入图片描述
5. 上方可以选择点的多少,左上角可以选择取消,保存。全标注完成后点集menu,导出标注,标注可以根据需求选择多种格式,如labelme格式,yolo格式,cityscapes格式等等

标注结果叠加

仅为测试效果,只标住了道路,建筑,河流三种类型,可以看到全程没有人为参与和调整但是标注的细节非常出色,建筑区域没有包含多余物体,人行道的道路上也尽量不包含树木和车辆,河流的边界也没有包含植被
在这里插入图片描述

收费标准

由于免费用户的使用AI工具的次数是有限的,付费用户Solo或者公司团队Team可以使用更多次数,团队协作以及接入更多HuggingFace和Robotflow上的模型,Solo付费为33美元一个月使用10000次AI工具,Team付费为66美元一个月30000次使用工具
在这里插入图片描述

本地部署

本地部署和接入自定义模型嗯的AI Agent可以无限制次数的使用AI工具,但是需要使用本地的GPU算力,并且部署过程比较麻烦

https://docs.cvat.ai/docs/administration/basics/installation/?utm_source=chatgpt.com

本地部署的官方教程

部署CVAT

# 1) 安装 Docker 与 docker compose(已装可跳过)

# 2) 拉取并启动 CVAT
git clone https://github.com/cvat-ai/cvat
cd cvat
docker compose up -d

# 3) 创建管理员账号(按提示设置邮箱与密码)
docker exec -it cvat_server bash -lc 'python3 ~/manage.py createsuperuser'

在docker compose up -d的时候遇到两个问题

第一个是docker compose的版本必须是V2,本地的旧V1版本不能够使用,因为CVAT是参照新版本V2语法写的,需要升级
在这里插入图片描述
第二个是docker compose up -d因为访问docker hub网络错误因此不能顺利拉取、
在这里插入图片描述

参照CSDN上CVAT本地化部署的docker拉取失败的处理方法添加了镜像之后可以正确拉取、
在这里插入图片描述
设置帐号密码
在这里插入图片描述
随后打开谷歌浏览器(注意CVAT仅支持谷歌浏览器,官方文档特地说明是唯一支持使用的浏览器)

localhost:8080

在谷歌浏览器中打开即可正常访问
在这里插入图片描述
【问题1】docker拉取成功之后网页端打开报错,docker运行之后,前端不能正常显示
在这里插入图片描述
后端正常访问是可以正确返回的
在这里插入图片描述
查询日志:
在这里插入图片描述
主要是因为docker所在路径默认是系统盘。存储空间占用高于90%,因此不能正确运行,(启用pg数据库,redis等占用可能较大)

因此将docker的存储从系统盘转移到2T的固态中,解决存储空间问题,之后可以正确访问

配置AI Agent使用SAM进行辅助标注

官方文档https://docs.cvat.ai/docs/manual/advanced/serverless-tutorial/?utm_source=chatgpt.com

  • 在 CVAT 里,AI 模型是通过 Nuclio 作为“无服务器函数(serverless)”来部署和调用的;SAM1 官方已提供现成函数,直接部署即可。
  • 部署完成后,你能在 CVAT 的 Models 页面看到模型,并在标注界面用 半自动/自动 工具调用它。

根据分割,目标检测,目标跟踪官方提供三个示例适配的模型

分割模型是SAM 目标监测是Yolo-v3 目标跟踪是SiamMask 这三个模型是封装打包好根据官方提示可以快速使用

本地支持使用自定义的DL模型(如SAM2等任何你认为效果更好的模型!),但是需要自己手写配置和封装以及注册流程才可以使用,尽管官方也做出了详细的说明教程(比较麻烦和困难)目前SAM2以及Yolo-8等模型仅支持CVAT Online 与 Enterprise使用(要付费!!!)

因此先使用SAM一代版本测试效果

  1. 启动带 Nuclio 的 CVAT 组合

把CVAT和nuclio一起启动

docker compose \
  -f docker-compose.yml \
  -f components/serverless/docker-compose.serverless.yml \
  up -d

等待nuclio拉取完成
在这里插入图片描述
安装 Nuclio CLI(nuctl)
版本不一样可能需要修改,保证版本匹配

# 1) 下载对应版本的 nuctl
wget https://github.com/nuclio/nuclio/releases/download/1.13.0/nuctl-1.13.0-linux-amd64 -O nuctl

# 2) 添加可执行权限
chmod +x nuctl

# 3) 移动到系统路径
sudo mv nuctl /usr/local/bin/

# 4) 验证版本
nuctl version

  1. 部署SAM函数
cd ~/dataDisksda1/Ricardo/project/CVAT/cvat/serverless

# 如果有 GPU
./deploy_gpu.sh pytorch/facebookresearch/sam/nuclio/

# 如果只用 CPU
# ./deploy_cpu.sh pytorch/facebookresearch/sam/nuclio/

部署的时候,Nuclio拉取辅助镜像失败,原因是从gcr.io谷歌仓库里进行拉取镜像,之前配置的中国国内镜像可以拉CVAT和Nuclio是加速Docker Hub的对于谷歌仓库的镜像没有起作用
替代方案:从Docker Hub中拉取alpine:3.17然后打上gcr.io/iguazio/alpine:3.17的tag,这样检测到本地有就不会去拉取
正常的在配置中
在这里插入图片描述
报错是因为pip3下载对应的pytorch实在太慢,由于网络问题实在是很难下载,因此超时
解决方案是修改function-gpu.yaml,让其下载的时候使用国内镜像源加速,内容修改成如下

metadata:
  name: pth-facebookresearch-sam-vit-h
  namespace: cvat
  annotations:
    name: Segment Anything
    version: 2
    type: interactor
    spec:
    min_pos_points: 0
    min_neg_points: 0
    startswith_box_optional: true
    animated_gif: https://raw.githubusercontent.com/cvat-ai/cvat/develop/site/content/en/images/hrnet_example.gif
    help_message: The interactor allows to get a mask of an object using at least one positive, and any negative points inside it

spec:
  description: Interactive object segmentation with Segment-Anything
  runtime: python
  handler: main:handler
  eventTimeout: 30s

  env:
    - name: PYTHONPATH
      value: /opt/nuclio/sam
    - name: NVIDIA_VISIBLE_DEVICES
      value: all
    - name: NVIDIA_DRIVER_CAPABILITIES
      value: compute,utility

  build:
    image: cvat.pth.facebookresearch.sam.vit_h:latest-gpu
    baseImage: nvidia/cuda:12.1.1-runtime-ubuntu22.04

    # 注意:这里每一条都是“纯命令”,不要写 RUN 前缀
    commands:
      - export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get -y install --no-install-recommends ca-certificates curl git python3 python3-pip python3-dev build-essential ffmpeg libsm6 libxext6 && rm -rf /var/lib/apt/lists/*
      - python3 -m pip install --upgrade pip
      # 可选:国内镜像;失败不致命
      - pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple || true
      - pip3 config set install.trusted-host pypi.tuna.tsinghua.edu.cn || true
      - pip3 config set global.timeout 180 || true
      # PyTorch(CUDA 12.1)
      - pip3 install --no-cache-dir --retries 5 --timeout 180 torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
      # 其他依赖
      - pip3 install --no-cache-dir --retries 5 --timeout 180 pycocotools matplotlib onnx onnxruntime
      # SAM 源码
      - pip3 install --no-cache-dir --retries 5 --timeout 180 git+https://github.com/facebookresearch/segment-anything.git
      # 权重下载到目标目录(用 mkdir+cd 代替 WORKDIR 指令)
      - mkdir -p /opt/nuclio/sam && cd /opt/nuclio/sam && curl -L -o sam_vit_h_4b8939.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
      # 常用软链接
      - ln -sf /usr/bin/python3 /usr/bin/python && ln -sf /usr/bin/pip3 /usr/local/bin/pip

  readinessTimeoutSeconds: 1800

  triggers:
    myHttpTrigger:
      kind: http
      numWorkers: 1
      workerAvailabilityTimeoutMilliseconds: 10000
      attributes:
        maxRequestBodySize: 33554432  # 32MB

  resources:
    limits:
      nvidia.com/gpu: 1
    requests:
      cpu: "2"
      memory: 4Gi

  platform:
    attributes:
      restartPolicy:
        name: always
        maximumRetryCount: 3
      mountMode: volume

这一步骤基本上完成,部分用户可能遇到这个问题
镜像完整构建好了但是运行的时候失败了
在这里插入图片描述
原因是docker没找到GPU

因为没有安装对应的使用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 -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list \
     | sed 's#deb https://#deb [arch=amd64 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 --runtime=docker
sudo systemctl restart docker
docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi

在这里插入图片描述

./serverless/deploy_gpu.sh serverless/pytorch/facebookresearch/sam/

部署成功!!!
具体使用sam提取物体掩膜的方式如前文所述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐