模型概述
模型特點
模型能力
使用案例
🚀 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},
}









