🚀 ViTPose: 人体姿勢推定のためのビジョントランスフォーマーモデル
ViTPoseは、人体姿勢推定タスクに特化したビジョントランスフォーマーベースのモデルです。MS COCO Keypoint test - devセットで81.1 APを達成し、高い性能を発揮します。また、ViTPose+は汎用的な身体姿勢推定のためのモデルです。
🚀 クイックスタート
以下のコードを使用して、モデルを始めることができます。
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:
"""
Converts bounding boxes from the Pascal VOC format to the COCO format.
In other words, converts from (top_left_x, top_left_y, bottom_right_x, bottom_right_y) format
to (top_left_x, top_left_y, width, height).
Args:
bboxes (`np.ndarray` of shape `(batch_size, 4)):
Bounding boxes in Pascal VOC format.
Returns:
`np.ndarray` of shape `(batch_size, 4) in COCO format.
"""
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 Keypoint test - devセットで81.1 APを達成し、代表的な手法を上回ります。
- スケーラビリティ:トランスフォーマーのスケーラブルなモデル容量と高い並列性を活かして、100Mから1Bパラメータまで拡張可能です。
- 柔軟性:注意タイプ、入力解像度、事前学習と微調整戦略、複数の姿勢タスクへの対応など、非常に柔軟です。
- 知識の移行性:大規模なViTPoseモデルの知識を簡単な知識トークンを介して小規模なモデルに移行できます。
📚 ドキュメント
モデルの詳細
単純なビジョントランスフォーマーは、特定のドメイン知識を考慮せずに設計されているにもかかわらず、視覚認識タスクで優れた性能を示しています。しかし、姿勢推定タスクにおけるこのような単純な構造の潜在能力を明らかにする努力はほとんどなされていません。この論文では、ViTPoseと呼ばれる単純なベースラインモデルを通じて、モデル構造の単純さ、モデルサイズの拡張性、トレーニングパラダイムの柔軟性、およびモデル間の知識の移行性という様々な側面から、姿勢推定における単純なビジョントランスフォーマーの驚くほど良好な能力を示します。具体的には、ViTPoseは、与えられた人物インスタンスの特徴を抽出するためのバックボーンとして、単純で階層的でないビジョントランスフォーマーを採用し、姿勢推定のための軽量なデコーダを使用します。トランスフォーマーのスケーラブルなモデル容量と高い並列性を活かして、100Mから1Bパラメータまで拡張でき、スループットと性能の間に新しいパレートフロントを設定します。また、ViTPoseは、注意タイプ、入力解像度、事前学習と微調整戦略、および複数の姿勢タスクの処理に関して非常に柔軟です。大規模なViTPoseモデルの知識が、簡単な知識トークンを介して小規模なモデルに容易に移行できることも実証的に示します。実験結果は、基本的なViTPoseモデルが、挑戦的なMS COCO Keypoint Detectionベンチマークで代表的な手法を上回り、最大のモデルが新しい最先端技術を設定することを示しています。つまり、MS COCO test - devセットで80.9 APです。コードとモデルは、https://github.com/ViTAE - Transformer/ViTPose で入手できます。
モデルの説明
これは、🤗 transformersモデルのモデルカードで、Hubにアップロードされています。このモデルカードは自動生成されています。
属性 |
详情 |
開発者 |
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
💻 使用例
基本的な使用法
上記の「クイックスタート」のコードが基本的な使用例になります。
🔧 技術詳細
トレーニングデータ
トレーニングと評価には、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バリデーションセットとテストセット
重度の遮蔽がある人物インスタンスに対する人体姿勢推定モデルの性能を評価するために、ViTPoseのバリアントと代表的なモデルを、正解のバウンディングボックスを持つOCHumanバリデーションセットとテストセットでテストします。OCHumanデータセットではすべての人物インスタンスがアノテーションされていないため、追加の人物検出器を採用しません。人物検出器は多くの「偽陽性」のバウンディングボックスを引き起こし、姿勢推定モデルの真の能力を反映できません。具体的には、MS COCOデータセットに対応するViTPoseのデコーダヘッドを使用します。なぜなら、MS COCOとOCHumanデータセットのキーポイント定義は同じであるためです。
MPIIバリデーションセット
ViTPoseと代表的なモデルの性能を、正解のバウンディングボックスを持つMPIIバリデーションセットで評価します。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},
}