ViTPose:最小只有100M的身体姿态估计模型,精确识别人体关节、手、脚等关键点

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: ViTPose 是基于 Transformer 架构的人体姿态估计模型,能够精准定位人体关键点,支持多种规模版本,适用于运动分析、虚拟现实等场景。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 模型架构:ViTPose 采用标准的视觉 Transformer 作为骨干网络,通过简单的解码器实现人体关键点的精准定位。
  2. 功能特点:支持人体关键点定位、模型架构简单、可扩展性强、灵活性高,适用于多种姿态估计任务。
  3. 技术原理:基于视觉 Transformer 的特征提取和热图预测,模型知识可轻松迁移到小模型,提升实用性。

正文(附运行示例)

ViTPose 是什么

ViTPose

ViTPose 是基于 Transformer 架构的人体姿态估计模型。它使用标准的视觉 Transformer 作为骨干网络,通过将输入图像切块并送入 Transformer block 来提取特征,再通过解码器将特征解码为热图,实现对人体关键点的精准定位。

ViTPose 系列模型具有多种规模版本,如 ViTPose-B、ViTPose-L、ViTPose-H 等,可根据不同需求选择。在 MS COCO 等数据集上表现出色,展现了简单视觉 Transformer 在姿态估计任务上的强大潜力。此外,ViTPose+ 作为改进版本,拓展到多种身体姿态估计任务,涵盖动物、人体等不同类型关键点,进一步提升了性能和适用范围。

ViTPose 的主要功能

  • 人体关键点定位:能识别图像中人体的关键点,如关节、手、脚等,广泛应用于运动分析、虚拟现实、人机交互等领域。
  • 模型架构简单:采用普通的视觉 Transformer 作为骨干网络进行特征提取,再通过简单的解码器将特征解码为热图,实现关键点的精准定位。其模型结构简单,易于实现和扩展。
  • 可扩展性强:可以通过调整 Transformer 的层数、头数等超参数,将模型从 100M 扩展到 1B 参数,适应不同规模的任务需求,同时保持高性能。
  • 灵活性高:在训练范式上具有灵活性,支持不同的预训练和微调策略,以及多种输入分辨率和注意力类型,能处理多种姿态估计任务。
  • 知识可迁移:大模型的知识可以通过简单的知识令牌轻松迁移到小模型,进一步提升了模型的实用性和灵活性。

ViTPose 的技术原理

  • 视觉 Transformer:ViTPose 使用标准的、非分层的视觉 Transformer 作为骨干网络进行特征提取。输入图像首先被切分成多个小块(patches),每个小块被嵌入到一个高维空间中,形成 tokens。这些 tokens 然后通过多个 Transformer 层进行处理,每一层包含多头自注意力(Multi-head Self-Attention, MHSA)和前馈网络(Feed-Forward Network, FFN)。
  • 特征提取:经过 Transformer 层的处理,最终输出的特征图具有丰富的语义信息,能够捕捉到图像中人体的关键点特征。
  • 热图预测:ViTPose 的解码器将编码器输出的特征图解码为热图。热图中的每个像素值表示该位置是某个关键点的概率。解码器有两种选择:
    • 标准解码器:使用转置卷积(transposed convolution)进行上采样,然后通过预测层生成热图。
    • 简单解码器:直接使用双线性插值进行上采样,生成热图。
  • 模型迁移:ViTPose 的知识可以通过简单的知识令牌(knowledge token)轻松迁移到小模型,进一步提升了模型的实用性和灵活性。
  • SOTA 性能:ViTPose 在多个姿态估计数据集上达到了新的 SOTA(State of the Art)和帕累托前沿。

如何运行 ViTPose

1. 环境配置

首先,克隆并安装所需的依赖库:

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
git checkout v1.3.9
MMCV_WITH_OPS=1 pip install -e .
cd ..
git clone https://github.com/ViTAE-Transformer/ViTPose.git
cd ViTPose
pip install -v -e .

安装 timmeinops

pip install timm==0.4.9 einops

2. 训练模型

下载预训练模型后,运行以下命令进行训练:

# 单机训练
bash tools/dist_train.sh <Config PATH> <NUM GPUs> --cfg-options model.pretrained=<Pretrained PATH> --seed 0

# 多机训练
python -m torch.distributed.launch --nnodes <Num Machines> --node_rank <Rank of Machine> --nproc_per_node <GPUs Per Machine> --master_addr <Master Addr> --master_port <Master Port> tools/train.py <Config PATH> --cfg-options model.pretrained=<Pretrained PATH> --launcher pytorch --seed 0

3. 测试模型

测试预训练模型的性能:

bash tools/dist_test.sh <Config PATH> <Checkpoint PATH> <NUM GPUs>

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
8月前
|
机器学习/深度学习 传感器 人机交互
3D人体姿态估计(教程+代码)
3D人体姿态估计(教程+代码)
|
8月前
|
计算机视觉 Python
Yolov5双目测距-双目相机计数及测距教程(附代码)
Yolov5双目测距-双目相机计数及测距教程(附代码)
|
机器学习/深度学习 传感器 算法
用于准确量化颅面对称性和面部生长的 3D 头影测量方案(Matlab代码实现)
用于准确量化颅面对称性和面部生长的 3D 头影测量方案(Matlab代码实现)
|
7月前
|
传感器 算法
技术心得记录:四元数及姿态解算Mahony算法
技术心得记录:四元数及姿态解算Mahony算法
537 0
|
机器学习/深度学习 传感器 算法
使用显著性检测的可见光和红外图像的两尺度图像融合(Matlab代码实现)
使用显著性检测的可见光和红外图像的两尺度图像融合(Matlab代码实现)
|
8月前
|
机器学习/深度学习 算法 前端开发
高速公路表面图像裂缝检测程序
高速公路表面图像裂缝检测程序
108 2
|
传感器 机器学习/深度学习 算法
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
|
自动驾驶 算法 Python
车道线识别(附代码)
车道线识别(附代码)
车道线识别(附代码)
|
传感器 算法 数据可视化
使用三种不同的照明算法估计场景的照明和执行白平衡
使用三种不同的照明算法估计场景的照明和执行白平衡。 眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。
202 0
|
机器学习/深度学习 传感器 安全
【目标检测】基于背景差分实现运动车辆检测附Matlab代码
【目标检测】基于背景差分实现运动车辆检测附Matlab代码

热门文章

最新文章