sapiens推理的安装与使用

文章目录

  • 1、安装
    • 1.1 克隆代码库
    • 1.2 设置 Sapiens-Lite 的代码路径
    • 1.3 创建 Conda 环境并安装必要的依赖
    • 1.4 下载模型检查点
  • 2、推理

sapiens,是meta发布的以人为中心的视觉大模型,"sapiens"这个词来源于拉丁语,意为“智慧的”或“理智的”。在生物学分类中,"Homo sapiens"指的是现代人类,即智人。在您提供的上下文中,"sapiens"被用来指代一个以人为中心的视觉大模型,这里的翻译可以理解为“智能体”。主要有四个功能,分别是2D姿态估计、人体部位分割、深度估计和法线估计,效果请参看官方。这里主要是说时这个大模型的使用方法,因为在工作中经常用到需要对人进行标注的任务,比如人形检测或分割,之前用过segment anything(2),但感觉这个人形的大模型对人形效果更好。

1、安装

我们只安装lite版,对这个模型进行使用
根据您的需求和提供的路径 /home/tl/sapiens,以下是安装 Sapiens-Lite 的简要步骤:

1.1 克隆代码库

在终端运行以下命令:

git clone https://github.com/facebookresearch/sapiens.git
export SAPIENS_ROOT=/home/tl/sapiens

1.2 设置 Sapiens-Lite 的代码路径

设置环境变量 SAPIENS_LITE_ROOT 指向 lite 目录:

export SAPIENS_LITE_ROOT=$SAPIENS_ROOT/lite

1.3 创建 Conda 环境并安装必要的依赖

设置 minimal 环境,包含 PyTorch、CUDA、OpenCV 和其他基础依赖:

conda create -n sapiens_lite python=3.10
conda activate sapiens_lite
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
pip install opencv-python tqdm json-tricks

目前安装时,自动安装的版本是pytorch2.5.1,加了torch.compile,所以会有warnning,所以可以要安装再早点的版本可能要好点,比如那些是2。3,那些是2.4.
还有要使用pose,需要安装mmdetection.照这官方文档安装就行,运行时如果报错,那就报啥错改啥
如下:

pip install -U openmim
mim install mmengine
mim install "mmcv==2.1.0" # 官方是mim install "mmcv>=2.0.0",但安装2.2,使用报错
mim install mmdet

最后,使用报缺失jaraco

pip install jaraco.text

官方安装,但因为我是在conda中安装的,这种安装方法不适合将环境进行移植,移植后就不能用了:

export SAPIENS_ROOT=/path/to/sapiens
cd $SAPIENS_ROOT/engine; pip install -e .
cd $SAPIENS_ROOT/cv; pip install -e .
cd $SAPIENS_ROOT/det; pip install -e .

1.4 下载模型检查点

从 Hugging Face 下载需要的检查点文件,选择适合的模型模式(torchscriptbfloat16)并存储于指定的路径。例如,可以将 torchscript 模式的检查点放在以下结构中:

/home/tl/sapiens/sapiens_lite_host/
├── torchscript
│   ├── pretrain/
│   │   └── checkpoints/
│   │       ├── sapiens_0.3b/
│   │       ├── sapiens_0.6b/
│   │       ├── sapiens_1b/
│   │       └── sapiens_2b/
│   ├── pose/
│   ├── seg/
│   ├── depth/
│   └── normal/
└── bfloat16├── pretrain/├── pose/├── seg/├── depth/└── normal/

MODE 设置成torchscript:

export MODE=torchscript

SAPIENS_LITE_CHECKPOINT_ROOT 变量指向该目录:

export SAPIENS_LITE_CHECKPOINT_ROOT=/home/tl/sapiens/sapiens_lite_host/$MODE

https://huggingface.co/facebook/sapiens 这个是下载路径,如下图:
在这里插入图片描述

点击相应的链接就可以下载,如seg 1.0b:https://huggingface.co/facebook/sapiens-seg-1b-torchscript/tree/main
在这里插入图片描述

模型存放路径:

sapiens_lite_host/
├── torchscript├── pretrain/│   └── checkpoints/│       ├── sapiens_0.3b/│       ├── sapiens_0.6b/│       ├── sapiens_1b/│       └── sapiens_2b/├── pose/└── seg/└── depth/└── normal/
├── bfloat16├── pretrain/├── pose/└── seg/└── depth/└── normal/

