❤️ 如果你也关注 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技术,欢迎关注我哦!

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