[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-hongsukchoi--Pose2Mesh_RELEASE":3,"tool-hongsukchoi--Pose2Mesh_RELEASE":64},[4,17,26,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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,2,"2026-04-03T11:11:01",[13,14,15],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":23,"last_commit_at":32,"category_tags":33,"status":16},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",[14,34,35,36,15,37,38,13,39],"数据工具","视频","插件","其他","语言模型","音频",{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":16},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",[15,14,13,38,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":16},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",[38,14,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":23,"last_commit_at":62,"category_tags":63,"status":16},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",[13,14],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":94,"forks":95,"last_commit_at":96,"license":97,"difficulty_score":98,"env_os":99,"env_gpu":100,"env_ram":101,"env_deps":102,"category_tags":110,"github_topics":111,"view_count":23,"oss_zip_url":81,"oss_zip_packed_at":81,"status":16,"created_at":121,"updated_at":122,"faqs":123,"releases":159},3366,"hongsukchoi\u002FPose2Mesh_RELEASE","Pose2Mesh_RELEASE","Official Pytorch implementation of \"Pose2Mesh: Graph Convolutional Network for 3D Human Pose and Mesh Recovery from a 2D Human Pose\", ECCV 2020","Pose2Mesh 是一款基于 PyTorch 开发的开源算法，专注于从二维人体姿态精准重建三维人体姿态与网格模型。它主要解决了仅凭单张图片或二维关节点坐标难以还原真实、连贯的三维人体形状这一技术难题，能够输出包含详细几何信息的 SMPL 网格数据。\n\n该工具的核心亮点在于引入了图卷积网络（GCN），将人体结构视为图数据进行建模，从而更有效地捕捉关节间的空间依赖关系，显著提升了重建的准确度与平滑度。项目不仅支持单人处理，还具备多人场景下的检测与重建能力，并提供了将生成的三维网格直接叠加渲染到原图上的演示功能。在 Human3.6M 和 3DPW 等权威基准测试中，Pose2Mesh 均取得了优异的性能表现。\n\nPose2Mesh 非常适合计算机视觉领域的研究人员、AI 开发者以及从事动作捕捉、虚拟数字人制作的专业人士使用。对于希望深入理解三维重建原理或需要在项目中集成高质量人体建模功能的用户来说，这是一个经过学术验证且文档完善的可靠选择。普通用户若具备一定的编程基础，也可通过其提供的预训练模型快速体验从平面姿态到立体模型的转换效果。","# Pose2Mesh: Graph Convolutional Network for 3D Human Pose and Mesh Recovery from a 2D Human Pose\n![pose to mesh](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_c6dcc2a5cf6b.png)\n![quality results](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_283e01b348b2.png)\n\n## News\n- Update 21.04.27: Update PoseFix code and AMASS dataloader. Lowered PA-MPJPE, MPVPE on 3DPW!\n- Update 21.04.09: Update 3DPW evaluation code. Add temporal smoothing code and PA-MPVPE calculation code. They are commented for faster evaluation, but you can uncomment them in `evaluate` function of `${ROOT}\u002Fdata\u002FPW3D\u002Fdataset.py`. \n- Update 21.04.09: Add demo on multiple people, and make a rendered mesh be overlayed on an input image\n- Update 20.11.016: Increased accuracy on 3DPW using DarkPose 2D pose outputs.\n\n## Introduction\nThis repository is the offical [Pytorch](https:\u002F\u002Fpytorch.org\u002F) implementation of [Pose2Mesh: Graph Convolutional Network for 3D Human Pose and Mesh Recovery from a 2D Human Pose (ECCV 2020)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09047). Below is the overall pipeline of Pose2Mesh.\n![overall pipeline](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_854e76837e26.png)\n\n\n## Install Guidelines\n- We recommend you to use an [Anaconda](https:\u002F\u002Fwww.anaconda.com\u002F) virtual environment. Install [PyTorch](https:\u002F\u002Fpytorch.org\u002F) >= 1.2 according to your GPU driver and Python >= 3.7.2, and run `sh requirements.sh`. \n\n\n## Quick Demo\n- Download the pre-trained Pose2Mesh according to [this](#pretrained-model-weights).\n- Prepare SMPL and MANO layers according to [this](#pytorch-smpl-and-mano-layer).\n- Prepare a pose input, for instance, as `input.npy`. `input.npy` should contain the coordinates of 2D human joints, which follow the topology of joint sets defined [here](#start). The joint orders can be found in each `${ROOT}\u002Fdata\u002F*\u002Fdataset.py`.\n### Demo on a Single Person\n- Run `python demo\u002Frun.py --gpu 0 --input_pose demo\u002Fh36m_joint_input.npy --joint_set human36`.\n- You can replace `demo\u002Fh36m_joint_input.npy` and `human36` with your input numpy file and one of `{human36,coco,smpl,mano}`.\n- Add `--input_img {img_path}` on the command if you want to a rendered mesh overlayed on an input image.\n- The outputs `demo_pose2d.png`, `demo_mesh.png`, and `demo_mesh_.obj` will be saved in `${ROOT}\u002Fdemo\u002Fresult\u002F`.\n### Demo on Multiple People\n- Download demo input from [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1RO7B_P4Y8Wg9AAvz08-6_iR7Vssjv4dG?usp=drive_link) and place them under `${ROOT}\u002Fdemo\u002F`.\n- Run `python demo\u002Frun.py --gpu 0`.\n- Outputs on a sampled image from [CrowdPose datasest](https:\u002F\u002Fgithub.com\u002FMVIG-SJTU\u002FAlphaPose\u002Fblob\u002Fpytorch\u002Fdoc\u002FCrowdPose.md) will be saved in `${ROOT}\u002Fdemo\u002Fresult\u002F`.\n- You can change an input image and some details in lines 264~278 of `${ROOT}\u002Fdemo\u002Frun.py`.\n\n## Results\nHere I report the performance of Pose2Mesh.\n\n:muscle: __Update:__ We increased the performance on 3DPW using GT meshes obtained from [NeuralAnnot](https:\u002F\u002Farxiv.org\u002Fabs\u002F2011.11232) on COCO and AMASS. The annotations from NeuralAnnot are yet to be released.  \n:muscle: __Update:__ The performance on 3DPW has increased using [DarkPose](https:\u002F\u002Fgithub.com\u002Filovepose\u002FDarkPose) 2D detection, which improved [HRNet](https:\u002F\u002Fgithub.com\u002Fleoxiaobin\u002Fdeep-high-resolution-net.pytorch).\n\n![table](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_48f75d0618ba.png)\n\nBelow shows the results when the input is **groundtruth** 2D human poses.\nFor Human3.6M benchmark, Pose2Mesh is trained on Human3.6M.\nFor 3DPW benchmark, Pose2Mesh is trained on Human3.6M and COCO.\n\n| | MPJPE | PA-MPJPE |\n|:---:|:---:|:---:|\n| Human36M | 51.28 mm | 35.61 mm |\n| 3DPW | 63.10 mm | 35.37 mm |\n\nWe provide qualitative results on SURREAL to show that Pose2Mesh can recover 3D shape to some degree.\nPlease refer to the [paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09047) for more discussion.\n\n![surreal quality results](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_4026e635a1b3.png)\n## Directory\n\n### Root\n\nThe `${ROOT}` is described as below.\n\n```\n${ROOT} \n|-- data\n|-- demo\n|-- lib\n|-- experiment\n|-- main\n|-- manopth\n|-- smplpytorch\n```\n- `data` contains data loading codes and soft links to images and annotations directories.\n- `demo` contains demo codes.\n- `lib` contains kernel codes for Pose2Mesh.\n- `main` contains high-level codes for training or testing the network.\n- `experiment` contains the outputs of the system, whic include train logs, trained model weights, and visualized outputs.\n\n### Data\n\nThe `data` directory structure should follow the below hierarchy.\n```\n${ROOT}  \n|-- data  \n|   |-- Human36M  \n|   |   |-- images  \n|   |   |-- annotations   \n|   |   |-- J_regressor_h36m_correct.npy\n|   |   |-- absnet_output_on_testset.json \n|   |-- MuCo  \n|   |   |-- data  \n|   |   |   |-- augmented_set  \n|   |   |   |-- unaugmented_set  \n|   |   |   |-- MuCo-3DHP.json\n|   |   |   |-- smpl_param.json\n|   |-- COCO  \n|   |   |-- images  \n|   |   |   |-- train2017  \n|   |   |   |-- val2017  \n|   |   |-- annotations  \n|   |   |-- J_regressor_coco.npy\n|   |   |-- hrnet_output_on_valset.json\n|   |-- PW3D \n|   |   |-- data\n|   |   |   |-- 3DPW_latest_train.json\n|   |   |   |-- 3DPW_latest_validation.json\n|   |   |   |-- darkpose_3dpw_testset_output.json\n|   |   |   |-- darkpose_3dpw_validationset_output.json\n|   |   |-- imageFiles\n|   |-- AMASS\n|   |   |-- data\n|   |   |   |-- cmu\n|   |-- SURREAL\n|   |   |-- data\n|   |   |   |-- train.json\n|   |   |   |-- val.json\n|   |   |   |-- hrnet_output_on_testset.json\n|   |   |   |-- simple_output_on_testset.json\n|   |   |-- images\n|   |   |   |-- train\n|   |   |   |-- test\n|   |   |   |-- val\n|   |-- FreiHAND\n|   |   |-- data\n|   |   |   |-- training\n|   |   |   |-- evaluation\n|   |   |   |-- freihand_train_coco.json\n|   |   |   |-- freihand_train_data.json\n|   |   |   |-- freihand_eval_coco.json\n|   |   |   |-- freihand_eval_data.json\n|   |   |   |-- hrnet_output_on_testset.json\n|   |   |   |-- simple_output_on_testset.json\n```\n- Download Human3.6M parsed data and SMPL parameters [[data](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1r0B9I3XxIIW_jsXjYinDpL6NFcxTZart?usp=share_link)][[SMPL parameters from SMPLify-X](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F12fCumEgs9PXT-dAaOGq0EDpl9dGKKorF?usp=share_link)]\n- Download MuCo parsed\u002Fcomposited data and SMPL parameters [[data](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1dfhFa1kBHYKLTKuprNc7xixt3yyKEky5?usp=share_link)][[SMPL parameters from SMPLify-X](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1Wm1_6tn1u-_RE1iUlibIWfS75O79aJRz?usp=share_link)] \n- Download COCO SMPL parameters [[SMPL parameters from SMPLify](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1hJabUWLOMboM2sUhIj0ep6wiRsO3Kh4C?usp=sharing)]  \n- Download AMASS SMPL parameters [[offical site](https:\u002F\u002Famass.is.tue.mpg.de\u002F)]\n- Download SURREAL parsed data [[data](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19zb70WOc-5aJ1p_bHP_04milMYpO83P_?usp=sharing)] \n- Download 3DPW parsed data [[data](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1_wi6G6h-JFfb9HGccysJwI02zc_S2DVJ?usp=sharing)]\n- Download FreiHAND parsed data [[data](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1pDix5i-nv0A3Hq98AR1jZrufByAZHHFP?usp=sharing)] (`bbox` in `freihand_eval_coco.json` is from [Detectron2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetectron2))\n- All annotation files follow [MS COCO format](https:\u002F\u002Fcocodataset.org\u002F#format-data).\n- If you want to add your own dataset, you have to convert it to [MS COCO format](https:\u002F\u002Fcocodataset.org\u002F#format-data).\n- Images need to to be downloaded, but if needed you can download them from their offical sites.\n- 2D pose detection outputs can be downloaded here: [Human36M](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1YjACLyfm7V-cUIXr1b8SWJzmKtuhpOCp?usp=sharing), [COCO](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19HyI1ENxF0fKV5xXKqXTRLcc-QJJazMP?usp=sharing), [3DPW](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1fgliGqMgQwy6zAoUEZHayq4IySNlyqib?usp=sharing), [SURREAL](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1ePJQnyZlRk78n4Szt_M-CLJ27w7C9H-G?usp=sharing), [FreiHAND](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1YwTzECET2N9D-ESnShGBMbb6rqWT5dkK?usp=sharing)\n\nIf you have a problem with 'download limit' when trying to download datasets from google drive links, please try this trick.\n>* Go the shared folder, which contains files you want to copy to your drive  \n>* Select all the files you want to copy  \n>* In the upper right corner click on three vertical dots and select “make a copy”  \n>* Then, the file is copied to your personal google drive account. You can download it from your personal account.  \n\n### Pytorch SMPL and MANO layer\n\n- For the SMPL layer, I used [smplpytorch](https:\u002F\u002Fgithub.com\u002Fgulvarol\u002Fsmplpytorch). The repo is already included in `${ROOT}\u002Fsmplpytorch`.\n- Download `basicModel_f_lbs_10_207_0_v1.0.0.pkl`, `basicModel_m_lbs_10_207_0_v1.0.0.pkl`, and `basicModel_neutral_lbs_10_207_0_v1.0.0.pkl` from [here](https:\u002F\u002Fsmpl.is.tue.mpg.de\u002Fdownload.php) (female & male) and [here](http:\u002F\u002Fsmplify.is.tue.mpg.de\u002F) (neutral) to `${ROOT}\u002Fsmplpytorch\u002Fsmplpytorch\u002Fnative\u002Fmodels`.\nFor the MANO layer, I used [manopth](https:\u002F\u002Fgithub.com\u002Fhassony2\u002Fmanopth). The repo is already included in `${ROOT}\u002Fmanopth`.\nDownload `MANO_RIGHT.pkl` from [here](https:\u002F\u002Fmano.is.tue.mpg.de) at `${ROOT}\u002Fmanopth\u002Fmano\u002Fmodels`.\n\n### Experiment\n\nThe `experiment` directory will be created as below.\n```\n${ROOT}  \n|-- experiment  \n|   |-- exp_*  \n|   |   |-- checkpoint  \n|   |   |-- graph \n|   |   |-- vis \n```\n\n- `experiment` contains train\u002Ftest results of Pose2Mesh on various benchmark datasets.\nWe recommed you to create the folder as a soft link to a directory with large storage capacity.\n\n- `exp_*` is created for each train\u002Ftest command. \nThe wildcard symbol refers to the time of the experiment train\u002Ftest started.\nDefault timezone is UTC+9, but you can set to your local time.\n\n- `checkpoint` contains the model checkpoints for each epoch. \n\n- `graph` contains visualized train logs of error and loss. \n\n- `vis` contains `*.obj` files of meshes and images with 2D human poses or human meshes. \n\n### Pretrained model weights\nDownload pretrained model weights from [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1TbKc8tLq1hLcTS_-F1OjkJZYIZbJ6XUh?usp=sharing) to a corresponding directory.\n```\n${ROOT}  \n|-- experiment  \n|   |-- posenet_human36J_train_human36 \n|   |-- posenet_cocoJ_train_human36_coco_muco\n|   |-- posenet_smplJ_train_surreal\n|   |-- posenet_manoJ_train_freihand\n|   |-- pose2mesh_human36J_train_human36\n|   |-- pose2mesh_cocoJ_train_human36_coco_muco\n|   |-- pose2mesh_smplJ_train_surreal\n|   |-- pose2mesh_manoJ_train_freihand\n|   |-- posenet_human36J_gt_train_human36\n|   |-- posenet_cocoJ_gt_train_human36_coco\n|   |-- pose2mesh_human36J_gt_train_human36\n|   |-- pose2mesh_cocoJ_gt_train_human36_coco\n```\n\n## Running Pose2Mesh\n\n![joint set topology](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_03811f29c540.png)\n\n### Start\n- Pose2Mesh uses different joint sets from Human3.6M, COCO, SMPL, and MANO for Human3.6M, 3DPW, SURREAL, and FreiHAND benchmarks respectively. For the COCO joint set, we manually add 'Pelvis' and 'Neck' joints by computing the middle point of 'L_Hip' and 'R_Hip', and 'L_Shoulder' and 'R_Shoulder' respectively.\n- In the `lib\u002Fcore\u002Fconfig.py`, you can change settings of the system including a train\u002Ftest dataset to use, a pre-defined joint set, a pre-trained PoseNet, a learning schedule, GT usage, and so on. \n- Note that the first dataset on the `DATASET.{train\u002Ftest}_list` should call `build_coarse_graphs` function for the graph convolution setting. Refer to the last line of `__init__` function in `${ROOT}\u002Fdata\u002FHuman36M\u002Fdataset.py`. \n\n\n### Train\n\nSelect the config file in `${ROOT}\u002Fasset\u002Fyaml\u002F` and train. You can change the train set and pretrained posenet by your own `*.yml` file. \n\n**1. Pre-train PoseNet**\n\nTo train from the scratch, you should pre-train PoseNet first.\n\nRun\n```\npython main\u002Ftrain.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002Fposenet_{input joint set}_train_{dataset list}.yml\n```\n\n**2. Train Pose2Mesh**\n\nCopy `best.pth.tar` in `${ROOT}\u002Fexperiment\u002Fexp_*\u002Fcheckpoint\u002F` to `${ROOT}\u002Fexperiment\u002Fposenet_{input joint set}_train_{dataset list}\u002F`. Or download the pretrained weights following [this](#pretrained-model-weights).\n\nRun\n```\npython main\u002Ftrain.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002Fpose2mesh_{input joint set}_train_{dataset list}.yml\n```\n\n\n### Test\n\nSelect the config file in `${ROOT}\u002Fasset\u002Fyaml\u002F` and test. You can change the pretrained model weight. To save sampled outputs to `obj` files, change `TEST.vis` value to `True` in the config file.\n\nRun\n```\npython main\u002Ftest.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002F{model name}_{input joint set}_test_{dataset name}.yml\n```\n\n### Reference\n```\n@InProceedings{Choi_2020_ECCV_Pose2Mesh,  \nauthor = {Choi, Hongsuk and Moon, Gyeongsik and Lee, Kyoung Mu},  \ntitle = {Pose2Mesh: Graph Convolutional Network for 3D Human Pose and Mesh Recovery from a 2D Human Pose},  \nbooktitle = {European Conference on Computer Vision (ECCV)},  \nyear = {2020}  \n}  \n```\n\n### Related Projects\n\n[I2L-MeshNet_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FI2L-MeshNet_RELEASE)  \n[3DCrowdNet_RELEASE](https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002F3DCrowdNet_RELEASE)  \n[TCMR_RELEASE](https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FTCMR_RELEASE)  \n[Hand4Whole_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FHand4Whole_RELEASE)  \n[HandOccNet](https:\u002F\u002Fgithub.com\u002Fnamepllet\u002FHandOccNet)  \n[NeuralAnnot_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FNeuralAnnot_RELEASE)\n","# Pose2Mesh：基于图卷积网络的从2D人体姿态恢复3D人体姿态与网格模型\n![pose to mesh](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_c6dcc2a5cf6b.png)\n![quality results](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_283e01b348b2.png)\n\n## 最新动态\n- 2021年4月27日更新：更新了PoseFix代码和AMASS数据加载器。在3DPW数据集上的PA-MPJPE和MPVPE指标有所降低！\n- 2021年4月9日更新：更新了3DPW评估代码。新增了时间平滑代码和PA-MPVPE计算代码。这些代码目前被注释掉以加快评估速度，但你可以在`${ROOT}\u002Fdata\u002FPW3D\u002Fdataset.py`文件中的`evaluate`函数里取消注释。\n- 2021年4月9日更新：增加了多人场景的演示，并将渲染出的网格模型叠加到输入图像上。\n- 2020年11月16日更新：使用DarkPose生成的2D人体姿态输出，在3DPW数据集上的精度有所提升。\n\n## 简介\n本仓库是[Pose2Mesh：基于图卷积网络的从2D人体姿态恢复3D人体姿态与网格模型（ECCV 2020）](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09047)的官方PyTorch实现。以下是Pose2Mesh的整体流程。\n![overall pipeline](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_854e76837e26.png)\n\n\n## 安装指南\n- 我们建议使用Anaconda虚拟环境。根据你的GPU驱动和Python版本（>=3.7.2），安装PyTorch >= 1.2，并运行`sh requirements.sh`。\n\n\n## 快速演示\n- 根据[此处](#pretrained-model-weights)下载预训练的Pose2Mesh模型。\n- 根据[此处](#pytorch-smpl-and-mano-layer)准备SMPL和MANO层。\n- 准备一个姿态输入，例如`input.npy`。`input.npy`应包含2D人体关节的坐标，其拓扑结构遵循[此处](#start)定义的关节集合。关节顺序可在每个`${ROOT}\u002Fdata\u002F*\u002Fdataset.py`文件中找到。\n### 单人场景演示\n- 运行`python demo\u002Frun.py --gpu 0 --input_pose demo\u002Fh36m_joint_input.npy --joint_set human36`。\n- 你可以将`demo\u002Fh36m_joint_input.npy`和`human36`替换为你自己的输入Numpy文件以及`{human36,coco,smpl,mano}`中的任一选项。\n- 如果希望将渲染的网格模型叠加到输入图像上，可在命令中添加`--input_img {img_path}`。\n- 输出文件`demo_pose2d.png`、`demo_mesh.png`和`demo_mesh_.obj`将保存在`${ROOT}\u002Fdemo\u002Fresult\u002F`目录下。\n### 多人场景演示\n- 从[这里](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1RO7B_P4Y8Wg9AAvz08-6_iR7Vssjv4dG?usp=drive_link)下载演示输入文件，并将其放置在`${ROOT}\u002Fdemo\u002F`目录下。\n- 运行`python demo\u002Frun.py --gpu 0`。\n- 对来自[CrowdPose数据集](https:\u002F\u002Fgithub.com\u002FMVIG-SJTU\u002FAlphaPose\u002Fblob\u002Fpytorch\u002Fdoc\u002FCrowdPose.md)的一张示例图像的输出将保存在`${ROOT}\u002Fdemo\u002Fresult\u002F`目录下。\n- 你可以更改输入图像以及`${ROOT}\u002Fdemo\u002Frun.py`文件第264至278行中的部分细节。\n\n## 结果\n以下报告了Pose2Mesh的性能表现。\n\n:muscle: __更新：__ 我们利用从NeuralAnnot（https:\u002F\u002Farxiv.org\u002Fabs\u002F2011.11232）获取的COCO和AMASS数据集上的GT网格模型，在3DPW数据集上的性能得到了提升。NeuralAnnot的标注数据尚未公开。\n:muscle: __更新：__ 使用[DarkPose](https:\u002F\u002Fgithub.com\u002Filovepose\u002FDarkPose)的2D检测结果后，3DPW数据集上的性能进一步提升，这得益于HRNet（https:\u002F\u002Fgithub.com\u002Fleoxiaobin\u002Fdeep-high-resolution-net.pytorch）的改进。\n\n![table](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_48f75d0618ba.png)\n\n下表展示了当输入为**真实标注**的2D人体姿态时的结果。\n对于Human3.6M基准测试，Pose2Mesh是在Human3.6M数据集上进行训练的。\n对于3DPW基准测试，Pose2Mesh则是在Human3.6M和COCO数据集上进行训练的。\n\n| | MPJPE | PA-MPJPE |\n|:---:|:---:|:---:|\n| Human36M | 51.28 mm | 35.61 mm |\n| 3DPW | 63.10 mm | 35.37 mm |\n\n我们还在SURREAL数据集上提供了定性结果，以展示Pose2Mesh能够在一定程度上恢复3D形状。\n更多讨论请参阅[论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09047)。\n\n![surreal quality results](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_4026e635a1b3.png)\n## 目录结构\n\n### 根目录\n\n`${ROOT}`的目录结构如下所示：\n\n```\n${ROOT} \n|-- data\n|-- demo\n|-- lib\n|-- experiment\n|-- main\n|-- manopth\n|-- smplpytorch\n```\n- `data`目录包含数据加载代码以及指向图像和标注目录的软链接。\n- `demo`目录包含演示代码。\n- `lib`目录包含Pose2Mesh的核心代码。\n- `main`目录包含用于训练或测试网络的高层代码。\n- `experiment`目录存储系统的输出，包括训练日志、训练好的模型权重以及可视化结果。\n\n### 数据\n\n`data` 目录的结构应遵循以下层次：\n```\n${ROOT}  \n|-- data  \n|   |-- Human36M  \n|   |   |-- images  \n|   |   |-- annotations   \n|   |   |-- J_regressor_h36m_correct.npy\n|   |   |-- absnet_output_on_testset.json \n|   |-- MuCo  \n|   |   |-- data  \n|   |   |   |-- augmented_set  \n|   |   |   |-- unaugmented_set  \n|   |   |   |-- MuCo-3DHP.json\n|   |   |   |-- smpl_param.json\n|   |-- COCO  \n|   |   |-- images  \n|   |   |   |-- train2017  \n|   |   |   |-- val2017  \n|   |   |-- annotations  \n|   |   |-- J_regressor_coco.npy\n|   |   |-- hrnet_output_on_valset.json\n|   |-- PW3D \n|   |   |-- data\n|   |   |   |-- 3DPW_latest_train.json\n|   |   |   |-- 3DPW_latest_validation.json\n|   |   |   |-- darkpose_3dpw_testset_output.json\n|   |   |   |-- darkpose_3dpw_validationset_output.json\n|   |   |-- imageFiles\n|   |-- AMASS\n|   |   |-- data\n|   |   |   |-- cmu\n|   |-- SURREAL\n|   |   |-- data\n|   |   |   |-- train.json\n|   |   |   |-- val.json\n|   |   |   |-- hrnet_output_on_testset.json\n|   |   |   |-- simple_output_on_testset.json\n|   |   |-- images\n|   |   |   |-- train\n|   |   |   |-- test\n|   |   |   |-- val\n|   |-- FreiHAND\n|   |   |-- data\n|   |   |   |-- training\n|   |   |   |-- evaluation\n|   |   |   |-- freihand_train_coco.json\n|   |   |   |-- freihand_train_data.json\n|   |   |   |-- freihand_eval_coco.json\n|   |   |   |-- freihand_eval_data.json\n|   |   |   |-- hrnet_output_on_testset.json\n|   |   |   |-- simple_output_on_testset.json\n```\n- 下载 Human3.6M 解析数据和 SMPL 参数 [[数据](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1r0B9I3XxIIW_jsXjYinDpL6NFcxTZart?usp=share_link)][[SMPL 参数来自 SMPLify-X](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F12fCumEgs9PXT-dAaOGq0EDpl9dGKKorF?usp=share_link)]\n- 下载 MuCo 解析\u002F合成数据和 SMPL 参数 [[数据](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1dfhFa1kBHYKLTKuprNc7xixt3yyKEky5?usp=share_link)][[SMPL 参数来自 SMPLify-X](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1Wm1_6tn1u-_RE1iUlibIWfS75O79aJRz?usp=share_link)] \n- 下载 COCO 的 SMPL 参数 [[SMPL 参数来自 SMPLify](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1hJabUWLOMboM2sUhIj0ep6wiRsO3Kh4C?usp=sharing)]  \n- 下载 AMASS 的 SMPL 参数 [[官方网站](https:\u002F\u002Famass.is.tue.mpg.de\u002F)]\n- 下载 SURREAL 的解析数据 [[数据](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19zb70WOc-5aJ1p_bHP_04milMYpO83P_?usp=sharing)] \n- 下载 3DPW 的解析数据 [[数据](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1_wi6G6h-JFfb9HGccysJwI02zc_S2DVJ?usp=sharing)]\n- 下载 FreiHAND 的解析数据 [[数据](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1pDix5i-nv0A3Hq98AR1jZrufByAZHHFP?usp=sharing)]（`freihand_eval_coco.json` 中的 `bbox` 来自 [Detectron2](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetectron2)）\n- 所有标注文件均遵循 [MS COCO 格式](https:\u002F\u002Fcocodataset.org\u002F#format-data)。\n- 如果您想添加自己的数据集，必须将其转换为 [MS COCO 格式](https:\u002F\u002Fcocodataset.org\u002F#format-data)。\n- 图像需要下载，但如果需要，也可以从其官方网站下载。\n- 2D 姿势检测输出可在此下载：[Human36M](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1YjACLyfm7V-cUIXr1b8SWJzmKtuhpOCp?usp=sharing)、[COCO](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19HyI1ENxF0fKV5xXKqXTRLcc-QJJazMP?usp=sharing)、[3DPW](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1fgliGqMgQwy6zAoUEZHayq4IySNlyqib?usp=sharing)、[SURREAL](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1ePJQnyZlRk78n4Szt_M-CLJ27w7C9H-G?usp=sharing)、[FreiHAND](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1YwTzECET2N9D-ESnShGBMbb6rqWT5dkK?usp=sharing)\n\n如果您在尝试从 Google Drive 链接下载数据集时遇到“下载限制”问题，请尝试以下方法：\n>* 进入包含您想要复制到自己驱动器的文件的共享文件夹  \n>* 选择所有您想要复制的文件  \n>* 在右上角点击三个竖直点，然后选择“制作副本”  \n>* 此后，文件将被复制到您的个人 Google Drive 账户。您可以从个人账户下载它。\n\n### Pytorch SMPL 和 MANO 层\n\n- 对于 SMPL 层，我使用了 [smplpytorch](https:\u002F\u002Fgithub.com\u002Fgulvarol\u002Fsmplpytorch)。该仓库已包含在 `${ROOT}\u002Fsmplpytorch` 中。\n- 从 [这里](https:\u002F\u002Fsmpl.is.tue.mpg.de\u002Fdownload.php)（女性和男性）以及 [这里](http:\u002F\u002Fsmplify.is.tue.mpg.de\u002F)（中性）下载 `basicModel_f_lbs_10_207_0_v1.0.0.pkl`、`basicModel_m_lbs_10_207_0_v1.0.0.pkl` 和 `basicModel_neutral_lbs_10_207_0_v1.0.0.pkl`，并将其放置在 `${ROOT}\u002Fsmplpytorch\u002Fsmplpytorch\u002Fnative\u002Fmodels` 中。\n对于 MANO 层，我使用了 [manopth](https:\u002F\u002Fgithub.com\u002Fhassony2\u002Fmanopth)。该仓库已包含在 `${ROOT}\u002Fmanopth` 中。\n从 [这里](https:\u002F\u002Fmano.is.tue.mpg.de) 下载 `MANO_RIGHT.pkl`，并将其放置在 `${ROOT}\u002Fmanopth\u002Fmano\u002Fmodels` 中。\n\n### 实验\n\n`experiment` 目录将按如下方式创建：\n```\n${ROOT}  \n|-- experiment  \n|   |-- exp_*  \n|   |   |-- checkpoint  \n|   |   |-- graph \n|   |   |-- vis \n```\n\n- `experiment` 包含 Pose2Mesh 在各种基准数据集上的训练\u002F测试结果。\n我们建议您将该文件夹创建为指向具有大存储容量目录的软链接。\n\n- `exp_*` 是为每个训练\u002F测试命令创建的。\n通配符表示实验训练\u002F测试开始的时间。\n默认时区为 UTC+9，但您可以设置为您当地的时区。\n\n- `checkpoint` 包含每个 epoch 的模型检查点。\n\n- `graph` 包含误差和损失的可视化训练日志。\n\n- `vis` 包含网格的 `*.obj` 文件以及带有 2D 人体姿态或人体网格的图像。\n\n### 预训练模型权重\n从 [这里](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1TbKc8tLq1hLcTS_-F1OjkJZYIZbJ6XUh?usp=sharing) 下载预训练模型权重，并将其放置在相应的目录中。\n```\n${ROOT}  \n|-- experiment  \n|   |-- posenet_human36J_train_human36 \n|   |-- posenet_cocoJ_train_human36_coco_muco\n|   |-- posenet_smplJ_train_surreal\n|   |-- posenet_manoJ_train_freihand\n|   |-- pose2mesh_human36J_train_human36\n|   |-- pose2mesh_cocoJ_train_human36_coco_muco\n|   |-- pose2mesh_smplJ_train_surreal\n|   |-- pose2mesh_manoJ_train_freihand\n|   |-- posenet_human36J_gt_train_human36\n|   |-- posenet_cocoJ_gt_train_human36_coco\n|   |-- pose2mesh_human36J_gt_train_human36\n|   |-- pose2mesh_cocoJ_gt_train_human36_coco\n```\n\n## 运行 Pose2Mesh\n\n![关节集合拓扑](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_readme_03811f29c540.png)\n\n### 开始\n- Pose2Mesh 分别为 Human3.6M、3DPW、SURREAL 和 FreiHAND 基准使用了与 Human3.6M、COCO、SMPL 和 MANO 不同的关节点集。对于 COCO 关节点集，我们通过计算 'L_Hip' 和 'R_Hip' 的中点以及 'L_Shoulder' 和 'R_Shoulder' 的中点，手动添加了 'Pelvis' 和 'Neck' 关节。\n- 在 `lib\u002Fcore\u002Fconfig.py` 中，您可以更改系统的各项设置，包括要使用的训练\u002F测试数据集、预定义的关节点集、预训练的 PoseNet 模型、学习率调度策略、是否使用真值标注等。\n- 请注意，`DATASET.{train\u002Ftest}_list` 中的第一个数据集应调用 `build_coarse_graphs` 函数以进行图卷积设置。请参考 `${ROOT}\u002Fdata\u002FHuman36M\u002Fdataset.py` 文件中 `__init__` 函数的最后一行。\n\n\n### 训练\n\n在 `${ROOT}\u002Fasset\u002Fyaml\u002F` 目录下选择配置文件并开始训练。您也可以通过自定义的 `*.yml` 文件来更改训练数据集和预训练的 PoseNet 模型。\n\n**1. 预训练 PoseNet**\n\n如果从零开始训练，您需要先预训练 PoseNet。\n\n运行以下命令：\n```\npython main\u002Ftrain.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002Fposenet_{输入关节点集}_train_{数据集列表}.yml\n```\n\n**2. 训练 Pose2Mesh**\n\n将 `${ROOT}\u002Fexperiment\u002Fexp_*\u002Fcheckpoint\u002F` 目录下的 `best.pth.tar` 文件复制到 `${ROOT}\u002Fexperiment\u002Fposenet_{输入关节点集}_train_{数据集列表}\u002F` 目录下。或者按照 [此处](#pretrained-model-weights) 的说明下载预训练权重。\n\n运行以下命令：\n```\npython main\u002Ftrain.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002Fpose2mesh_{输入关节点集}_train_{数据集列表}.yml\n```\n\n\n### 测试\n\n在 `${ROOT}\u002Fasset\u002Fyaml\u002F` 目录下选择配置文件并进行测试。您可以更改预训练模型的权重。若要将采样输出保存为 `obj` 文件，请在配置文件中将 `TEST.vis` 的值改为 `True`。\n\n运行以下命令：\n```\npython main\u002Ftest.py --gpu 0,1,2,3 --cfg .\u002Fasset\u002Fyaml\u002F{模型名称}_{输入关节点集}_test_{数据集名称}.yml\n```\n\n\n### 参考文献\n```\n@InProceedings{Choi_2020_ECCV_Pose2Mesh,  \nauthor = {Choi, Hongsuk and Moon, Gyeongsik and Lee, Kyoung Mu},  \ntitle = {Pose2Mesh: Graph Convolutional Network for 3D Human Pose and Mesh Recovery from a 2D Human Pose},  \nbooktitle = {欧洲计算机视觉大会 (ECCV)},  \nyear = {2020}  \n}  \n```\n\n### 相关项目\n\n[I2L-MeshNet_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FI2L-MeshNet_RELEASE)  \n[3DCrowdNet_RELEASE](https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002F3DCrowdNet_RELEASE)  \n[TCMR_RELEASE](https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FTCMR_RELEASE)  \n[Hand4Whole_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FHand4Whole_RELEASE)  \n[HandOccNet](https:\u002F\u002Fgithub.com\u002Fnamepllet\u002FHandOccNet)  \n[NeuralAnnot_RELEASE](https:\u002F\u002Fgithub.com\u002Fmks0601\u002FNeuralAnnot_RELEASE)","# Pose2Mesh 快速上手指南\n\nPose2Mesh 是一个基于图卷积网络（GCN）的开源项目，用于从 2D 人体姿态恢复 3D 人体姿态和网格（Mesh）。本项目基于 PyTorch 实现，支持单人及多人场景。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐)\n*   **Python**: >= 3.7.2\n*   **PyTorch**: >= 1.2 (请根据您的 GPU 驱动版本安装对应的 CUDA 版本)\n*   **包管理工具**: 推荐使用 [Anaconda](https:\u002F\u002Fwww.anaconda.com\u002F) 创建虚拟环境。\n\n**国内加速建议**：\n在安装 PyTorch 或 Python 包时，建议使用清华源或阿里源以加快下载速度。\n```bash\n# 示例：使用清华源安装 pytorch (请根据官网选型替换具体版本命令)\npip install torch torchvision torchaudio -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 安装步骤\n\n### 1. 创建虚拟环境并安装依赖\n建议使用 Anaconda 创建独立环境，然后运行项目提供的安装脚本。\n\n```bash\n# 创建虚拟环境 (示例)\nconda create -n pose2mesh python=3.8\nconda activate pose2mesh\n\n# 安装 PyTorch (请务必前往 pytorch.org 根据您的显卡选择正确命令)\n# conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch\n\n# 克隆仓库并进入目录\ngit clone https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE.git\ncd Pose2Mesh_RELEASE\n\n# 运行依赖安装脚本\nsh requirements.sh\n```\n\n### 2. 准备模型文件 (SMPL & MANO)\nPose2Mesh 依赖 SMPL 和 MANO 层进行网格重建，需手动下载模型参数文件并放置到指定目录。\n\n*   **SMPL 模型**:\n    下载 `basicModel_f_lbs_10_207_0_v1.0.0.pkl`, `basicModel_m_lbs_10_207_0_v1.0.0.pkl` (来自 [SMPL 官网](https:\u002F\u002Fsmpl.is.tue.mpg.de)) 和 `basicModel_neutral_lbs_10_207_0_v1.0.0.pkl` (来自 [SMPLify 官网](http:\u002F\u002Fsmplify.is.tue.mpg.de))。\n    将文件放入：`${ROOT}\u002Fsmplpytorch\u002Fsmplpytorch\u002Fnative\u002Fmodels`\n\n*   **MANO 模型**:\n    下载 `MANO_RIGHT.pkl` (来自 [MANO 官网](https:\u002F\u002Fmano.is.tue.mpg.de))。\n    将文件放入：`${ROOT}\u002Fmanopth\u002Fmano\u002Fmodels`\n\n> 注：`${ROOT}` 指项目根目录。\n\n### 3. 下载预训练权重\n为了直接运行演示，请下载预训练模型权重。\n下载地址：[Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1TbKc8tLq1hLcTS_-F1OjkJZYIZbJ6XUh?usp=sharing)\n*(若无法访问 Google Drive，可尝试复制链接到您的云端硬盘后下载)*\n\n将下载的文件夹内容对应放入 `${ROOT}\u002Fexperiment\u002F` 目录下，例如：\n```text\n${ROOT}\u002Fexperiment\u002Fpose2mesh_human36J_train_human36\u002F\n${ROOT}\u002Fexperiment\u002Fpose2mesh_cocoJ_train_human36_coco_muco\u002F\n...\n```\n\n## 基本使用\n\n以下是最简单的单人演示流程，将从预设的 2D 姿态数据生成 3D Mesh。\n\n### 1. 运行单人演示\n确保已准备好输入数据（项目自带示例数据 `demo\u002Fh36m_joint_input.npy`），运行以下命令：\n\n```bash\npython demo\u002Frun.py --gpu 0 --input_pose demo\u002Fh36m_joint_input.npy --joint_set human36\n```\n\n*   `--input_pose`: 输入包含 2D 关节坐标的 `.npy` 文件。\n*   `--joint_set`: 关节集类型，可选 `{human36, coco, smpl, mano}`。\n\n### 2. 将 Mesh 叠加到图片上（可选）\n如果您希望将生成的 3D Mesh 渲染并叠加到原始输入图像上，请添加 `--input_img` 参数：\n\n```bash\npython demo\u002Frun.py --gpu 0 --input_pose demo\u002Fh36m_joint_input.npy --joint_set human36 --input_img demo\u002Finput_image.jpg\n```\n\n### 3. 查看结果\n运行完成后，生成的结果将保存在 `${ROOT}\u002Fdemo\u002Fresult\u002F` 目录中：\n*   `demo_pose2d.png`: 输入的 2D 姿态可视化。\n*   `demo_mesh.png`: 渲染后的 3D Mesh 图像（若指定了输入图片，则为叠加效果）。\n*   `demo_mesh_.obj`: 导出的 3D Mesh 模型文件，可用 Blender 等软件打开。\n\n### 4. 多人演示（进阶）\n如需测试多人场景，请先从 [此链接](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1RO7B_P4Y8Wg9AAvz08-6_iR7Vssjv4dG?usp=drive_link) 下载演示数据并放入 `${ROOT}\u002Fdemo\u002F`，然后直接运行：\n\n```bash\npython demo\u002Frun.py --gpu 0\n```\n程序将自动处理 CrowdPose 数据集中的样本图像。","某影视特效团队正在处理一段单目摄像头拍摄的演员试镜视频，需要快速生成可用于后期合成的 3D 人体模型数据。\n\n### 没有 Pose2Mesh_RELEASE 时\n- **流程繁琐断裂**：团队需先运行独立的 2D 姿态检测算法，再手动编写脚本将关键点坐标转换为 3D 网格，中间环节极易出错且耗时。\n- **形体细节缺失**：传统方法仅能输出稀疏的骨骼关节点，无法还原演员真实的身体体积、肌肉轮廓及衣物褶皱，导致预览效果像“火柴人”。\n- **多角色处理困难**：当画面中出现多人互动时，现有管线难以自动区分个体并分别重建网格，往往需要人工逐帧干预。\n- **动态抖动严重**：直接从 2D 推演 3D 时缺乏时序平滑处理，生成的模型在视频中会出现明显的闪烁和肢体扭曲，无法直接用于动画绑定。\n\n### 使用 Pose2Mesh_RELEASE 后\n- **端到端自动化**：利用 Pose2Mesh_RELEASE 的图卷积网络架构，输入 2D 关节坐标即可一键直接输出高质量的 3D SMPL 网格模型，大幅简化了技术管线。\n- **高保真体型还原**：工具不仅能恢复姿态，还能精准推断人体的三维形状参数，生成的网格紧密贴合演员真实体态，满足视觉预览需求。\n- **原生支持多人场景**：Pose2Mesh_RELEASE 内置多人体演示功能，可自动识别画面中的多个目标并分别渲染叠加网格，无需额外开发分割逻辑。\n- **动作流畅自然**：借助其集成的时间平滑代码（temporal smoothing），输出的连续帧网格运动稳定，有效消除了单帧预测带来的抖动噪声。\n\nPose2Mesh_RELEASE 通过将 2D 姿态到 3D 网格的复杂推理过程标准化与自动化，让中小团队也能以低成本实现电影级的动态人体捕捉效果。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhongsukchoi_Pose2Mesh_RELEASE_c6dcc2a5.png","hongsukchoi","Hongsuk Benjamin Choi","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fhongsukchoi_9fe856e9.png","\r\n\r\n","UC Berkeley","Berkeley, California",null,"redstone_hong","https:\u002F\u002Fhongsukchoi.github.io\u002F","https:\u002F\u002Fgithub.com\u002Fhongsukchoi",[86,90],{"name":87,"color":88,"percentage":89},"Python","#3572A5",99.9,{"name":91,"color":92,"percentage":93},"Shell","#89e051",0.1,720,72,"2026-03-24T09:27:29","MIT",4,"Linux","需要 NVIDIA GPU (运行命令中包含 --gpu 参数)，具体型号和显存未说明，需安装与驱动匹配的 PyTorch CUDA 版本","未说明",{"notes":103,"python":104,"dependencies":105},"1. 强烈建议使用 Anaconda 虚拟环境。2. 需手动下载 SMPL (女性、男性、中性模型) 和 MANO (右手模型) 的 .pkl 参数文件并放置到指定目录。3. 需下载多个数据集 (Human3.6M, COCO, 3DPW 等) 的解析数据和 2D 姿态检测输出文件。4. 训练脚本支持多 GPU 并行 (例如 --gpu 0,1,2,3)。5. 默认实验时区为 UTC+9。",">=3.7.2",[106,107,108,109],"torch>=1.2","numpy","smplpytorch","manopth",[14,37],[112,113,114,115,116,117,118,119,120],"single-view","graph-convolutional-network","3d-mesh","2d-human-pose","3d-human-pose","3d-human-mesh","rgb-image","eccv2020","eccv","2026-03-27T02:49:30.150509","2026-04-06T07:14:48.325198",[124,129,134,139,144,149,154],{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},15476,"如何在原始图像上运行 Demo 并生成输入文件（input.npy）？","若要在自己的数据集或原始图像上进行训练\u002F测试，需要准备符合 COCO 格式的标注文件。YAML 文件仅用于更改超参数或数据集配置，并非标注文件。具体实现可参考 data\u002FCOCO\u002Fdataset.py 中的代码逻辑。对于 2D 关节点数据，需将其转换为项目所需的 .npy 格式作为输入。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F3",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},15477,"如何将人体网格（Mesh）叠加绘制在原始 RGB 图像上？","需要修改 demo\u002Frun.py 文件中的第 34 行代码。将原来的渲染调用改为：`img_shape = 255 * renderer(pred_vertices, camera_translation, img \u002F 255.)`。这样可以正确地将预测的顶点渲染到归一化后的图像上并恢复颜色范围。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F7",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},15478,"运行 demo\u002Frun.py 时出现 FileNotFoundError: No such file or directory 错误怎么办？","该错误通常是因为代码中硬编码的模型权重路径（model_chk_path）与实际文件路径不匹配。请检查 demo\u002Frun.py 文件中 `model_chk_path` 变量的设置，将其修改为你本地实际存放 checkpoint 文件（如 checkpoint0.pth.tar）的正确目录路径。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F9",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},15479,"在 Human3.6M 数据集上复现论文结果时，测试集应如何选择摄像头视角？","为了公平对比并复现论文表 8 中的 PA-MPJPE 结果，测试时应仅使用前视摄像头（frontal camera set，即 camera 3）。在加载测试集代码中，需要跳过摄像头 ID 为 '4' 的数据。示例代码如下：\nif cam != '4':  # front camera (Table 6)\n    continue","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F36",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},15480,"数据增强（如旋转）是否应用于网格数据（mesh_cam）？为什么代码中只增强了关节点？","作者确认，该模型在不进行网格数据增强的情况下取得了最佳精度。虽然代码中对 2D 和 3D 关节点进行了旋转增强，但 mesh_cam 未做相应处理是有意为之。如果用户希望尝试包含网格增强的训练方式，可以参考 I2L-MeshNet_RELEASE 项目中的数据加载器代码。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F25",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},15481,"可视化 2D 关键点时，发现关键点与输入图像严重错位（misaligned）如何解决？","这通常是由于使用了过时的标注文件导致的。维护者已更新了标注文件以修复此可视化错位问题。如果遇到此情况，请确保下载并使用仓库中最新版本的标注文件（annotation files），不要使用旧的或从其他来源获取的标注数据。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F63",{"id":155,"question_zh":156,"answer_zh":157,"source_url":158},15482,"输出的 3D 姿态中腿部出现异常弯曲（bent leg）是什么原因？","这种情况通常发生在输入图像被截断（truncated）时。如果输入图像看起来正常但仍出现腿部弯曲，可能是输入的 2D 关节点位置不准确或模型对特定姿态的泛化问题。建议检查输入的 2D 关节点检测质量，或者尝试使用不同的预训练权重（如包含 MuCo 数据集训练的模型）进行测试。","https:\u002F\u002Fgithub.com\u002Fhongsukchoi\u002FPose2Mesh_RELEASE\u002Fissues\u002F4",[]]