在这里插入图片描述
我把sapiens_lite_host放到 /home/tl下。

2、推理

总的命令执行一遍

conda activate sapiens_lite
export SAPIENS_ROOT=/home/tl/sapiens
export MODE=torchscript
export SAPIENS_LITE_ROOT=$SAPIENS_ROOT/lite
export SAPIENS_LITE_CHECKPOINT_ROOT=/home/tl/sapiens/sapiens_lite_host/$MODE

分割推理:

cd   $SAPIENS_LITE_ROOT/scripts/demo/torchscript
./seg.sh

脚本中可配置定义输入和输出目录:

1、你需要指定一个输入目录(INPUT),这个目录包含了你想要进行人体部位分割的图像。你还需要指定一个输出目录(OUTPUT),用于存放分割结果。
2、结果可视化和存储:

分割模型的预测结果将以图像的形式展示,支持的格式为.jpg或.png。
除了图像,还会生成前景布尔掩码(foreground boolean masks)和分割概率(segmentation probabilities),这些数据将以.npy文件的形式存储在输出目录中。
这些.npy文件将用于后续的深度和表面法线可视化处理。
3、多GPU配置调整:

如果你使用的是多GPU配置,你需要调整BATCH_SIZE(批次大小)、JOBS_PER_GPU(每个GPU上的作业数)、TOTAL_GPUS(总GPU数)和VALID_GPU_IDS(有效GPU ID)这些参数,以优化性能。
速度优化:

为了提高速度,这段指南建议跳过在图像上显示类别标签的步骤。
简而言之,这段内容是指导用户如何设置和运行Sapiens-Lite人体部位分割模型,包括如何配置输入输出目录、结果的可视化和存储,以及如何针对多GPU环境进行性能优化。
在这里插入图片描述
在这里插入图片描述

这是分割的结果,同理,可以看pose的结果,我用的是最多关键点的模型:
配置方法参看:https://github.com/facebookresearch/sapiens/blob/main/lite/docs/POSE_README.md
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474031.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode-44-通配符匹配

题解: 代码: 参考: (1)牛客华为机试HJ71字符串通配符 (2)leetcode-10-正则表达式匹配

Linux守护Pythom脚本运行——Supervisor学习总结

Supervisor能做什么? 在工作中有时会遇到在Linux服务器上编写各种脚本来实现日志的推送、数据的传输、流量的监控等,这些脚本在整个系统运行中也需要和其他服务端应用程序一样持续且稳定运行,为了达到这种目的就需要使用进程守护工具来对正在…

C++ | Leetcode C++题解之第565题数组嵌套

题目&#xff1a; 题解&#xff1a; class Solution { public:int arrayNesting(vector<int> &nums) {int ans 0, n nums.size();for (int i 0; i < n; i) {int cnt 0;while (nums[i] < n) {int num nums[i];nums[i] n;i num;cnt;}ans max(ans, cnt);…

SpringBoot总结

一、Spring\SpringBoot\SpringCloud Spring&#xff1a;Spring是SpringBoot和SpringCloud的基础。Spring是一个广泛使用的企业级 Java 应用程序框架&#xff0c;提供了应用开发的核心功能&#xff0c;如依赖注入、AOP&#xff08;面向切面编程&#xff09; 等&#xff0c;旨在简…

Tailscale 自建 Derp 中转服务器

文章目录 为什么要建立 Derp 中转服务器&#xff1f;安装 Go 环境通过 Go 安装 Derp处理证书文件自签一个域名启动 DerpIPV6 的支持防止 Derp 被白嫖以上的操作命令合集自建 Headscale 添加 Derp参考 为什么要建立 Derp 中转服务器&#xff1f; Tailscale 使用的算法很有趣: 所…

vue实现展示并下载后端返回的图片流

// 点击下载 downLoadCode() {const image new Image();image.setAttribute("crossOrigin", "anonymous");image.onload () > {const canvas document.createElement("canvas");canvas.width image.width;canvas.height image.height;c…

Docker: ubuntu系统下Docker的安装

安装依赖 操作系统版本 Ubuntu Kinetic 22.10Ubuntu Jammy 24.04 (LTS)Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS) CPU架构支持 ARMx86_64 查看我们的系统版本信息 uname -a通过该命令查得cpu架构是x86_64的&#xff1b; cat /etc/*re…

极速入门数模电路

