❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 模型架构:ViTPose 采用标准的视觉 Transformer 作为骨干网络,通过简单的解码器实现人体关键点的精准定位。
- 功能特点:支持人体关键点定位、模型架构简单、可扩展性强、灵活性高,适用于多种姿态估计任务。
- 技术原理:基于视觉 Transformer 的特征提取和热图预测,模型知识可轻松迁移到小模型,提升实用性。
正文(附运行示例)
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 .
安装 timm
和 einops
:
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>
资源
- GitHub 仓库:https://github.com/ViTAE-Transformer/ViTPose
- arXiv 技术论文:https://arxiv.org/pdf/2204.12484
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