说明文档
SpinePose 系列模型卡片
SpinePose 是一系列 2D 人体姿态估计模型,专门用于估计 37 关键点骨骼,在标准人体模型的基础上扩展了对脊柱、骨盆和足部区域的详细估计。
共有四种 SpinePose 变体(small、medium、large 和 x-large),推理时的计算量分别为 0.72、1.98、4.22 和 17.37 GFLOPS。
模型详情
描述
- 开发者: Muhammad Saif Ullah Khan
- 所属机构: 凯撒斯劳滕工业大学 & DFKI
- 资助方: DFKI GmbH
- 模型类型: 自顶向下 2D 关键点估计器
- 许可证: CC-BY-NC-4.0
- 框架: PyTorch, ONNX Runtime
- 输入分辨率: 256×192 或 384×288(取决于变体)
来源
- 代码仓库: github.com/dfki-av/spinepose
- 论文: CVPR Workshops 2025 (CVSPORTS)
- 演示: saifkhichi.com/research/spinepose
预期用途
直接使用
- 从 RGB 图像或视频中进行人体和脊柱关节定位
- 面向研究、动画或体育应用的实时运动分析
- 增强通用姿态估计器以处理解剖学丰富的任务
下游使用
- 与临床姿势跟踪系统集成
- 3D 姿态提升或肌肉骨骼建模(通过 SpineTrack 合成子集)
- 在特定领域数据集上进行微调(工业、康复、瑜伽等)
不适用场景
- 任何缺乏人工监督的医疗诊断或治疗应用
- 全身 3D 重建(需要单独的提升模型)
- 在安全关键系统中未经验证的使用
偏差、风险和局限性
- 模型主要在受控和合成数据集上训练;在遮挡或极端姿态下可能表现不佳。
- 体型和文化服饰的多样性有限。
- 继承了用于预训练教师模型的 COCO/Body8 数据集的偏差。
建议
在您的特定领域评估该模型,并使用领域特定样本重新训练或增强以减轻数据集偏差。
快速开始
安装
pip install spinepose
在支持 CUDA 的 Linux/Windows 系统上,安装 GPU 版本:
pip install spinepose[gpu]
命令行使用
spinepose -i /path/to/image_or_video -o /path/to/output
这将自动下载正确的 ONNX 检查点。
运行 spinepose -h 查看详细使用选项。
Python API
import cv2
from spinepose import SpinePoseEstimator
# 初始化估计器(如果本地未找到,则下载 ONNX 模型)
estimator = SpinePoseEstimator(device='cuda')
# 对单张图像执行推理
image = cv2.imread('path/to/image.jpg')
keypoints, scores = estimator.predict(image)
visualized = estimator.visualize(image, keypoints, scores)
cv2.imwrite('output.jpg', visualized)
更高层次的使用:
from spinepose.inference import infer_image, infer_video
# 单张图像推理
infer_image('path/to/image.jpg', 'output.jpg')
# 视频推理(可选时间平滑)
infer_video('path/to/video.mp4', 'output_video.mp4', use_smoothing=True)
评估
要复现结果,请准备以下目录结构:
<PROJECT_DIR>/
├─ data/
│ ├─ spinetrack/
│ ├─ coco/
│ └─ halpe/
└─ checkpoints/
├─ spinepose-s_32xb256-10e_spinetrack-256x192.pth
├─ spinepose-m_32xb256-10e_spinetrack-256x192.pth
├─ spinepose-l_32xb256-10e_spinetrack-256x192.pth
└─ spinepose-x_32xb128-10e_spinetrack-384x288.pth
每个 PyTorch 检查点包含 teacher 和 student 权重,推理时仅使用 student。导出的 ONNX 检查点仅包含 student。
指标
我们报告在不同对象关键点相似度(OKS)阈值下的平均精度(AP)和平均召回率(AR),与 COCO 惯例一致,但扩展到 37 关键点的 SpineTrack 格式。
结果
<table border="1" cellspacing="0" cellpadding="6" style="border-collapse:collapse; text-align:center; font-family:Arial; font-size:13px;"> <thead style="background-color:#f0f0f0; font-weight:bold;"> <tr> <th>方法</th> <th>训练数据</th> <th>关键点</th> <th colspan="2">COCO</th> <th colspan="2">Halpe26</th> <th colspan="2">Body</th> <th colspan="2">Feet</th> <th colspan="2">Spine</th> <th colspan="2">Overall</th> <th>参数量 (M)</th> <th>FLOPs (G)</th> </tr> <tr> <th></th><th></th><th></th> <th>AP</th><th>AR</th> <th>AP</th><th>AR</th> <th>AP</th><th>AR</th> <th>AP</th><th>AR</th> <th>AP</th><th>AR</th> <th>AP</th><th>AR</th> <th></th><th></th> </tr> </thead> <tbody> <tr><td>SimCC-MBV2</td><td>COCO</td><td>17</td><td>62.0</td><td>67.8</td><td>33.2</td><td>43.9</td><td>72.1</td><td>75.6</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.1</td><td>0.1</td><td>2.29</td><td>0.31</td></tr> <tr><td>RTMPose-t</td><td>Body8</td><td>26</td><td>65.9</td><td>71.3</td><td>68.0</td><td>73.2</td><td>76.9</td><td>80.0</td><td>74.1</td><td>79.7</td><td>0.0</td><td>0.0</td><td>15.8</td><td>17.9</td><td>3.51</td><td>0.37</td></tr> <tr><td>RTMPose-s</td><td>Body8</td><td>26</td><td>69.7</td><td>74.7</td><td>72.0</td><td>76.7</td><td>80.9</td><td>83.6</td><td>78.9</td><td>83.5</td><td>0.0</td><td>0.0</td><td>17.2</td><td>19.4</td><td>5.70</td><td>0.70</td></tr> <tr style="background-color:#e6e6e6; font-weight:bold;"><td>SpinePose-s</td><td>SpineTrack</td><td>37</td><td>68.2</td><td>73.1</td><td>70.6</td><td>75.2</td><td>79.1</td><td>82.1</td><td>77.5</td><td>82.9</td><td>89.6</td><td>90.7</td><td>84.2</td><td>86.2</td><td>5.98</td><td>0.72</td></tr> <tr><td colspan="17" style="background-color:#d0d0d0; height:3px;"></td></tr> <tr><td>SimCC-ViPNAS</td><td>COCO</td><td>17</td><td>69.5</td><td>75.5</td><td>36.9</td><td>49.7</td><td>79.6</td><td>83.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.2</td><td>0.2</td><td>8.65</td><td>0.80</td></tr> <tr><td>RTMPose-m</td><td>Body8</td><td>26</td><td>75.1</td><td>80.0</td><td>76.7</td><td>81.3</td><td>85.5</td><td>87.9</td><td>84.1</td><td>88.2</td><td>0.0</td><td>0.0</td><td>19.4</td><td>21.4</td><td>13.93</td><td>1.95</td></tr> <tr style="background-color:#e6e6e6; font-weight:bold;"><td>SpinePose-m</td><td>SpineTrack</td><td>37</td><td>73.0</td><td>77.5</td><td>75.0</td><td>79.2</td><td>84.0</td><td>86.4</td><td>83.5</td><td>87.4</td><td>91.4</td><td>92.5</td><td>88.0</td><td>89.5</td><td>14.34</td><td>1.98</td></tr> <tr><td colspan="17" style="background-color:#d0d0d0; height:3px;"></td></tr> <tr><td>RTMPose-l</td><td>Body8</td><td>26</td><td>76.9</td><td>81.5</td><td>78.4</td><td>82.9</td><td>86.8</td><td>89.2</td><td>86.9</td><td>90.0</td><td>0.0</td><td>0.0</td><td>20.0</td><td>22.0</td><td>28.11</td><td>4.19</td></tr> <tr><td>RTMW-m</td><td>Cocktail14</td><td>133</td><td>73.8</td><td>78.7</td><td>63.8</td><td>68.5</td><td>84.3</td><td>86.7</td><td>83.0</td><td>87.2</td><td>0.0</td><td>0.0</td><td>6.2</td><td>7.6</td><td>32.26</td><td>4.31</td></tr> <tr><td>SimCC-ResNet50</td><td>COCO</td><td>17</td><td>72.1</td><td>78.2</td><td>38.7</td><td>51.6</td><td>81.8</td><td>85.2</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.2</td><td>0.2</td><td>36.75</td><td>5.50</td></tr> <tr style="background-color:#e6e6e6; font-weight:bold;"><td>SpinePose-l</td><td>SpineTrack</td><td>37</td><td>75.2</td><td>79.5</td><td>77.0</td><td>81.1</td><td>85.4</td><td>87.7</td><td>85.5</td><td>89.2</td><td>91.0</td><td>92.2</td><td>88.4</td><td>90.0</td><td>28.66</td><td>4.22</td></tr> <tr><td colspan="17" style="background-color:#d0d0d0; height:3px;"></td></tr> <tr><td>SimCC-ResNet50*</td><td>COCO</td><td>17</td><td>73.4</td><td>79.0</td><td>39.8</td><td>52.4</td><td>83.2</td><td>86.2</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.0</td><td>0.3</td><td>0.3</td><td>43.29</td><td>12.42</td></tr> <tr><td>RTMPose-x*</td><td>Body8</td><td>26</td><td>78.8</td><td>83.4</td><td>80.0</td><td>84.4</td><td>88.6</td><td>90.6</td><td>88.4</td><td>91.4</td><td>0.0</td><td>0.0</td><td>21.0</td><td>22.9</td><td>50.00</td><td>17.29</td></tr> <tr><td>RTMW-l*</td><td>Cocktail14</td><td>133</td><td>75.6</td><td>80.4</td><td>65.4</td><td>70.1</td><td>86.0</td><td>88.3</td><td>85.6</td><td>89.2</td><td>0.0</td><td>0.0</td><td>8.1</td><td>8.1</td><td>57.20</td><td>7.91</td></tr> <tr><td>RTMW-l*</td><td>Cocktail14</td><td>133</td><td>77.2</td><td>82.3</td><td>66.6</td><td>71.8</td><td>87.3</td><td>89.9</td><td>88.3</td><td>91.3</td><td>0.0</td><td>0.0</td><td>8.6</td><td>8.6</td><td>57.35</td><td>17.69</td></tr> <tr style="background-color:#e6e6e6; font-weight:bold;"><td>SpinePose-x*</td><td>SpineTrack</td><td>37</td><td>75.9</td><td>80.1</td><td>77.6</td><td>81.8</td><td>86.3</td><td>88.5</td><td>86.3</td><td>89.7</td><td>89.3</td><td>91.0</td><td>88.9</td><td>89.9</td><td>50.69</td><td>17.37</td></tr> </tbody> </table>
SpineTrack 数据集
SpineTrack 数据集包含真实和合成数据:
- SpineTrack-Real:带有九个详细脊柱标注点的自然图像,此外还有 COCO 关节点。
- SpineTrack-Unreal:在 Unreal Engine 中渲染的合成子集,带有生物力学对齐的 OpenSim 标注。
下载方式:
git lfs install
git clone https://huggingface.co/datasets/saifkhichi96/spinetrack
或者,使用 wget 直接下载数据集:
wget https://huggingface.co/datasets/saifkhichi96/spinetrack/resolve/main/annotations.zip
wget https://huggingface.co/datasets/saifkhichi96/spinetrack/resolve/main/images.zip
两种方式都会下载两个压缩文件夹:annotations(24.8 MB)和 images(19.4 GB),解压后得到以下结构:
spinetrack
├── annotations/
│ ├── person_keypoints_train-real-coco.json
│ ├── person_keypoints_train-real-yoga.json
│ ├── person_keypoints_train-unreal.json
│ └── person_keypoints_val2017.json
└── images/
├── train-real-coco/
├── train-real-yoga/
├── train-unreal/
└── val2017/
所有标注遵循 COCO 格式,可直接与 MMPose、Detectron2 或类似框架兼容。
合成子集主要用于主动学习流程,用于引导和优化真实世界图像的标注。
所有发布的 SpinePose 模型均仅在数据集的真实部分上训练。
[!WARNING] 合成子集中有少量标注已损坏。
我们建议在下一版本数据集发布更新标签之前,避免使用这些数据。
引用
如果您在研究中使用 SpinePose 或 SpineTrack,请引用:
BibTeX:
@InProceedings{Khan_2025_CVPR,
author = {Khan, Muhammad Saif Ullah and Krau{\ss}, Stephan and Stricker, Didier},
title = {Towards Unconstrained 2D Pose Estimation of the Human Spine},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
month = {June},
year = {2025},
pages = {6171-6180}
}
APA:
Khan, M. S. U., Krauß, S., & Stricker, D. (2025). Towards Unconstrained 2D Pose Estimation of the Human Spine. In Proceedings of the Computer Vision and Pattern Recognition Conference (pp. 6172-6181).
模型卡片联系方式
dfki-av/spinepose
作者 dfki-av
创建时间: 2025-04-08 13:01:32+00:00
更新时间: 2026-03-10 17:22:02+00:00
在 Hugging Face 上查看