一. 认识数模元器件 1.1 面包板 1.2 导线 一般使用红色导线表示正极&#xff0c;黑色导线表示负极。 1.3 纽扣电池 1.4 电池座 1.4 LED灯 1.5 数码管 1.6 有源蜂鸣器 1.7 扬声器 1.8 电容 电容接电池之后可以充电&#xff0c;充完电后电容接LED灯可以放电。 1.9 电阻 1.1…

如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案

文章目录 一、模块化设计所遵循的原则二、项目架构设计三、各个模块作用说明3.1 core 模块3.2 common 模块3.3 generatorcode模块3.4 business 模块3.5 web 模块3.6 admin 模块3.7 父pom 四、采用import引入SpringBoot 在springcloud微服务项目中经常用到多模块化的架构设计&am…

java版询价采购系统 招投标询价竞标投标系统 招投标公告系统源码

在信息化飞速发展的今天&#xff0c;电子招投标采购系统已成为企业运营中的重要一环。这一系统不仅优化了传统的招投标流程&#xff0c;还为企业带来了诸多显著的价值。 首先&#xff0c;电子招投标采购系统极大地提高了工作效率。传统招投标过程中&#xff0c;企业需要耗费大…

物联网——UNIX时间戳、BKP备份寄存器、RTC时钟

RTC时钟 Unix时间戳 UTC/GMT 时间戳转换 时间戳转换 BKP简介 RTC框图 RTC基本结构 硬件供电电路 RTC操作注意事项 接线图&#xff08;读写备份寄存器和实时时钟&#xff09;

系统思考—跳出症状看全局

在和企业创办人交流中&#xff0c;经常听到这样的疑问&#xff1a;“为什么我们试了这么多办法&#xff0c;问题却还是没有解决&#xff1f;”其实很多时候&#xff0c;根本原因并不在于对策不到位&#xff0c;而是连问题的本质都没找对。 曾经和一家企业合作&#xff0c;为了解…

RK3568平台开发系列讲解(platform虚拟总线驱动篇)实验:点亮一个LED

🚀返回专栏总目录 文章目录 一、设备树二、平台驱动三、应用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢xxx 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的属性,编写测试应用程序。 • 首先向设备树添加 LED 设备节点…

【售前方案】工业园区整体解决方案,智慧园区方案,智慧城市方案,智慧各类信息化方案(ppt原件)

基于云计算、物联网、移动通信计算的智慧园区集中运营管理平台是一个高度集成化、智能化的管理系统&#xff0c;它利用先进的技术手段对园区进行全方位的监控和管理。 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审…

Nacos 配置中心变更利器:自定义标签灰度

作者&#xff1a;柳遵飞 配置中心被广泛使用 配置中心是 Nacos 的核心功能之一&#xff0c;接入配置中心&#xff0c;可以实现不重启线上应用的情况下动态改变程序的运行期行为&#xff0c;在整个软件生命周期中&#xff0c;可以极大降低了软件构建及部署的成本&#xff0c;提…

两大新兴开发语言大比拼:Move PK Rust

了解 Move 和 Rust 的差异有助于开发者根据项目的具体需求选择最合适的语言。选择不恰当的语言可能会导致项目后期出现技术债务。不同语言有其独特的优势。了解 Move 和 Rust 的差异可以帮助开发者拓展技术视野&#xff0c;发现不同语言在不同领域的应用潜力。 咱们直奔主题&a…

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法 目录 文章目录 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法目录摘要&#xff1a;研究背景&#xff1a;问题与挑战&#xff1a;如何解…

面试题:Kafka(一)

1. Kafka如何保证消息不丢失 生产者发送消息到Brocker丢失 设置异步发送 消息重试 消息在Brocker中存储丢失 发送确认机制acks 消费者从Brocker接收消息丢失 Kafka 中的分区机制指的是将每个主题划分成多个分区&#xff08;Partition&#xff09;topic分区中消息只能由消费者…

基于多模板配准的心腔分割算法

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月18日20点09分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

ScubaGear:用于评估 Microsoft 365 配置是否存在安全漏洞的开源工具

ScubaGear 是由网络安全和基础设施安全局 (CISA) 创建的开源工具&#xff0c;用于自动评估 Microsoft 365 (M365) 配置中是否存在潜在的安全漏洞。 ScubaGear 分析组织的 M365 租户配置&#xff0c;提供可操作的见解和建议&#xff0c;以帮助管理员解决安全漏洞并加强 Microso…