[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-Walter0807--MotionBERT":3,"similar-Walter0807--MotionBERT":91},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":9,"readme_en":10,"readme_zh":11,"quickstart_zh":12,"use_case_zh":13,"hero_image_url":14,"owner_login":15,"owner_name":16,"owner_avatar_url":17,"owner_bio":18,"owner_company":19,"owner_location":18,"owner_email":18,"owner_twitter":18,"owner_website":20,"owner_url":21,"languages":22,"stars":27,"forks":28,"last_commit_at":29,"license":30,"difficulty_score":31,"env_os":32,"env_gpu":33,"env_ram":32,"env_deps":34,"category_tags":42,"github_topics":45,"view_count":50,"oss_zip_url":18,"oss_zip_packed_at":18,"status":51,"created_at":52,"updated_at":53,"faqs":54,"releases":90},2841,"Walter0807\u002FMotionBERT","MotionBERT","[ICCV 2023] PyTorch Implementation of \"MotionBERT: A Unified Perspective on Learning Human Motion Representations\"","MotionBERT 是一个基于 PyTorch 开发的开源深度学习模型，旨在为人体运动理解提供统一的表征学习框架。它核心解决了传统方法中不同人体运动任务（如 3D 姿态估计、动作识别、网格恢复）需要单独训练模型的痛点，通过“预训练 + 微调”的统一范式，让一个模型能够高效适配多种下游应用。\n\n该工具特别适合计算机视觉领域的研究人员和开发者使用。无论是需要复现 ICCV 2023 前沿论文的学者，还是希望在视频分析、虚拟现实或运动捕捉项目中集成高精度人体运动理解的工程师，都能从中受益。对于普通用户而言，虽然直接使用门槛较高，但其支持的“野外推理”功能可帮助开发者快速构建处理自定义视频的应用。\n\nMotionBERT 的技术亮点在于其强大的泛化能力与灵活性。它采用 Transformer 架构作为预训练的人体运动编码器，能够处理长达 243 帧的可变长度输入，无需繁琐的参数调整。模型在多个权威基准测试（如 Human3.6M、NTU RGB+D）上取得了领先的性能表现。使用时只需输入标准的 17 个关键点 2D 骨架数据，即可输出高维度的运动特征表示，极大简化了从原始视频到深层运动语义的","MotionBERT 是一个基于 PyTorch 开发的开源深度学习模型，旨在为人体运动理解提供统一的表征学习框架。它核心解决了传统方法中不同人体运动任务（如 3D 姿态估计、动作识别、网格恢复）需要单独训练模型的痛点，通过“预训练 + 微调”的统一范式，让一个模型能够高效适配多种下游应用。\n\n该工具特别适合计算机视觉领域的研究人员和开发者使用。无论是需要复现 ICCV 2023 前沿论文的学者，还是希望在视频分析、虚拟现实或运动捕捉项目中集成高精度人体运动理解的工程师，都能从中受益。对于普通用户而言，虽然直接使用门槛较高，但其支持的“野外推理”功能可帮助开发者快速构建处理自定义视频的应用。\n\nMotionBERT 的技术亮点在于其强大的泛化能力与灵活性。它采用 Transformer 架构作为预训练的人体运动编码器，能够处理长达 243 帧的可变长度输入，无需繁琐的参数调整。模型在多个权威基准测试（如 Human3.6M、NTU RGB+D）上取得了领先的性能表现。使用时只需输入标准的 17 个关键点 2D 骨架数据，即可输出高维度的运动特征表示，极大简化了从原始视频到深层运动语义的转化流程。","# MotionBERT: A Unified Perspective on Learning Human Motion Representations\n\n\u003Ca href=\"https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F\">\u003Cimg alt=\"PyTorch\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPyTorch-ee4c2c?logo=pytorch&logoColor=white\">\u003C\u002Fa> [![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2210.06551-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2210.06551) \u003Ca href=\"https:\u002F\u002Fmotionbert.github.io\u002F\">\u003Cimg alt=\"Project\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Project%20Page-lightgrey?logo=Google%20Chrome&color=informational&logoColor=white\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FslSPQ9hNLjM\">\u003Cimg alt=\"Demo\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Demo-ea3323?logo=youtube\">\u003C\u002Fa> [![Hugging Face Models](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Hugging%20Face-Models-ffab41)](https:\u002F\u002Fhuggingface.co\u002Fwalterzhu\u002FMotionBERT)\n\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002Fmonocular-3d-human-pose-estimation-on-human3)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fmonocular-3d-human-pose-estimation-on-human3?p=motionbert-unified-pretraining-for-human)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002Fone-shot-3d-action-recognition-on-ntu-rgbd)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fone-shot-3d-action-recognition-on-ntu-rgbd?p=motionbert-unified-pretraining-for-human)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002F3d-human-pose-estimation-on-3dpw)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002F3d-human-pose-estimation-on-3dpw?p=motionbert-unified-pretraining-for-human)\n\nThis is the official PyTorch implementation of the paper *\"[MotionBERT: A Unified Perspective on Learning Human Motion Representations](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2210.06551.pdf)\"* (ICCV 2023).\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWalter0807_MotionBERT_readme_6392fae594d4.gif\" alt=\"\" style=\"zoom: 60%;\" \u002F>\n\n## Installation\n\n```bash\nconda create -n motionbert python=3.7 anaconda\nconda activate motionbert\n# Please install PyTorch according to your CUDA version.\nconda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia\npip install -r requirements.txt\n```\n\n\n\n## Getting Started\n\n| Task                              | Document                                                     |\n| --------------------------------- | ------------------------------------------------------------ |\n| Pretrain                          | [docs\u002Fpretrain.md](docs\u002Fpretrain.md)                                                          |\n| 3D human pose estimation          | [docs\u002Fpose3d.md](docs\u002Fpose3d.md) |\n| Skeleton-based action recognition | [docs\u002Faction.md](docs\u002Faction.md) |\n| Mesh recovery                     | [docs\u002Fmesh.md](docs\u002Fmesh.md) |\n\n\n\n## Applications\n\n### In-the-wild inference (for custom videos)\n\nPlease refer to [docs\u002Finference.md](docs\u002Finference.md).\n\n### Using MotionBERT for *human-centric* video representations\n\n```python\n'''\t    \n  x: 2D skeletons \n    type = \u003Cclass 'torch.Tensor'>\n    shape = [batch size * frames * joints(17) * channels(3)]\n    \n  MotionBERT: pretrained human motion encoder\n    type = \u003Cclass 'lib.model.DSTformer.DSTformer'>\n    \n  E: encoded motion representation\n    type = \u003Cclass 'torch.Tensor'>\n    shape = [batch size * frames * joints(17) * channels(512)]\n'''\nE = MotionBERT.get_representation(x)\n```\n\n\n\n> **Hints**\n>\n> 1. The model could handle different input lengths (no more than 243 frames). No need to explicitly specify the input length elsewhere.\n> 2. The model uses 17 body keypoints ([H36M format](https:\u002F\u002Fgithub.com\u002FJimmySuen\u002Fintegral-human-pose\u002Fblob\u002Fmaster\u002Fpytorch_projects\u002Fcommon_pytorch\u002Fdataset\u002Fhm36.py#L32)). If you are using other formats, please convert them before feeding to MotionBERT. \n> 3. Please refer to [model_action.py](lib\u002Fmodel\u002Fmodel_action.py) and [model_mesh.py](lib\u002Fmodel\u002Fmodel_mesh.py) for examples of (easily) adapting MotionBERT to different downstream tasks.\n> 4. For RGB videos, you need to extract 2D poses ([inference.md](docs\u002Finference.md)), convert the keypoint format ([dataset_wild.py](lib\u002Fdata\u002Fdataset_wild.py)), and then feed to MotionBERT ([infer_wild.py](infer_wild.py)).\n>\n\n\n\n## Model Zoo\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWalter0807_MotionBERT_readme_73c2fbcd5854.gif\" alt=\"\" style=\"zoom: 50%;\" \u002F>\n\n| Model                           | Download Link                                                | Config                                                       | Performance      |\n| ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------- |\n| MotionBERT (162MB)              | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgS425shtVi9e5reN?e=6UeBa2) | [pretrain\u002FMB_pretrain.yaml](configs\u002Fpretrain\u002FMB_pretrain.yaml) | -                |\n| MotionBERT-Lite (61MB)          | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgS27Ydcbpxlkl0ng?e=rq2Btn) | [pretrain\u002FMB_lite.yaml](configs\u002Fpretrain\u002FMB_lite.yaml)       | -                |\n| 3D Pose (H36M-SH, scratch)      | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgSvNejMQ0OHxMGZC?e=KcwBk1) | [pose3d\u002FMB_train_h36m.yaml](configs\u002Fpose3d\u002FMB_train_h36m.yaml) | 39.2mm (MPJPE)   |\n| 3D Pose (H36M-SH, ft)           | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgSoTqtyR5Zsgi8_Z?e=rn4VJf) | [pose3d\u002FMB_ft_h36m.yaml](configs\u002Fpose3d\u002FMB_ft_h36m.yaml)     | 37.2mm (MPJPE)   |\n| Action Recognition (x-sub, ft)  | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTX23yT_NO7RiZz-?e=nX6w2j) | [action\u002FMB_ft_NTU60_xsub.yaml](configs\u002Faction\u002FMB_ft_NTU60_xsub.yaml) | 97.2% (Top1 Acc) |\n| Action Recognition (x-view, ft) | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTaNiXw2Nal-g37M?e=lSkE4T) | [action\u002FMB_ft_NTU60_xview.yaml](configs\u002Faction\u002FMB_ft_NTU60_xview.yaml) | 93.0% (Top1 Acc) |\n| Mesh (with 3DPW, ft)            | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTmgYNslCDWMNQi9?e=WjcB1F) | [mesh\u002FMB_ft_pw3d.yaml](configs\u002Fmesh\u002FMB_ft_pw3d.yaml)              | 88.1mm (MPVE)    |\n\nIn most use cases (especially with finetuning), `MotionBERT-Lite` gives a similar performance with lower computation overhead. \n\n\n\n## TODO\n\n- [x] Scripts and docs for pretraining\n\n- [x] Demo for custom videos\n\n\n\n## Citation\n\nIf you find our work useful for your project, please consider citing the paper:\n\n```bibtex\n@inproceedings{motionbert2022,\n  title     =   {MotionBERT: A Unified Perspective on Learning Human Motion Representations}, \n  author    =   {Zhu, Wentao and Ma, Xiaoxuan and Liu, Zhaoyang and Liu, Libin and Wu, Wayne and Wang, Yizhou},\n  booktitle =   {Proceedings of the IEEE\u002FCVF International Conference on Computer Vision},\n  year      =   {2023},\n}\n```\n\n","# MotionBERT：学习人体运动表示的统一视角\n\n\u003Ca href=\"https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F\">\u003Cimg alt=\"PyTorch\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPyTorch-ee4c2c?logo=pytorch&logoColor=white\">\u003C\u002Fa> [![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2210.06551-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2210.06551) \u003Ca href=\"https:\u002F\u002Fmotionbert.github.io\u002F\">\u003Cimg alt=\"Project\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Project%20Page-lightgrey?logo=Google%20Chrome&color=informational&logoColor=white\">\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FslSPQ9hNLjM\">\u003Cimg alt=\"Demo\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-Demo-ea3323?logo=youtube\">\u003C\u002Fa> [![Hugging Face Models](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%F0%9F%A4%97%20Hugging%20Face-Models-ffab41)](https:\u002F\u002Fhuggingface.co\u002Fwalterzhu\u002FMotionBERT)\n\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002Fmonocular-3d-human-pose-estimation-on-human3)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fmonocular-3d-human-pose-estimation-on-human3?p=motionbert-unified-pretraining-for-human)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002Fone-shot-3d-action-recognition-on-ntu-rgbd)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002Fone-shot-3d-action-recognition-on-ntu-rgbd?p=motionbert-unified-pretraining-for-human)\n[![PWC](https:\u002F\u002Fimg.shields.io\u002Fendpoint.svg?url=https:\u002F\u002Fpaperswithcode.com\u002Fbadge\u002Fmotionbert-unified-pretraining-for-human\u002F3d-human-pose-estimation-on-3dpw)](https:\u002F\u002Fpaperswithcode.com\u002Fsota\u002F3d-human-pose-estimation-on-3dpw?p=motionbert-unified-pretraining-for-human)\n\n这是论文 *\"[MotionBERT: A Unified Perspective on Learning Human Motion Representations](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2210.06551.pdf)\"*（ICCV 2023）的官方 PyTorch 实现。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWalter0807_MotionBERT_readme_6392fae594d4.gif\" alt=\"\" style=\"zoom: 60%;\" \u002F>\n\n## 安装\n\n```bash\nconda create -n motionbert python=3.7 anaconda\nconda activate motionbert\n# 请根据您的 CUDA 版本安装 PyTorch。\nconda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia\npip install -r requirements.txt\n```\n\n\n\n## 快速入门\n\n| 任务                              | 文档                                                     |\n| --------------------------------- | ------------------------------------------------------------ |\n| 预训练                          | [docs\u002Fpretrain.md](docs\u002Fpretrain.md)                                                          |\n| 3D人体姿态估计          | [docs\u002Fpose3d.md](docs\u002Fpose3d.md) |\n| 基于骨架的动作识别 | [docs\u002Faction.md](docs\u002Faction.md) |\n| 网格重建                     | [docs\u002Fmesh.md](docs\u002Fmesh.md) |\n\n\n\n## 应用\n\n### 野外推理（针对自定义视频）\n\n请参考 [docs\u002Finference.md](docs\u002Finference.md)。\n\n### 使用 MotionBERT 进行 *以人为中心* 的视频表示\n\n```python\n'''\t    \n  x: 2D 骨架 \n    type = \u003Cclass 'torch.Tensor'>\n    shape = [batch size * 帧数 * 关节点(17) * 通道数(3)]\n    \n  MotionBERT：预训练的人体运动编码器\n    type = \u003Cclass 'lib.model.DSTformer.DSTformer'>\n    \n  E: 编码后的运动表示\n    type = \u003Cclass 'torch.Tensor'>\n    shape = [batch size * 帧数 * 关节点(17) * 通道数(512)]\n'''\nE = MotionBERT.get_representation(x)\n```\n\n\n\n> **提示**\n>\n> 1. 该模型可以处理不同长度的输入（不超过243帧）。无需在其他地方显式指定输入长度。\n> 2. 模型使用17个身体关键点（[H36M 格式](https:\u002F\u002Fgithub.com\u002FJimmySuen\u002Fintegral-human-pose\u002Fblob\u002Fmaster\u002Fpytorch_projects\u002Fcommon_pytorch\u002Fdataset\u002Fhm36.py#L32)）。如果您使用其他格式，请在输入 MotionBERT 之前进行转换。\n> 3. 请参阅 [model_action.py](lib\u002Fmodel\u002Fmodel_action.py) 和 [model_mesh.py](lib\u002Fmodel\u002Fmodel_mesh.py) 中的例子，了解如何轻松地将 MotionBERT 适配到不同的下游任务。\n> 4. 对于 RGB 视频，您需要先提取 2D 姿态（[inference.md](docs\u002Finference.md)），再转换关键点格式（[dataset_wild.py](lib\u002Fdata\u002Fdataset_wild.py)），最后输入 MotionBERT（[infer_wild.py](infer_wild.py)）。\n>\n\n\n\n## 模型库\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWalter0807_MotionBERT_readme_73c2fbcd5854.gif\" alt=\"\" style=\"zoom: 50%;\" \u002F>\n\n| 模型                           | 下载链接                                                | 配置                                                       | 性能      |\n| ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------- |\n| MotionBERT (162MB)              | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgS425shtVi9e5reN?e=6UeBa2) | [pretrain\u002FMB_pretrain.yaml](configs\u002Fpretrain\u002FMB_pretrain.yaml) | -                |\n| MotionBERT-Lite (61MB)          | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgS27Ydcbpxlkl0ng?e=rq2Btn) | [pretrain\u002FMB_lite.yaml](configs\u002Fpretrain\u002FMB_lite.yaml)       | -                |\n| 3D姿态（H36M-SH，从零开始）      | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgSvNejMQ0OHxMGZC?e=KcwBk1) | [pose3d\u002FMB_train_h36m.yaml](configs\u002Fpose3d\u002FMB_train_h36m.yaml) | 39.2mm (MPJPE)   |\n| 3D姿态（H36M-SH，微调）           | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgSoTqtyR5Zsgi8_Z?e=rn4VJf) | [pose3d\u002FMB_ft_h36m.yaml](configs\u002Fpose3d\u002FMB_ft_h36m.yaml)     | 37.2mm (MPJPE)   |\n| 动作识别（x-sub，微调）  | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTX23yT_NO7RiZz-?e=nX6w2j) | [action\u002FMB_ft_NTU60_xsub.yaml](configs\u002Faction\u002FMB_ft_NTU60_xsub.yaml) | 97.2% (Top1 Acc) |\n| 动作识别（x-view，微调） | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTaNiXw2Nal-g37M?e=lSkE4T) | [action\u002FMB_ft_NTU60_xview.yaml](configs\u002Faction\u002FMB_ft_NTU60_xview.yaml) | 93.0% (Top1 Acc) |\n| 网格（结合3DPW，微调）            | [OneDrive](https:\u002F\u002F1drv.ms\u002Ff\u002Fs!AvAdh0LSjEOlgTmgYNslCDWMNQi9?e=WjcB1F) | [mesh\u002FMB_ft_pw3d.yaml](configs\u002Fmesh\u002FMB_ft_pw3d.yaml)              | 88.1mm (MPVE)    |\n\n在大多数应用场景中（尤其是微调时），`MotionBERT-Lite` 能够以更低的计算开销提供相近的性能。\n\n\n\n## 待办事项\n\n- [x] 预训练脚本和文档\n\n- [x] 自定义视频演示\n\n\n\n## 引用\n\n如果您觉得我们的工作对您的项目有帮助，请考虑引用该论文：\n\n```bibtex\n@inproceedings{motionbert2022,\n  title     =   {MotionBERT: A Unified Perspective on Learning Human Motion Representations}, \n  author    =   {Zhu, Wentao and Ma, Xiaoxuan and Liu, Zhaoyang and Liu, Libin and Wu, Wayne and Wang, Yizhou},\n  booktitle =   {Proceedings of the IEEE\u002FCVF International Conference on Computer Vision},\n  year      =   {2023},\n}\n```","# MotionBERT 快速上手指南\n\nMotionBERT 是一个用于学习人体运动表示的统一预训练模型，支持 3D 人体姿态估计、基于骨架的动作识别和网格恢复等任务。\n\n## 环境准备\n\n*   **操作系统**: Linux \u002F macOS \u002F Windows (WSL)\n*   **Python**: 3.7\n*   **深度学习框架**: PyTorch (需根据本地 CUDA 版本选择)\n*   **硬件要求**: 推荐具备 NVIDIA GPU 以加速推理和训练\n\n## 安装步骤\n\n1.  **创建并激活 Conda 环境**\n    ```bash\n    conda create -n motionbert python=3.7 anaconda\n    conda activate motionbert\n    ```\n\n2.  **安装 PyTorch**\n    请根据您的 CUDA 版本选择合适的安装命令（以下为 CUDA 11.6 示例）：\n    ```bash\n    conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia\n    ```\n    > **提示**: 国内用户可使用清华或中科大镜像源加速安装，例如：\n    > `conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia --channel https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fanaconda\u002Fcloud\u002Fpytorch\u002F`\n\n3.  **安装项目依赖**\n    ```bash\n    pip install -r requirements.txt\n    ```\n    > **提示**: 建议使用国内 pip 镜像源：\n    > `pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n4.  **下载预训练模型**\n    从 [Model Zoo](#model-zoo) 部分提供的 OneDrive 链接下载所需的 `.pth` 模型文件，并放置于项目指定目录（通常为 `checkpoint` 或 `pretrained`，具体参考各任务文档）。\n\n## 基本使用\n\n以下示例展示如何加载预训练的 MotionBERT 模型，并将 2D 骨架序列编码为运动特征表示。\n\n### 代码示例\n\n```python\nimport torch\nfrom lib.model.DSTformer import DSTformer\n\n# 1. 初始化模型 (假设已加载预训练权重)\n# 实际使用时请根据文档加载具体的 checkpoint\nMotionBERT = DSTformer() \nMotionBERT.eval()\n\n# 2. 准备输入数据 (2D 骨架)\n# 形状: [Batch Size, Frames, Joints(17), Channels(3)]\n# 注意：关键点格式需为 H36M 格式 (17 个关节点)\nbatch_size = 1\nframes = 243\nx = torch.randn(batch_size, frames, 17, 3)\n\n# 3. 获取运动特征表示\n# 输出形状: [Batch Size, Frames, Joints(17), Channels(512)]\nwith torch.no_grad():\n    E = MotionBERT.get_representation(x)\n\nprint(f\"输入形状：{x.shape}\")\nprint(f\"输出特征形状：{E.shape}\")\n```\n\n### 关键注意事项\n\n*   **输入长度**: 模型支持动态输入长度，但最大不超过 **243 帧**，无需额外配置。\n*   **数据格式**: 输入必须是 **17 个关键点** 的 2D 坐标（H36M 格式）。如果使用其他数据集格式（如 COCO），请先转换为 H36M 格式。\n*   **RGB 视频处理**: 如果输入是原始视频，需先提取 2D 姿态（参考 `docs\u002Finference.md`），转换关键点格式后，再传入模型。\n\n### 更多任务文档\n\n针对不同下游任务，请参考官方详细文档：\n*   **预训练**: `docs\u002Fpretrain.md`\n*   **3D 人体姿态估计**: `docs\u002Fpose3d.md`\n*   **动作识别**: `docs\u002Faction.md`\n*   **网格恢复**: `docs\u002Fmesh.md`\n*   **自定义视频推理**: `docs\u002Finference.md`","某智能健身创业团队正在开发一款基于手机摄像头的家庭动作纠正应用，需要实时分析用户的深蹲、瑜伽等动作并给出 3D 反馈。\n\n### 没有 MotionBERT 时\n- **数据依赖重**：训练高精度 3D 姿态模型需采集大量昂贵的专业动捕数据，小团队难以承担成本。\n- **泛化能力差**：在实验室环境下训练的模型，一旦用户在家中复杂背景或不同光照下使用，识别准确率急剧下降。\n- **任务适配难**：每新增一种动作评估任务（如从深蹲切换到瑜伽），都需重新设计网络结构并从头训练，开发周期长达数周。\n- **2D 转 3D 误差大**：仅靠单目摄像头提取的 2D 关键点推算 3D 坐标时，深度信息丢失严重，导致动作幅度判断失真。\n\n### 使用 MotionBERT 后\n- **预训练赋能**：直接利用 MotionBERT 在大规模数据集上的统一预训练权重，仅需少量自家业务数据微调即可达到 SOTA 精度。\n- **鲁棒性显著提升**：凭借强大的运动表征学习能力，模型能从容应对居家环境中的遮挡和视角变化，保持输出稳定。\n- **一站式迁移**：通过简单调整下游头部的代码（参考 `model_action.py`），几天内即可完成从姿态估计到动作识别的任务切换。\n- **精准 3D 重建**：利用其先进的时序建模机制，能从单目 2D 关键点中高效恢复出平滑、准确的 3D 人体网格与骨骼，精确计算关节角度。\n\nMotionBERT 通过统一的预训练范式，让中小团队也能以低成本构建出具备工业级鲁棒性的 3D 人体动作分析系统。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FWalter0807_MotionBERT_73c2fbcd.gif","Walter0807","Wentao Zhu","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FWalter0807_64536a8f.png",null,"Eastern Institute of Technology, Ningbo","wentao.live","https:\u002F\u002Fgithub.com\u002FWalter0807",[23],{"name":24,"color":25,"percentage":26},"Python","#3572A5",100,1363,175,"2026-04-02T16:47:35","Apache-2.0",3,"未说明","需要 NVIDIA GPU (通过 pytorch-cuda=11.6 安装)，具体显存需求未说明",{"notes":35,"python":36,"dependencies":37},"建议使用 conda 创建名为 motionbert 的虚拟环境。模型输入限制为不超过 243 帧，且需使用 17 个身体关键点（H36M 格式）。对于 RGB 视频，需先提取 2D 姿态并转换格式后方可输入模型。提供 MotionBERT-Lite 版本以降低计算开销。","3.7",[38,39,40,41],"pytorch","torchvision","torchaudio","pytorch-cuda=11.6",[43,44],"图像","其他",[46,47,48,49],"3d-pose-estimation","mesh-recovery","skeleton-based-action-recognition","iccv2023",2,"ready","2026-03-27T02:49:30.150509","2026-04-06T05:27:14.174568",[55,60,65,70,75,80,85],{"id":56,"question_zh":57,"answer_zh":58,"source_url":59},13136,"如何使用非 AlphaPose 的其他 2D 姿态估计模型（如 YOLOv5 + ViTPose）进行野外推理（In-the-wild Inference）？","任何姿态估计模型都可以使用，只要正确格式化输出的 JSON 文件即可。对于其他 2D 姿态估计器或关键点格式，只需修改 `lib\u002Fdata\u002Fdataset_wild.py` 脚本中的第 68 至 77 行，将读取的 2D 结果转换为 H36M 格式。有用户分享了使用 YOLOv5 + ViTPose 的流程脚本供参考：https:\u002F\u002Fgithub.com\u002Ffan23j\u002Fyolov5-vitpose-video-annotator","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F16",{"id":61,"question_zh":62,"answer_zh":63,"source_url":64},13137,"预处理后的 H3.6M 数据中的 `2.5d_factor` 是如何计算的？","`2.5d_factor` 对应于 LCN (T-PAMI 2020) 论文第 6.2.1 节中的 λ 参数。它是像素坐标与世界坐标之间的归一化因子。具体来说，λ (世界到像素) 应该是 `2.5d_factor` (像素到世界) 的倒数。原始计算逻辑可参考 LCN 作者的代码实现：https:\u002F\u002Fgithub.com\u002FCHUNYUWANG\u002Flcn-pose\u002Fblob\u002Fmaster\u002Ftools\u002Fgendb.py#L85","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F51",{"id":66,"question_zh":67,"answer_zh":68,"source_url":69},13138,"如何获取 MotionBERT 输出中类似 ROMP 的 `cam_trans`（相机平移）数据？","MotionBERT 默认输出 H36M 格式的 17 个关节点，而 ROMP 输出 SMPL 24 关节点及相机参数。若需获取相机平移数据，建议参考相关技术博客或尝试从源码中推导相机矩阵。有用户指出可以参考这篇关于 `cam_trans` 的详细解析文章：https:\u002F\u002Fblog.csdn.net\u002Fqq_33596242\u002Farticle\u002Fdetails\u002F132805223","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F31",{"id":71,"question_zh":72,"answer_zh":73,"source_url":74},13139,"在预处理 AMASS 数据集时，去哪里下载 `dmpls` 模型文件？","`dmpls` 模型文件通常不直接公开在官方主页，但维护者曾通过 Google Drive 分享过该数据。如果遇到链接权限问题，可以检查维护者在 Issue 评论中更新的共享链接。例如，之前的分享链接为：https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1y1X7P8j469aP0YaQQw2Ps76VIf8ATvN6\u002Fview?usp=drive_link（请确保有访问权限或联系维护者更新权限）。","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F131",{"id":76,"question_zh":77,"answer_zh":78,"source_url":79},13140,"如何将 MotionBERT 的推理结果保存为 numpy 文件以驱动 Unity 或其他引擎中的动画？","如果你使用的是 `infer_wild_mesh.py` 脚本提取 SMPL 关节点，可以在脚本末尾添加以下代码来保存关节位置数据：\n```python\nnp.save(osp.join(opts.out_path, 'joints.npy'), reg3d_all)\n```\n生成的 `.npy` 文件包含了 3D 关节坐标，可用于后续动画驱动。注意检查关节顺序是否与目标引擎（如 Unity 中的 SMPL 模型）匹配，必要时需进行重映射。","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F76",{"id":81,"question_zh":82,"answer_zh":83,"source_url":84},13141,"MotionBERT 是否支持实时应用？Lite 版本的速度表现如何？","MotionBERT 可以用于实时 3D 姿态估计，但需要注意序列采样对性能的影响。有用户反馈，如果不是对整个序列进行采样，性能可能会有较大下降。建议在 Python 环境中先进行深度测试以评估实际帧率（FPS）。具体的 FPS 取决于硬件配置（GPU 型号）和环境设置，社区中有用户在讨论中分享了他们的实测环境配置供参考。","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F29",{"id":86,"question_zh":87,"answer_zh":88,"source_url":89},13142,"如何将髋部（hips）坐标映射到真实世界坐标系？当前的 Z 轴偏移量对齐效果不佳。","将髋部坐标映射到真实世界通常需要一个归一化的高度比例因子。目前社区中常用的经验值是给 Z 轴加上约 0.65 的偏移量，但这可能因具体场景而异。更精确的方法是根据归一化后的髋部高度与真实身高的比例来计算偏移值。维护者表示可以尝试该方法，且不会对性能产生负面影响。","https:\u002F\u002Fgithub.com\u002FWalter0807\u002FMotionBERT\u002Fissues\u002F28",[],[92,102,110,123,131,139],{"id":93,"name":94,"github_repo":95,"description_zh":96,"stars":97,"difficulty_score":31,"last_commit_at":98,"category_tags":99,"status":51},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[100,43,101],"开发框架","Agent",{"id":103,"name":104,"github_repo":105,"description_zh":106,"stars":107,"difficulty_score":50,"last_commit_at":108,"category_tags":109,"status":51},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[100,43,101],{"id":111,"name":112,"github_repo":113,"description_zh":114,"stars":115,"difficulty_score":50,"last_commit_at":116,"category_tags":117,"status":51},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[43,118,119,120,101,44,121,100,122],"数据工具","视频","插件","语言模型","音频",{"id":124,"name":125,"github_repo":126,"description_zh":127,"stars":128,"difficulty_score":31,"last_commit_at":129,"category_tags":130,"status":51},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[101,43,100,121,44],{"id":132,"name":133,"github_repo":134,"description_zh":135,"stars":136,"difficulty_score":31,"last_commit_at":137,"category_tags":138,"status":51},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74913,"2026-04-05T10:44:17",[121,43,100,44],{"id":140,"name":141,"github_repo":142,"description_zh":143,"stars":144,"difficulty_score":50,"last_commit_at":145,"category_tags":146,"status":51},2471,"tesseract","tesseract-ocr\u002Ftesseract","Tesseract 是一款历史悠久且备受推崇的开源光学字符识别（OCR）引擎，最初由惠普实验室开发，后由 Google 维护，目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据，有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题，是数字化归档和信息自动化的重要基础工具。\n\n在技术层面，Tesseract 展现了强大的适应能力。从版本 4 开始，它引入了基于长短期记忆网络（LSTM）的神经网络 OCR 引擎，显著提升了行识别的准确率；同时，为了兼顾旧有需求，它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码，开箱即用即可识别超过 100 种语言，并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面，它灵活支持纯文本、hOCR、PDF、TSV 等多种格式，方便后续数据处理。\n\nTesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库（libtesseract），不包含图形用户界面（GUI），因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中",73286,"2026-04-03T01:56:45",[100,43]]