模型简介
模型特点
模型能力
使用案例
🚀 ViTPose模型 - 人体姿态估计的视觉Transformer基线
ViTPose是用于人体姿态估计的简单视觉Transformer基线模型,ViTPose+则是用于通用人体姿态估计的视觉Transformer基础模型。该模型在MS COCO关键点测试开发集上取得了81.1 AP的成绩,在姿态估计任务中表现出色。
🚀 快速开始
使用以下代码开始使用该模型:
import numpy as np
import requests
import torch
from PIL import Image
from transformers import (
RTDetrForObjectDetection,
RTDetrImageProcessor,
VitPoseConfig,
VitPoseForPoseEstimation,
VitPoseImageProcessor,
)
url = "http://images.cocodataset.org/val2017/000000000139.jpg"
image = Image.open(requests.get(url, stream=True).raw)
# 阶段1. 运行目标检测器(用户可以替换此目标检测器部分)
person_image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")
person_model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")
inputs = person_image_processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = person_model(**inputs)
results = person_image_processor.post_process_object_detection(
outputs, target_sizes=torch.tensor([(image.height, image.width)]), threshold=0.3
)
def pascal_voc_to_coco(bboxes: np.ndarray) -> np.ndarray:
"""
将边界框从Pascal VOC格式转换为COCO格式。
即将 (top_left_x, top_left_y, bottom_right_x, bottom_right_y) 格式转换为 (top_left_x, top_left_y, width, height) 格式。
参数:
bboxes (`np.ndarray` 形状为 `(batch_size, 4)):
Pascal VOC格式的边界框。
返回:
`np.ndarray` 形状为 `(batch_size, 4) 的COCO格式边界框。
"""
bboxes[:, 2] = bboxes[:, 2] - bboxes[:, 0]
bboxes[:, 3] = bboxes[:, 3] - bboxes[:, 1]
return bboxes
# 人体标签在COCO数据集中对应索引0
boxes = results[0]["boxes"][results[0]["labels"] == 0]
boxes = [pascal_voc_to_coco(boxes.cpu().numpy())]
# 阶段2. 运行ViTPose
config = VitPoseConfig()
image_processor = VitPoseImageProcessor.from_pretrained("nielsr/vitpose-base-simple")
model = VitPoseForPoseEstimation.from_pretrained("nielsr/vitpose-base-simple")
pixel_values = image_processor(image, boxes=boxes, return_tensors="pt").pixel_values
with torch.no_grad():
outputs = model(pixel_values)
pose_results = image_processor.post_process_pose_estimation(outputs, boxes=boxes)[0]
for pose_result in pose_results:
print(pose_result)
✨ 主要特性
- 性能卓越:在具有挑战性的MS COCO关键点检测基准上,基本的ViTPose模型优于代表性方法,最大的模型在MS COCO测试开发集上达到了80.9 AP的新的最先进水平。
- 结构简单:采用简单且非分层的视觉Transformer作为骨干网络来提取给定人物实例的特征,并使用轻量级解码器进行姿态估计。
- 可扩展性强:利用Transformer可扩展的模型容量和高并行性,模型参数可以从1亿扩展到10亿,在吞吐量和性能之间达到了新的帕累托前沿。
- 灵活性高:在注意力类型、输入分辨率、预训练和微调策略以及处理多个姿态任务方面都非常灵活。
- 知识可迁移:通过简单的知识令牌,大型ViTPose模型的知识可以轻松迁移到小型模型。
📚 详细文档
模型详情
尽管在设计中没有考虑特定的领域知识,但普通的视觉Transformer在视觉识别任务中表现出了出色的性能。然而,在揭示这种简单结构在姿态估计任务中的潜力方面所做的工作很少。在本文中,通过一个名为ViTPose的简单基线模型,从各个方面展示了普通视觉Transformer在姿态估计方面令人惊讶的出色能力,即模型结构的简单性、模型大小的可扩展性、训练范式的灵活性以及模型之间知识的可迁移性。具体来说,ViTPose采用普通且非分层的视觉Transformer作为骨干网络来提取给定人物实例的特征,并使用轻量级解码器进行姿态估计。它可以利用Transformer可扩展的模型容量和高并行性,将参数从1亿扩展到10亿,在吞吐量和性能之间达到了新的帕累托前沿。此外,ViTPose在注意力类型、输入分辨率、预训练和微调策略以及处理多个姿态任务方面都非常灵活。通过实验还证明了大型ViTPose模型的知识可以通过简单的知识令牌轻松迁移到小型模型。实验结果表明,基本的ViTPose模型在具有挑战性的MS COCO关键点检测基准上优于代表性方法,而最大的模型在MS COCO测试开发集上达到了新的最先进水平,即80.9 AP。代码和模型可在https://github.com/ViTAE-Transformer/ViTPose获取。
模型描述
这是一个已推送到Hugging Face Hub的🤗 transformers模型的模型卡片。此模型卡片是自动生成的。
- 开发者:Sangbum Choi和Niels Rogge
- 资助方(可选):ARC FL - 170100117和IH - 180100002
- 许可证:apache - 2.0
- 微调自的模型(可选):[需要更多信息]
模型来源(可选)
- 仓库:https://github.com/ViTAE-Transformer/ViTPose
- 论文(可选):https://arxiv.org/pdf/2204.12484
- 演示(可选):https://huggingface.co/spaces?sort=trending&search=vitpose
应用场景
- 人体姿态估计:该模型可用于估计图像或视频中人体的姿态,包括识别头部、肩部、肘部、手腕、臀部、膝盖和脚踝等关键身体关节的位置。
- 动作识别:通过分析一段时间内的姿态,该模型可以帮助识别各种人类动作和活动。
- 监控:在安全和监控应用中,ViTPose可用于监控和分析公共场所或私人场所中的人类行为。
- 健康与健身:该模型可用于健身应用程序,以跟踪和分析运动姿势,提供关于姿势和技巧的反馈。
- 游戏和动画:ViTPose可以集成到游戏和动画系统中,以创建更逼真的角色动作和交互。
偏差、风险和局限性
在本文中,提出了一个简单而有效的用于姿态估计的视觉Transformer基线模型,即ViTPose。尽管在结构上没有精心设计,但ViTPose在MS COCO数据集上取得了最先进的性能。然而,ViTPose的潜力尚未通过更先进的技术(如复杂的解码器或FPN结构)得到充分挖掘,这些技术可能会进一步提高性能。此外,尽管ViTPose展示了诸如简单性、可扩展性、灵活性和可迁移性等令人兴奋的特性,但还可以进行更多的研究工作,例如探索基于提示的微调,以进一步展示ViTPose的灵活性。此外,相信ViTPose也可以应用于其他姿态估计数据集,例如动物姿态估计[47, 9, 45]和面部关键点检测[21, 6]。将这些作为未来的工作。
🔧 技术细节
训练详情
训练数据
使用MS COCO [28]、AI Challenger [41]、MPII [3]和CrowdPose [22]数据集进行训练和评估。OCHuman [54]数据集仅参与评估阶段,以衡量模型在处理遮挡人物时的性能。
- MS COCO数据集:包含118K张图像和150K个人体实例,每个实例最多有17个关键点注释,用于训练。该数据集遵循CC - BY - 4.0许可证。
- MPII数据集:遵循BSD许可证,包含15K张图像和22K个人体实例,用于训练。该数据集中每个实例最多注释16个人体关键点。
- AI Challenger数据集:规模更大,包含超过200K张训练图像和350个人体实例,每个实例最多注释14个关键点。
- OCHuman数据集:包含有严重遮挡的人体实例,仅用于验证集和测试集,包括4K张图像和8K个实例。
训练超参数
- 训练机制:
速度、大小、时间(可选)
评估
OCHuman验证集和测试集
为了评估人体姿态估计模型在严重遮挡人体实例上的性能,在OCHuman验证集和测试集上使用真实边界框测试ViTPose变体和代表性模型。由于OCHuman数据集中并非所有人体实例都有注释,采用额外的人体检测器会导致大量“误报”边界框,无法反映姿态估计模型的真实能力,因此不采用额外的人体检测器。具体来说,使用对应于MS COCO数据集的ViTPose解码器头,因为MS COCO和OCHuman数据集中的关键点定义相同。
MPII验证集
在MPII验证集上使用真实边界框评估ViTPose和代表性模型的性能。遵循MPII的默认设置,使用PCKh作为性能评估指标。
结果
模型架构和目标
硬件
模型基于mmpose代码库[11]在8个A100 GPU上进行训练。
📄 许可证
本模型使用的许可证为apache - 2.0。
📄 引用(可选)
BibTeX:
@misc{xu2022vitposesimplevisiontransformer,
title={ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation},
author={Yufei Xu and Jing Zhang and Qiming Zhang and Dacheng Tao},
year={2022},
eprint={2204.12484},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2204.12484},
}









