在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南
1. 安装 Docker 和 Docker Compose
sudo apt-get update
sudo apt-get --no-install-recommends install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
sudo apt-get update
sudo apt-get --no-install-recommends install -y \docker-ce docker-ce-cli containerd.io docker-compose-plugin
2. 安装 CVAT
2.1 从 Github clone CVAT 工程
git clone https://github.com/cvat-ai/cvat
cd cvat
2.2 局域网使用
要想在局域网内使用 CVAT,需 export CVAT_HOST 环境变量,
export CVAT_HOST=FQDN_or_YOUR-IP-ADDRESS
2.3 运行容器
需要一些时间下载最新的 CVAT 和其它镜像文件,
docker compose up -d
2.4 创建管理员
你可以使用默认方式注册用户,但无法查看任务列表。因此,你需要创建超级用户,超级用户能使用管理员面板来分配任务给不同的用户,创建命令如下:
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
然后根据提示,依次输入用户名、邮箱和密码即可。
2.5 浏览器
默认为 Google Chrome,访问地址是localhost:8080。
输入登录用户名和密码进入页面,然后就可以创建新的标注任务。
使用说明可以参考:Manual | CVAT
3. 可能遇到的问题
由于我们在中国境内,可能遇到一些安装依赖的问题。
其它安装问题可以参考:Installation Guide | CVAT
3.1 apt update
可能需要修改源地址:
- pre-compiled packages
deb 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 multiverse
- source packages
deb-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 multiverse
3.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 pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
4. 安装 SAM 半自动标注工具
详细可以参考官网说明:Semi-automatic and Automatic Annotation | CVAT
4.1 运行 Docker 容器服务
为了创建带自动标注工具的 CVAT,在 CVAT 工程的根目录下,运行:
docker compose -f docker-compose.yml -f components/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: 'http'workerAvailabilityTimeoutMilliseconds: 10000attributes:maxRequestBodySize: 33554432 # 32MBport: 32728 # 指定端口,与其它端口不冲突即可
GPU 版本
如果配置 GPU 版本的 SAM 服务,在 serverless/pytorch/facebookresearch/sam/nuclio/function-gpu.yaml 中,需做上述修改,配置 port,该端口是 nuclio function 的端口,需要和 SAM 算法服务 docker 容器的端口一致。
4.2 停止 Docker 容器服务
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml down
4.3 安装 nuctl
你必须安装 nuctl 命令行工具来构建和部署 serverless functions。
下载
下载地址:Release 1.11.24 · nuclio/nuclio · GitHub
版本需要和 docker-compose.serverless.yaml 里的版本一致。
wget https://github.com/nuclio/nuclio/releases/download/<version>/nuctl-<version>-linux-amd64
安装
下载完成后,设置权限和软链接,
sudo chmod +x nuctl-<version>-linux-amd64
sudo ln -sf $(pwd)/nuctl-<version>-linux-amd64 /usr/local/bin/nuctl
4.4 部署 serverless functions
通过 nuctl 部署 serverless functions,它会自动创建一个包含这些 functions 的 cvat Nuclio 项目。在 CVAT 使用 docker compose 安装完成后运行下述命令,因为 nuclio dashboard 会管理所有的 serverless functions,
CPU 服务
./serverless/deploy_cpu.sh serverless/pytorch/facebookresearch/sam/nuclio
或 GPU 服务,maxWorkers 是 SAM 服务开启的进程数,应和 GPU 资源匹配
nuctl deploy --project-name cvat --path serverless/pytorch/facebookresearch/sam/nuclio --platform local --base-image ubuntu:22.04 --desc "gpu based implementation of sam on python3, pytorch" --image cvat.pth.facebookresearch.sam.vit_h:latest --triggers '{"myHttpTrigger": {"maxWorkers": 4}}' --resource-limit nvidia.com/gpu=1
4.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 权重文件拷贝到容器内,
docker cp ./sam_vit_h_4b8939.pth 5b915cbc903e:/opt/nuclio/sam/
4.6 Troubleshooting
Docker 镜像下载及网络问题
Docker images
在服务器上,提前下载好部署本项目所需的全部镜像,无需再 docker pull。
其它网络问题
建议科学上网。
SAM 容器的其它问题
通过下述命令行发现问题,然后进入 docker 容器内修改,
docker logs nuclio-nuclio-pth-facebookresearch-sam-vit-h
进入容器
docker exec -it nuclio-nuclio-pth-facebookresearch-sam-vit-h /bin/bash
完成修改后,重启容器,注意查看端口是否和 nuctl function node 端口一致
docker restart nuclio-nuclio-pth-facebookresearch-sam-vit-h
端口问题
可以通过命令来查看 nuctl 服务节点的端口:
nuctl get function
打印信息如下,
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/functions
IP_ADDR 是部署该服务的 IP 地址,如果部署在本地就是 localhost。
删除后,就可以重新部署 serverless functions。
相关文章:
在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南
1. 安装 Docker 和 Docker Compose sudo apt-get update sudo apt-get --no-install-recommends install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-ke…...
【SpringCloud】 微服务分布式环境下的事务问题,seata大合集
目录 微服务分布式环境下的事务问题 分布式事务 本地事务 BASE理论与强弱一致性 BASE理论 强弱一致性 常见分布式事务解决方案 - 2PC 常见分布式事务解决方案 - TCC 常见分布式事务解决方案 - 最大努力通知 常见分布式事务解决方案 - 最终一致性 Seata介绍与术语 Seata…...
vite5+vue3开发阅读APP实战笔记20240725
目前界面长成这样: 配置别名 修改vite.config.js import {defineConfig} from vite import vue from vitejs/plugin-vue import path from "path"// https://vitejs.dev/config/ export default defineConfig({server: {open: true,port: 8088,},plug…...
Intel任命Micron技术开发主管领导Intel Foundry制造运营
- **新闻要点**:Intel聘请了Micron的技术开发主管Dr. Naga Chandrasekaran担任首席全球运营官、执行副总裁以及Intel Foundry制造和供应链组织的总经理。他将负责Intel的所有制造运营事务。 #### 任命背景 - **领导团队**:Chandrasekaran将成为Intel执行…...
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 iOS 18 Beta 4:新功能与改进的探索 苹果公司在2024年7月9日向开发者推送了iOS 18的第四个开发者预览版Beta 4更新,内部…...
谷粒商城实战笔记-50-51-商品分类的删除
文章目录 一,50-商品服务-API-三级分类-删除-逻辑删除1,逻辑删除的配置1.1 配置全局的逻辑删除规则(可省略)1.2 配置逻辑删除Bean(可省略)1.3 Bean相应字段上加上注解TableLogic 2,后台接口开发…...
vue3+g2plot实现词云图
词云图 效果预览: 核心代码: import {WordCloud } from @antv/g2plot;fetch(https://gw.alipayobjects.com/os/antfincdn/jPKbal7r9r/mock.json).then((res) => res.json()).then((data) => {const wordCloud = new WordCloud(container, {data,wordField: x,weigh…...
Golang | Leetcode Golang题解之第273题整数转换英文表示
题目: 题解: var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…...
使用C#手搓Word插件
WordTools主要功能介绍 编码语言:C#【VSTO】 1、选择 1.1、表格 作用:全选文档中的表格; 1.2、表头 作用:全选文档所有表格的表头【第一行】; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…...
WordPress主题追格企业官网主题免费开源版V1.1.6
追格企业官网主题免费开源版由追格开发的一款开源wordpress主题,专为企业建站和追格企业官网小程序(开源版)PC配套而设计,功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。...
uniapp引入自定义图标
目录 一、选择图标,加入购物车 二、下载到本地 三、导入项目 四、修改字体引用路径 五、开始使用 这里以扩展iconfont图标为例 官网:iconfont-阿里巴巴矢量图标库 一、选择图标,加入购物车 二、下载到本地 直接点击下载素材࿰…...
pytorch-scheduler(调度器)
scheduler简介 scheduler(调度器)是一种用于调整优化算法中学习率的机制。学习率是控制模型参数更新幅度的关键超参数,而调度器根据预定的策略在训练过程中动态地调整学习率。 优化器负责根据损失函数的梯度更新模型的参数,而调度器则负责调整优化过程中使用的特定参数,通…...
防火墙与入侵检测系统(IDS/IPS)在现代网络安全中的关键角色
在数字化日益加速的今天,网络安全变得尤为重要。随着网络攻击的复杂性和频率不断增加,保护关键信息资产已成为各大小组织的首要任务。防火墙(Firewall)和入侵检测系统(Intrusion Detection System,IDS&…...
Python 之 os、open、json、pickle 模块的“疯狂”探险记
1.open函数的使用 Python 中的 open() 函数是处理文件的标准方法。它允许你打开一个文件,并对其进行读取、写入或追加操作 open(file,mode,encoding)函数的格式:file:文件路径 mode:打开方式(读: r写&…...
CTF-Web习题:2019强网杯 UPLOAD
题目链接:2019强网杯 UPLOAD 解题思路 打开靶场如下图所示,是一个注册和登录界面 那就注册登录一下,发现是一个提交头像的页面: 试了一下只有能正确显示的png图片才能提交成功,同时F12拿到cookie,base6…...
Unity环境渲染与反射探针的深入探索
目录 环境渲染基础 光源设置 材质与光照贴图 反射探针(Reflection Probes)详解 反射探针的创建与配置 材质中的反射探针设置 实践案例 实践案例:室内场景中的反射效果 场景设置 反射探针配置 Unity代码示例(非直接配置…...
vue3 父组件 props 异步传值,子组件接收不到或接收错误
1. 使用场景 我们在子组件中通常需要调用父组件的数据,此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了,在使用 props 进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据…...
[C++]TinyWebServer
TinyWebServer 文章目录 TinyWebServer1 主体框架2 Buffer2.1 向Buffer写入数据2.2 从Buffer读取数据2.3 动态扩容2.4 从socket中读取数据2.5 具体实现 3 日志系统3.1 生产者-消费者模型3.2 数据一致3.3 代码 4 定时器4.1 调整堆中元素操作4.2 堆的操作4.2.1 增4.2.2 删4.2.3 改…...
Uniswap价格批量查询与ws订阅行情
Uniswap价格批量查询与ws订阅行情 由于 Uniswap V1 版本必须包含 ETH 所以两个 token 之间交换必须先换成 ETH 去中转效率很低已经弃用了 由于 V3 版本 CLMM 和 V4 版本的 DLMM 数学模型过于复杂,还是先从 AMM 模型的 V2 进行入门和学习 Uniswap 三种合约 Unisw…...
vue 实战 区域内小组件元素拖拽 示例
<template><div><el-button type"primary" click"showDialog true">快捷布局</el-button><el-dialog title"快捷布局配置" :visible.sync"showDialog"><el-row :gutter"20"><el-co…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
