library_name: transformers
license: apache-2.0
language:
- en
pipeline_tag: keypoint-detection
模型ID说明卡

ViTPose:用于人体姿态估计的简易视觉Transformer基线模型,以及ViTPose+:通用人体姿态估计的视觉Transformer基础模型。该模型在MS COCO关键点测试开发集上取得了81.1 AP的优异表现。
模型详情
尽管在设计时未考虑特定领域知识,但普通视觉Transformer已在视觉识别任务中展现出卓越性能。然而,这类简单结构在姿态估计任务中的潜力尚未得到充分挖掘。本文通过名为ViTPose的基线模型,从模型结构简洁性、规模可扩展性、训练范式灵活性以及模型间知识可迁移性等多个维度,展示了普通视觉Transformer在姿态估计任务中的惊人潜力。具体而言,ViTPose采用非层级化的普通视觉Transformer作为骨干网络提取人体实例特征,并配备轻量级解码器进行姿态估计。得益于Transformer的可扩展模型容量与高并行性优势,其参数量可从1亿扩展至10亿,在吞吐量与性能之间建立了新的帕累托前沿。此外,ViTPose在注意力类型、输入分辨率、预训练与微调策略以及多姿态任务处理方面具有高度灵活性。我们通过实验证明,大型ViTPose模型的知识可通过简单的知识令牌轻松迁移至小型模型。实验结果显示,我们的基础ViTPose模型在极具挑战性的MS COCO关键点检测基准测试中超越代表性方法,而最大模型更以80.9 AP的成绩创下MS COCO测试开发集的新纪录。代码与模型详见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
用途
ViTAE-Transformer团队开发的ViTPose模型主要用于姿态估计任务,具体应用包括:
人体姿态估计:检测图像或视频中人体关键点(如头、肩、肘、腕、髋、膝、踝等)的空间位置。
动作识别:通过时序姿态分析识别人类行为活动。
安防监控:分析公共场所的人类行为模式。
健康健身:在健身应用中追踪运动姿势,提供动作规范反馈。
游戏动画:生成更逼真的角色动作与交互效果。
偏差、风险与局限性
本文提出的ViTPose虽在MS COCO数据集上达到SOTA性能,但其潜力尚未通过更复杂技术(如复合解码器或FPN结构)充分挖掘。尽管模型展现出简洁性、可扩展性、灵活性和可迁移性等优势,未来研究可探索提示调优等技术以进一步验证其灵活性,并拓展至动物姿态估计、面部关键点检测等场景。
快速开始
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)
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:
bboxes[:, 2] = bboxes[:, 2] - bboxes[:, 0]
bboxes[:, 3] = bboxes[:, 3] - bboxes[:, 1]
return bboxes
boxes = results[0]["boxes"][results[0]["labels"] == 0]
boxes = [pascal_voc_to_coco(boxes.cpu().numpy())]
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(CC-BY-4.0许可)、AI Challenger、MPII(BSD许可)和CrowdPose数据集进行训练评估。OCHuman数据集仅用于评估遮挡场景下的模型表现。各数据集包含11.8万至20万张训练图像,标注关键点数量14-17个不等。
训练超参数

速度/规模/耗时[可选]

评估
在OCHuman验证/测试集(评估遮挡场景)和MPII验证集(采用PCKh指标)上测试模型性能,均使用真实边界框以避免检测器干扰。
结果

模型架构与目标

硬件配置
基于mmpose代码库在8块A100 GPU上完成训练。
引用[可选]
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},
}