当前位置: 首页 > news >正文

CVAT标注服务

CVAT 是一个交互式的视频和图像标注工具,适用于计算机视觉,是一个典型的现代Web应用架构,可以实现大部分情况的标注工作,可以通过serveless

CVAT-github

cvat文档

下面将就其配置介绍一下几个服务:

1. 核心服务 (Core Services)

这是CVAT能运行起来的基础。

  • cvat_server

    • 镜像: cvat/server:v2.4.2
    • 作用: CVAT的“后台大脑”。这是一个基于Python/Django的应用程序,负责处理所有的核心业务逻辑,包括:用户管理、项目和任务的创建、权限验证、API接口等。您在界面上的所有操作,最终都会由它来处理。
  • cvat_ui

    • 镜像: cvat/ui-v2:2.4.2
    • 作用: CVAT的“前端店面”。这是一个Nginx Web服务器,负责向您的浏览器发送网页的静态文件(HTML, JavaScript, CSS)。您看到的所有按钮、图片和交互界面都由它提供。

2. 数据存储 (Data Storage)

负责存放CVAT的各种数据。

  • cvat_db

    • 镜像: postgres:15-alpine
    • 作用: 主数据库。这是一个PostgreSQL数据库,用于存储CVAT所有的核心数据,比如用户信息、项目配置、任务列表、标注数据等。这是最重要的数据中心。
  • cvat_redis

    • 镜像: redis:4.0-alpine
    • 作用: 内存数据库/缓存/消息队列。Redis速度极快,在这里主要有两个用途:
      1. 作为缓存,存储临时数据以加快cvat_server的响应速度。
      2. 作为消息代理,为下面的后台任务处理系统(Celery)传递任务消息。

3. 后台任务处理 (Background Task Processing)

处理耗时较长的任务,避免阻塞用户界面。

  • cvat_worker_import, cvat_worker_export, cvat_worker_annotation, cvat_worker_webhooks, cvat_utils
    • 镜像: cvat/server:v2.4.2
    • 作用: “任务处理工坊”。这些都是基于Celery框架的“工人”(Worker)。当您执行一些耗时操作时(例如:导入一个大型数据集、导出标注、运行自动标注),cvat_server会把这些任务打包成消息扔给Redis,这些“工人”容器就会从Redis中领取任务,在后台默默执行,执行完再把结果写回数据库。这保证了您在执行耗时操作时,网页不会卡死。

4. Serverless / AI模型 (Serverless / AI Models)

这是负责运行AI模型(如SAM)的独立系统。

  • nuclio

    • 镜像: quay.io/nuclio/dashboard:1.8.14-amd64
    • 作用: Nuclio的“总控制器”。这是Nuclio无服务器平台的控制面板和核心。它负责管理AI模型函数的部署、监控和调用,您通过:8070端口访问的就是它的管理界面。
  • nuclio-nuclio-pth.facebookresearch.sam.vit_h

    • 镜像: cvat.pth.facebookresearch.sam.vit_h:latest
    • 作用: SAM模型“执行者”。这才是真正运行SAM模型的容器。它接收来自CVAT的图片和点位数据,利用GPU进行AI推理计算,然后返回分割结果。
  • nuclio-local-storage-reader

    • 镜像: gcr.io/iguazio/nuclio
    • 作用: Nuclio平台的一个辅助服务,用于支持从本地存储读取数据。

5. 网络与访问控制 (Networking & Access Control)

  • traefik

    • 镜像: traefik:v2.9
    • 作用: 智能“总网关”/反向代理。所有外部对CVAT的访问请求(比如您访问sam.qianyi.ai:18080)首先到达这里。Traefik会根据请求的域名和路径,智能地将请求转发给内部正确的服务(比如cvat_uicvat_server)。
  • cvat_opa

    • 镜像: openpolicyagent/opa:0.45.0-rootless
    • 作用: “权限策略中心” (Open Policy Agent)。CVAT使用它来管理复杂的、细粒度的访问权限。比如定义“只有管理员和项目所有者才能删除任务”这类复杂的规则。

6. 监控与日志 (Monitoring & Logging)

  • cvat_clickhouse

    • 镜像: clickhouse/server:22.3-alpine
    • 作用: 日志和分析数据库。ClickHouse是一个性能极高的列式数据库,专门用于数据分析和日志存储。CVAT用它来收集和存储大量的操作日志和性能指标。
  • cvat_vector

    • 镜像: timberio/vector:0.26.0-alpine
    • 作用: 日志“快递员”。Vector负责从各个容器(如cvat_server)收集日志,然后将它们统一发送到cvat_clickhouse进行存储。
  • cvat_grafana

    • 镜像: grafana/grafana-oss:9.3.6
    • 作用: 数据“可视化仪表盘”。Grafana会连接到cvat_clickhouse数据库,以图表的形式美观地展示各种日志、系统性能和用户行为数据,方便您进行监控和分析。

总结

  • Traefik 作为统一入口。
  • cvat_uicvat_server 构成了前后端分离的核心应用。
  • PostgresRedis 提供数据存储和缓存。
  • Celery Workers(各种cvat_worker_*)处理异步的耗时任务。
  • OPA 提供精细的权限控制。
  • Nuclio 体系作为一个独立的微服务,专门用来运行和管理AI模型。
  • Vector + ClickHouse + Grafana 构成了一套完整的日志收集、存储和可视化监控系统。

问题记录:

  1. 怎么配置服务的IP,在docker-compose.yml文件同级路径下新建一个.env文件,在里面设置IP,如CVAT_HOST=192.168.33.5
  2. 配置serverless服务时前端始终无法显示,用不起来:

        需要先用docker-compose down停止服务,将docker-compose up -d 改成docker-compose -f docker-compose.yml -f docker-compose.serverless.yml up -d,这样会在运行的时候合并两个文件数据,cvat服务才能获取CVAT_SERVERLESS值为1,才会去检查模型的服务,最后显示和应用起来

http://www.lqws.cn/news/172297.html

相关文章:

  • Caliper 配置文件解析:config.yaml 和 fisco-bcos.json 附加在caliper中执行不同的合约方法
  • Ubuntu 基于sdl 音频学习的基础代码
  • 【MATLAB去噪算法】基于ICEEMDAN联合小波阈值去噪算法
  • 【SpringBoot自动化部署】
  • LangChainGo入门指南:Go语言实现与OpenAI/Qwen模型集成实战
  • Matlab实现任意伪彩色图像可视化显示
  • 6.6 day38
  • Web 架构之 CDN 加速原理与落地实践
  • LabVIEW实时系统数据监控与本地存储
  • 保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
  • 从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
  • 自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器
  • 双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
  • DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
  • DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
  • 全面理解 Linux 内核性能问题:分类、实战与调优策略
  • D3ctf-web-d3invitation单题wp
  • 数学建模期末速成 聚类分析与判别分析
  • 第16节 Node.js 文件系统
  • 传输层:udp与tcp协议
  • 前端基础之《Vue(19)—状态管理》
  • Node-RED 基于流程的可视化编程工具
  • $attrs 与 $listeners 透传
  • 【Python-Day 23】Python 模块化编程实战:创建、导入及 sys.path 深度解析
  • 嵌入式学习笔记 - FreeRTOS 信号量以及释放函数
  • vue中加载Cesium地图(天地图、高德地图)
  • Amazon Bedrock 助力 SolveX.AI 构建智能解题 Agent,打造头部教育科技应用
  • 火语言RPA--应用列表
  • CMake控制VS2022项目文件分组
  • Spring AI 入门:Java 开发者的生成式 AI 实践之路