ONNX 模型库
返回模型

说明文档

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(取决于变体)

来源


预期用途

直接使用

  • 从 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 检查点包含 teacherstudent 权重,推理时仅使用 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).

模型卡片联系方式

Muhammad Saif Ullah Khan

dfki-av/spinepose

作者 dfki-av

keypoint-detection
↓ 0 ♥ 3

创建时间: 2025-04-08 13:01:32+00:00

更新时间: 2026-03-10 17:22:02+00:00

在 Hugging Face 上查看

文件 (22)

.gitattributes
README.md
simspine/2d/onnx/.gitkeep
simspine/2d/pytorch/spinepose-l_32xb256-10e_simspine-256x192.pth
simspine/2d/pytorch/spinepose-m_32xb256-10e_simspine-256x192.pth
simspine/2d/pytorch/spinepose-s_32xb256-10e_simspine-256x192.pth
simspine/2d/pytorch/td-hm_ViTPose-base_8xb64-10e_simspine-256x192.pth
simspine/2d/pytorch/td-hm_hrnet-w32_8xb64-10e_simspine-256x192.pth
simspine/3d/onnx/.gitkeep
simspine/3d/pytorch/simple-baseline-3d_8xb64-200e_mono-simspine-spineonly.pth
simspine/3d/pytorch/simple-baseline-3d_8xb64-200e_mono-simspine.pth
spinepose-l_32xb256-10e_simspine-256x192.onnx ONNX
spinepose-l_32xb256-10e_spinetrack-256x192.onnx ONNX
spinepose-m_32xb256-10e_simspine-256x192.onnx ONNX
spinepose-m_32xb256-10e_spinetrack-256x192.onnx ONNX
spinepose-s_32xb256-10e_simspine-256x192.onnx ONNX
spinepose-s_32xb256-10e_spinetrack-256x192.onnx ONNX
spinepose-x_32xb128-10e_spinetrack-384x288.onnx ONNX
spinetrack/pytorch/spinepose-l_32xb256-10e_spinetrack-256x192.pth
spinetrack/pytorch/spinepose-m_32xb256-10e_spinetrack-256x192.pth
spinetrack/pytorch/spinepose-s_32xb256-10e_spinetrack-256x192.pth
spinetrack/pytorch/spinepose-x_32xb128-10e_spinetrack-384x288.pth