[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-xingyizhou--pytorch-pose-hg-3d":3,"similar-xingyizhou--pytorch-pose-hg-3d":88},{"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":20,"owner_email":21,"owner_twitter":22,"owner_website":23,"owner_url":24,"languages":25,"stars":30,"forks":31,"last_commit_at":32,"license":33,"difficulty_score":34,"env_os":35,"env_gpu":36,"env_ram":37,"env_deps":38,"category_tags":46,"github_topics":22,"view_count":49,"oss_zip_url":22,"oss_zip_packed_at":22,"status":50,"created_at":51,"updated_at":52,"faqs":53,"releases":87},8789,"xingyizhou\u002Fpytorch-pose-hg-3d","pytorch-pose-hg-3d","PyTorch implementation for 3D human pose estimation","pytorch-pose-hg-3d 是一个基于 PyTorch 框架开发的开源项目，专注于实现复杂场景下的 3D 人体姿态估计。它旨在解决从单张二维图像中精准还原人体三维骨骼结构的技术难题，特别是在非受控的自然环境中（即“在野外”），能够有效地推断出人物的空间动作姿态。\n\n该工具非常适合计算机视觉领域的研究人员、算法工程师以及希望深入理解 3D 姿态估计技术的开发者使用。对于需要构建动作分析、虚拟现实交互或智能监控系统的团队，它提供了坚实的算法基座。需要注意的是，由于涉及模型训练与环境配置，普通用户若无编程基础可能较难直接上手。\n\n在技术亮点方面，pytorch-pose-hg-3d 不仅复现了 ICCV 2017 提出的弱监督学习经典论文方法，还进行了重要的现代化升级。它将网络主干替换为效率更高的 ResNet50 结合反卷积层，使训练速度提升至原版的三倍；同时优化了深度回归子网络，并适配了更新的 Human3.6M 数据集标准。项目代码已从早期的 Python 2.7 迁移至 Python 3.6 与现代 PyTorch 版本，提供了包括预训练模型演示、基准测试及完整训练流程在内","pytorch-pose-hg-3d 是一个基于 PyTorch 框架开发的开源项目，专注于实现复杂场景下的 3D 人体姿态估计。它旨在解决从单张二维图像中精准还原人体三维骨骼结构的技术难题，特别是在非受控的自然环境中（即“在野外”），能够有效地推断出人物的空间动作姿态。\n\n该工具非常适合计算机视觉领域的研究人员、算法工程师以及希望深入理解 3D 姿态估计技术的开发者使用。对于需要构建动作分析、虚拟现实交互或智能监控系统的团队，它提供了坚实的算法基座。需要注意的是，由于涉及模型训练与环境配置，普通用户若无编程基础可能较难直接上手。\n\n在技术亮点方面，pytorch-pose-hg-3d 不仅复现了 ICCV 2017 提出的弱监督学习经典论文方法，还进行了重要的现代化升级。它将网络主干替换为效率更高的 ResNet50 结合反卷积层，使训练速度提升至原版的三倍；同时优化了深度回归子网络，并适配了更新的 Human3.6M 数据集标准。项目代码已从早期的 Python 2.7 迁移至 Python 3.6 与现代 PyTorch 版本，提供了包括预训练模型演示、基准测试及完整训练流程在内的丰富功能，是研究 3D 人体姿态领域极具参考价值的工具。","# Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach\n\nThis repository is the PyTorch implementation for the network presented in:\n\n> Xingyi Zhou, Qixing Huang, Xiao Sun, Xiangyang Xue, Yichen Wei, \n> **Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach**\n> ICCV 2017 ([arXiv:1704.02447](https:\u002F\u002Farxiv.org\u002Fabs\u002F1704.02447))\n\n\u003Cp align=\"center\"> \n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxingyizhou_pytorch-pose-hg-3d_readme_bf4ed7992940.png\" width=\"350\"\u002F>\n\u003C\u002Fp>\n\n**\u003Cspan style=\"color:red\">Note: \u003C\u002Fspan>** This repository has been updated and is different from the method discribed in the paper. To fully reproduce the results in the paper, please checkout the original [torch implementation](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpose-hg-3d) or our [pytorch re-implementation branch](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Ftree\u002Fhg3d) (slightly worse than torch). \nWe also provide a clean [2D hourglass network branch](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Ftree\u002F2D).\n\nThe updates include:\n- Change network backbone to ResNet50 with deconvolution layers ([Xiao et al. ECCV2018](https:\u002F\u002Fgithub.com\u002FMicrosoft\u002Fhuman-pose-estimation.pytorch)). Training is now about 3x faster than the original hourglass net backbone (but no significant performance improvement). \n- Change the depth regression sub-network to a one-layer depth map (described in our [StarMap project](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002FStarMap)).\n- Change the Human3.6M dataset to official release in [ECCV18 challenge](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fchallenge_open.php). \n- Update from python 2.7 and pytorch 0.1.12 to python 3.6 and pytorch 0.4.1.\n\nContact: [zhouxy2017@gmail.com](mailto:zhouxy2017@gmail.com)\n\n## Installation\nThe code was tested with [Anaconda](https:\u002F\u002Fwww.anaconda.com\u002Fdownload) Python 3.6 and [PyTorch]((http:\u002F\u002Fpytorch.org\u002F)) v0.4.1. After install Anaconda and Pytorch:\n\n1. Clone the repo:\n\n    ~~~\n    POSE_ROOT=\u002Fpath\u002Fto\u002Fclone\u002Fpytorch-pose-hg-3d\n    git clone https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d POSE_ROOT\n    ~~~\n\n\n2. Install dependencies (opencv, and progressbar):\n\n    ~~~\n    conda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fmenpo opencv\n    conda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fauto progress\n    ~~~\n3. Disable cudnn for batch_norm (see [issue](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F16)):\n    \n    ~~~\n    # PYTORCH=\u002Fpath\u002Fto\u002Fpytorch\n    # for pytorch v0.4.0\n    sed -i \"1194s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n    # for pytorch v0.4.1\n    sed -i \"1254s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n    ~~~\n4. Optionally, install tensorboard for visializing training. \n\n    ~~~\n    pip install tensorflow\n    ~~~\n\n## Demo\n- Download our pre-trained [model](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1_2CCb_qsA1egT5c2s0ABuW3rQCDOLvPq) and move it to `models`.\n- Run `python demo.py --demo \u002Fpath\u002Fto\u002Fimage\u002For\u002Fimage\u002Ffolder [--gpus -1] [--load_model \u002Fpath\u002Fto\u002Fmodel]`. \n\n`--gpus -1` is for CPU mode. \nWe provide example images in `images\u002F`. For testing your own image, it is important that the person should be at the center of the image and most of the body parts should be within the image. \n\n## Benchmark Testing\nTo test our model on Human3.6 dataset run \n\n~~~\npython main.py --exp_id test --task human3d --dataset fusion_3d --load_model ..\u002Fmodels\u002Ffusion_3d_var.pth --test --full_test\n~~~\n\nThe expected results should be 64.55mm.\n\n## Training\n- Prepare the training data:\n  - Download images from [MPII dataset](http:\u002F\u002Fhuman-pose.mpi-inf.mpg.de\u002F#download) and their [annotation](https:\u002F\u002Fonedrive.live.com\u002F?authkey=%21AKqtqKs162Z5W7g&id=56B9F9C97F261712%2110696&cid=56B9F9C97F261712) in json format (`train.json` and `val.json`) (from [Xiao et al. ECCV2018](https:\u002F\u002Fgithub.com\u002FMicrosoft\u002Fhuman-pose-estimation.pytorch)).\n  - Download [Human3.6M ECCV challenge dataset](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fchallenge_open.php).\n  - Download [meta data](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002Fuouev0a1ao84ofd\u002FAADzZChEX3BdM5INGlbe74Pma\u002Fhm36_eccv_challenge?dl=0&subfolder_nav_tracking=1) (2D bounding box) of the Human3.6 dataset (from [Sun et al. ECCV 2018](https:\u002F\u002Fgithub.com\u002FJimmySuen\u002Fintegral-human-pose)). \n  - Place the data (or create symlinks) to make the data folder like: \n  \n  ```\n  ${POSE_ROOT}\n  |-- data\n  `-- |-- mpii\n      `-- |-- annot\n          |   |-- train.json\n          |   |-- valid.json\n          `-- images\n              |-- 000001163.jpg\n              |-- 000003072.jpg\n  `-- |-- h36m\n      `-- |-- ECCV18_Challenge\n          |   |-- Train\n          |   |-- Val\n          `-- msra_cache\n              `-- |-- HM36_eccv_challenge_Train_cache\n                  |   |-- HM36_eccv_challenge_Train_w288xh384_keypoint_jnt_bbox_db.pkl\n                  `-- HM36_eccv_challenge_Val_cache\n                      |-- HM36_eccv_challenge_Val_w288xh384_keypoint_jnt_bbox_db.pkl\n  ```\n\n- Stage1: Train 2D pose only. [model](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1WqW1-_gCyGTB80m9MK_KUoD0dtElEQzv), [log](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1yKwmGD4MURHnDD5536niPjxe-keY3HGs)\n\n```\npython main.py --exp_id mpii\n```\n\n- Stage2: Train on 2D and 3D data without geometry loss (drop LR at 45 epochs). [model](https:\u002F\u002Fdrive.google.com\u002Fopen?id=13d3AqzA85TSO7o1F8aq_ptnAkJ7LSp9-), [log](https:\u002F\u002Fdrive.google.com\u002Fopen?id=18B_aOM9djCHZFlB0Rcoa6zOK1eXvsmRl)\n\n```\npython main.py --exp_id fusion_3d --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --load_model ..\u002Fexp\u002Fmpii\u002Fmodel_last.pth --num_epoch 60 --lr_step 45\n```\n\n- Stage3: Train with geometry loss. [model](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1_2CCb_qsA1egT5c2s0ABuW3rQCDOLvPq), [log](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1hV4V74lTUd3COnoe1XMiTb8EUcyI8obN)\n\n```\npython main.py --exp_id fusion_3d_var --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --weight_var 0.01 --load_model ..\u002Fmodels\u002Ffusion_3d.pth  --num_epoch 10 --lr 1e-4\n```\n\n## Citation\n\n    @InProceedings{Zhou_2017_ICCV,\n    author = {Zhou, Xingyi and Huang, Qixing and Sun, Xiao and Xue, Xiangyang and Wei, Yichen},\n    title = {Towards 3D Human Pose Estimation in the Wild: A Weakly-Supervised Approach},\n    booktitle = {The IEEE International Conference on Computer Vision (ICCV)},\n    month = {Oct},\n    year = {2017}\n    }","# 朝着野外环境下的3D人体姿态估计：一种弱监督方法\n\n本仓库是论文中提出的网络的PyTorch实现：\n\n> Xingyi Zhou, Qixing Huang, Xiao Sun, Xiangyang Xue, Yichen Wei, \n> **朝着野外环境下的3D人体姿态估计：一种弱监督方法**\n> ICCV 2017 ([arXiv:1704.02447](https:\u002F\u002Farxiv.org\u002Fabs\u002F1704.02447))\n\n\u003Cp align=\"center\"> \n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxingyizhou_pytorch-pose-hg-3d_readme_bf4ed7992940.png\" width=\"350\"\u002F>\n\u003C\u002Fp>\n\n**\u003Cspan style=\"color:red\">注意：\u003C\u002Fspan>** 本仓库已更新，与论文中描述的方法有所不同。要完全复现论文中的结果，请检出原始的[torch实现](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpose-hg-3d)或我们的[pytorch重实现分支](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Ftree\u002Fhg3d)（性能略逊于torch版本）。我们还提供了一个干净的[2D hourglass网络分支](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Ftree\u002F2D)。\n\n更新内容包括：\n- 将网络主干改为带有反卷积层的ResNet50（[Xiao等人ECCV2018](https:\u002F\u002Fgithub.com\u002FMicrosoft\u002Fhuman-pose-estimation.pytorch)）。现在训练速度比原来的hourglass网络主干快约3倍（但性能提升不明显）。\n- 将深度回归子网络改为单层深度图（详见我们的[StarMap项目](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002FStarMap)）。\n- 将Human3.6M数据集替换为[ECCV18挑战赛](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fchallenge_open.php)的官方发布版本。\n- 从Python 2.7和PyTorch 0.1.12升级到Python 3.6和PyTorch 0.4.1。\n\n联系方式：[zhouxy2017@gmail.com](mailto:zhouxy2017@gmail.com)\n\n## 安装\n代码已在[Anaconda](https:\u002F\u002Fwww.anaconda.com\u002Fdownload) Python 3.6和[PyTorch]((http:\u002F\u002Fpytorch.org\u002F)) v0.4.1环境下测试通过。安装Anaconda和PyTorch后：\n\n1. 克隆仓库：\n\n    ~~~\n    POSE_ROOT=\u002Fpath\u002Fto\u002Fclone\u002Fpytorch-pose-hg-3d\n    git clone https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d POSE_ROOT\n    ~~~\n\n\n2. 安装依赖项（opencv和progressbar）：\n\n    ~~~\n    conda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fmenpo opencv\n    conda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fauto progress\n    ~~~\n3. 禁用batch_norm的cudnn（参见[issue](https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F16))：\n\n    ~~~\n    # PYTORCH=\u002Fpath\u002Fto\u002Fpytorch\n    # 对于pytorch v0.4.0\n    sed -i \"1194s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n    # 对于pytorch v0.4.1\n    sed -i \"1254s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n    ~~~\n4. 可选：安装tensorboard以可视化训练过程。\n\n    ~~~\n    pip install tensorflow\n    ~~~\n\n## 演示\n- 下载我们预训练的[模型](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1_2CCb_qsA1egT5c2s0ABuW3rQCDOLvPq)并将其移动到`models`目录。\n- 运行`python demo.py --demo \u002Fpath\u002Fto\u002Fimage\u002For\u002Fimage\u002Ffolder [--gpus -1] [--load_model \u002Fpath\u002Fto\u002Fmodel]`。\n\n`--gpus -1`表示使用CPU模式。\n我们在`images\u002F`中提供了示例图片。若要测试您自己的图片，重要的是人物应位于图像中心，且大部分身体部位应在图像范围内。\n\n## 基准测试\n要在Human3.6数据集上测试我们的模型，请运行：\n\n~~~\npython main.py --exp_id test --task human3d --dataset fusion_3d --load_model ..\u002Fmodels\u002Ffusion_3d_var.pth --test --full_test\n~~~\n\n预期结果应为64.55mm。\n\n## 训练\n- 准备训练数据：\n  - 从[MPII数据集](http:\u002F\u002Fhuman-pose.mpi-inf.mpg.de\u002F#download)下载图像及其[标注](https:\u002F\u002Fonedrive.live.com\u002F?authkey=%21AKqtqKs162Z5W7g&id=56B9F9C97F261712%2110696&cid=56B9F9C97F261712)的json格式文件（`train.json`和`val.json`）（来自[Xiao等人ECCV2018](https:\u002F\u002Fgithub.com\u002FMicrosoft\u002Fhuman-pose-estimation.pytorch)）。\n  - 下载[Human3.6M ECCV挑战赛数据集](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fchallenge_open.php)。\n  - 下载[Human3.6数据集的元数据](https:\u002F\u002Fwww.dropbox.com\u002Fsh\u002Fuouev0a1ao84ofd\u002FAADzZChEX3BdM5INGlbe74Pma\u002Fhm36_eccv_challenge?dl=0&subfolder_nav_tracking=1)（2D边界框）（来自[Sun等人ECCV 2018](https:\u002F\u002Fgithub.com\u002FJimmySuen\u002Fintegral-human-pose)）。\n  - 将数据放置到位（或创建符号链接），使数据文件夹结构如下：\n\n  ```\n  ${POSE_ROOT}\n  |-- data\n  `-- |-- mpii\n      `-- |-- annot\n          |   |-- train.json\n          |   |-- valid.json\n          `-- images\n              |-- 000001163.jpg\n              |-- 000003072.jpg\n  `-- |-- h36m\n      `-- |-- ECCV18_Challenge\n          |   |-- Train\n          |   |-- Val\n          `-- msra_cache\n              `-- |-- HM36_eccv_challenge_Train_cache\n                  |   |-- HM36_eccv_challenge_Train_w288xh384_keypoint_jnt_bbox_db.pkl\n                  `-- HM36_eccv_challenge_Val_cache\n                      |-- HM36_eccv_challenge_Val_w288xh384_keypoint_jnt_bbox_db.pkl\n  ```\n\n- 第一阶段：仅训练2D姿态。[模型](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1WqW1-_gCyGTB80m9MK_KUoD0dtElEQzv)，[日志](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1yKwmGD4MURHnDD5536niPjxe-keY3HGs)\n\n```\npython main.py --exp_id mpii\n```\n\n- 第二阶段：在2D和3D数据上训练，不使用几何损失（在第45个epoch时降低学习率）。[模型](https:\u002F\u002Fdrive.google.com\u002Fopen?id=13d3AqzA85TSO7o1F8aq_ptnAkJ7LSp9-)，[日志](https:\u002F\u002Fdrive.google.com\u002Fopen?id=18B_aOM9djCHZFlB0Rcoa6zOK1eXvsmRl)\n\n```\npython main.py --exp_id fusion_3d --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --load_model ..\u002Fexp\u002Fmpii\u002Fmodel_last.pth --num_epoch 60 --lr_step 45\n```\n\n- 第三阶段：使用几何损失进行训练。[模型](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1_2CCb_qsA1egT5c2s0ABuW3rQCDOLvPq)，[日志](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1hV4V74lTUd3COnoe1XMiTb8EUcyI8obN)\n\n```\npython main.py --exp_id fusion_3d_var --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --weight_var 0.01 --load_model ..\u002Fmodels\u002Ffusion_3d.pth  --num_epoch 10 --lr 1e-4\n```\n\n## 引用\n\n    @InProceedings{Zhou_2017_ICCV,\n    author = {Zhou, Xingyi and Huang, Qixing and Sun, Xiao and Xue, Xiangyang and Wei, Yichen},\n    title = {Towards 3D Human Pose Estimation in the Wild: A Weakly-Supervised Approach},\n    booktitle = {The IEEE International Conference on Computer Vision (ICCV)},\n    month = {Oct},\n    year = {2017}\n    }","# pytorch-pose-hg-3d 快速上手指南\n\n本指南基于 Xingyi Zhou 等人提出的弱监督 3D 人体姿态估计方法（ICCV 2017）的 PyTorch 实现。注意：当前仓库版本对原论文方法进行了更新（骨干网络改为 ResNet50），若需完全复现论文结果，请参考原作者提供的 Torch 实现或特定的 PyTorch 分支。\n\n## 环境准备\n\n本项目已在以下环境中测试通过：\n- **操作系统**: Linux (推荐)\n- **Python**: 3.6 (推荐使用 Anaconda 管理)\n- **PyTorch**: v0.4.1\n- **其他依赖**: OpenCV, progressbar\n\n> **注意**：由于项目较老，建议严格匹配 PyTorch 0.4.1 版本以避免兼容性问题。\n\n## 安装步骤\n\n### 1. 克隆代码库\n设置环境变量并克隆仓库：\n```bash\nexport POSE_ROOT=\u002Fpath\u002Fto\u002Fclone\u002Fpytorch-pose-hg-3d\ngit clone https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d $POSE_ROOT\ncd $POSE_ROOT\n```\n\n### 2. 安装依赖\n使用 Conda 安装必要的图像处理进度条库：\n```bash\nconda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fmenpo opencv\nconda install --channel https:\u002F\u002Fconda.anaconda.org\u002Fauto progress\n```\n*(注：国内用户若访问 anaconda 源较慢，可尝试配置清华或中科大镜像源)*\n\n### 3. 修改 PyTorch 源码（关键步骤）\n为了解决 BatchNorm 在特定版本下的 cudnn 兼容性问题，需要手动禁用相关选项。请根据你的 PyTorch 安装路径执行以下命令：\n\n**对于 PyTorch v0.4.1:**\n```bash\n# 请将 ${PYTORCH} 替换为你的实际安装路径，例如：$(python -c \"import torch; print(torch.__path__[0])\")\nsed -i \"1254s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n```\n\n**对于 PyTorch v0.4.0:**\n```bash\nsed -i \"1194s\u002Ftorch\\.backends\\.cudnn\\.enabled\u002FFalse\u002Fg\" ${PYTORCH}\u002Ftorch\u002Fnn\u002Ffunctional.py\n```\n\n### 4. 可选：安装可视化工具\n如需使用 TensorBoard 查看训练过程：\n```bash\npip install tensorflow\n```\n\n## 基本使用\n\n### 运行演示 (Demo)\n最简单的使用方式是加载预训练模型对单张图片或文件夹进行推理。\n\n1. **下载预训练模型**\n   从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Fopen?id=1_2CCb_qsA1egT5c2s0ABuW3rQCDOLvPq) 下载模型文件，并将其移动到项目根目录下的 `models` 文件夹中。\n\n2. **执行推理**\n   运行以下命令（确保输入图片中人物位于中心且身体大部分在画面内）：\n\n```bash\npython demo.py --demo \u002Fpath\u002Fto\u002Fimage\u002For\u002Fimage\u002Ffolder --load_model models\u002Ffusion_3d_var.pth\n```\n\n- 若需在 CPU 模式下运行，添加参数 `--gpus -1`。\n- 示例图片位于项目自带的 `images\u002F` 目录中，可直接测试。\n\n### 简要训练流程\n若需从头训练，需先准备 MPII 数据集和 Human3.6M (ECCV Challenge) 数据集，并按 README 中的目录结构放置数据。训练分为三个阶段：\n\n**阶段 1: 仅训练 2D 姿态**\n```bash\npython main.py --exp_id mpii\n```\n\n**阶段 2: 联合训练 2D 和 3D 数据（无几何损失）**\n```bash\npython main.py --exp_id fusion_3d --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --load_model ..\u002Fexp\u002Fmpii\u002Fmodel_last.pth --num_epoch 60 --lr_step 45\n```\n\n**阶段 3: 加入几何损失微调**\n```bash\npython main.py --exp_id fusion_3d_var --task human3d --dataset fusion_3d --ratio_3d 1 --weight_3d 0.1 --weight_var 0.01 --load_model ..\u002Fmodels\u002Ffusion_3d.pth --num_epoch 10 --lr 1e-4\n```","某智能健身创业团队正在开发一款基于普通摄像头的家庭动作纠正系统，需要实时捕捉用户深蹲、瑜伽等动作的三维骨骼关键点以评估姿态标准度。\n\n### 没有 pytorch-pose-hg-3d 时\n- **缺乏深度信息**：传统 2D 姿态估计只能输出平面坐标，无法判断用户膝盖是否内扣或背部弯曲角度，导致纠错建议不准确。\n- **数据标注成本高昂**：若要训练高精度 3D 模型，需依赖昂贵的专业动捕设备采集数据并人工标注，初创团队难以承担。\n- **推理速度缓慢**：早期开源方案多基于旧版框架（如 Torch），在现有 PyTorch 生态中部署困难，且未经优化的骨干网络导致帧率过低，无法流畅运行。\n- **野外场景适应性差**：模型仅在受控实验室环境下有效，一旦用户背景复杂或光照变化，骨骼点检测极易丢失。\n\n### 使用 pytorch-pose-hg-3d 后\n- **实现真 3D 定位**：利用其弱监督学习架构，直接从单目摄像头图像回归出包含深度信息的 3D 关节坐标，精准识别立体动作偏差。\n- **降低数据门槛**：借助其支持的“弱监督”特性，可联合使用大量易获取的 2D 标注数据（如 MPII）与少量 3D 数据进行训练，大幅缩减数据采集成本。\n- **训练与推理提速**：通过集成 ResNet50 与反卷积层的主干网络，训练速度较原始 Hourglass 结构提升约 3 倍，更易于在消费级显卡上调试与部署。\n- **鲁棒性增强**：针对“野外”场景优化的算法逻辑，使其在用户居家复杂背景下仍能保持较高的关键点检测稳定性。\n\npytorch-pose-hg-3d 通过弱监督学习策略，让低成本单目摄像头也能具备专业级的 3D 动作捕捉能力，显著降低了空间计算应用的落地门槛。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxingyizhou_pytorch-pose-hg-3d_0212f64b.png","xingyizhou","Xingyi Zhou","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fxingyizhou_5a24102f.jpg","Scientist at AMI Labs","AMI Labs","New York","zhouxy2017@gmail.com",null,"xingyizhou.xyz","https:\u002F\u002Fgithub.com\u002Fxingyizhou",[26],{"name":27,"color":28,"percentage":29},"Python","#3572A5",100,613,142,"2026-01-28T10:46:45","GPL-3.0",4,"Linux, macOS","需要 NVIDIA GPU (训练速度提升 3 倍)，具体型号和显存未说明，需支持 CUDA (版本未明确，需匹配 PyTorch 0.4.1)","未说明",{"notes":39,"python":40,"dependencies":41},"代码基于较旧的 PyTorch 0.4.1 版本开发。安装后必须手动修改 PyTorch 源码以禁用 batch_norm 中的 cuDNN，否则运行会出错。若需完全复现论文结果，建议使用旧的 Torch 实现或特定的 hg3d 分支。演示模式支持 CPU 运行 (--gpus -1)。","3.6",[42,43,44,45],"torch==0.4.1","opencv","progressbar","tensorflow (可选，用于可视化)",[47,48],"图像","其他",2,"ready","2026-03-27T02:49:30.150509","2026-04-18T09:19:36.890923",[54,59,64,69,73,78,83],{"id":55,"question_zh":56,"answer_zh":57,"source_url":58},39422,"训练第一阶段最后一个 epoch 时准确率突然大幅下降怎么办？","这是由 cuDNN 在 BatchNorm 层中的问题引起的。解决方法是在 `main.py` 中设置 `torch.backends.cudnn.enabled = False`，这会禁用所有层的 cuDNN，但会使训练速度变慢约 1.5 倍。或者，可以从源码重新编译 PyTorch，修改 BN 层中的 cuDNN 调用（参考 PyTorch 源码相关行）。","https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F16",{"id":60,"question_zh":61,"answer_zh":62,"source_url":63},39423,"如何在没有 GPU（仅 CPU）的机器上运行演示脚本？","如果在仅支持 CPU 的机器上加载模型时遇到 'Attempting to deserialize object on a CUDA device' 错误，需要在加载模型时使用 `map_location='cpu'` 参数将存储映射到 CPU。例如：`torch.load(model_path, map_location='cpu')`。","https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F54",{"id":65,"question_zh":66,"answer_zh":67,"source_url":68},39424,"使用较新版本的 PyTorch 运行时出现 'BatchNorm2d' object has no attribute 'track_running_stats' 错误如何解决？","这是由于 PyTorch 版本升级导致的属性兼容性问题。一个有效的解决方案是在加载模型状态字典时设置 `strict=False` 参数。代码示例：\n```\nckpt = torch.load(model_path)\nmodel = Model(model_args)\nmodel.load_state_dict(ckpt.state_dict(), strict=False)\nmodel.eval()\n```","https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F36",{"id":70,"question_zh":71,"answer_zh":72,"source_url":68},39425,"遇到 'Upsample' object has no attribute 'align_corners' 错误该如何修复？","这是因为新版 PyTorch 中 Upsample 模块的变化。可以尝试手动修改 PyTorch 安装目录下的 `lib\u002Fsite-packages\u002Ftorch\u002Fnn\u002Fmodules\u002Fupsampling.py` 文件（约第 141 行），注释掉或删除 `self.align_corners` 参数，将 forward 函数改为：`return F.interpolate(input, self.size, self.scale_factor, self.mode)`。",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},39426,"如何正确运行测试脚本（demo.py）并使用预训练模型？","首先下载预训练模型并将其移动到 `models` 文件夹。然后进入 `src` 目录，运行命令：`python demo.py -demo \u002Fpath\u002Fto\u002Fimage`。如果需要指定模型路径，可添加参数：`-loadModel \u002Fpath\u002Fto\u002Fmodel`。","https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F13",{"id":79,"question_zh":80,"answer_zh":81,"source_url":82},39427,"如何将模型输出的归一化坐标转换回原始图像坐标系（包括 Z 轴深度）？","对于 X 和 Y 轴，可以使用公式 `new_val = val * original_size \u002F 256` 进行转换。对于 Z 轴（深度），不存在绝对的 z 值，可以使用公式 `(reg + 1) \u002F 2. * 256` 将其转换为与图像坐标系中长宽比一致的深度值（基于弱透视相机模型）。详细解释可参考论文 Section 3.2 (https:\u002F\u002Farxiv.org\u002Fpdf\u002F1803.09331.pdf)。","https:\u002F\u002Fgithub.com\u002Fxingyizhou\u002Fpytorch-pose-hg-3d\u002Fissues\u002F14",{"id":84,"question_zh":85,"answer_zh":86,"source_url":77},39428,"在 Windows 上使用 Python 2 运行代码时遇到编码错误（'ascii' codec can't decode byte）怎么办？","Python 2 在 Windows 上默认使用 ASCII 编码处理字符串，容易导致此类错误。由于 PyTorch 在 Windows 上不支持 Python 2，建议升级到 Python 3 环境。如果必须使用 Python 2，需在代码开头添加编码声明或强制设置默认编码为 UTF-8，但最佳方案是迁移至 Python 3。",[],[89,101,109,117,126,135],{"id":90,"name":91,"github_repo":92,"description_zh":93,"stars":94,"difficulty_score":95,"last_commit_at":96,"category_tags":97,"status":50},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[98,99,47,100],"Agent","开发框架","数据工具",{"id":102,"name":103,"github_repo":104,"description_zh":105,"stars":106,"difficulty_score":95,"last_commit_at":107,"category_tags":108,"status":50},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",[99,47,98],{"id":110,"name":111,"github_repo":112,"description_zh":113,"stars":114,"difficulty_score":49,"last_commit_at":115,"category_tags":116,"status":50},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[99,47,98],{"id":118,"name":119,"github_repo":120,"description_zh":121,"stars":122,"difficulty_score":49,"last_commit_at":123,"category_tags":124,"status":50},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[125,98,47,99],"插件",{"id":127,"name":128,"github_repo":129,"description_zh":130,"stars":131,"difficulty_score":95,"last_commit_at":132,"category_tags":133,"status":50},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[134,47,98,99],"语言模型",{"id":136,"name":137,"github_repo":138,"description_zh":139,"stars":140,"difficulty_score":95,"last_commit_at":141,"category_tags":142,"status":50},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[99,47,98,143],"视频"]