[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-Shimingyi--MotioNet":3,"similar-Shimingyi--MotioNet":85},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":18,"owner_location":18,"owner_email":19,"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":34,"env_deps":35,"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":84},6368,"Shimingyi\u002FMotioNet","MotioNet","A deep neural network that directly reconstructs the motion of a 3D human skeleton from monocular video [ToG 2020]","MotioNet 是一款基于深度神经网络的开源工具，专为从单目视频中重建高质量 3D 人体骨骼运动而设计。它有效解决了传统方法在从普通 2D 视频恢复 3D 动作时，常出现的骨骼结构扭曲、动作不自然或需要繁琐后期处理等难题。\n\n该工具的核心亮点在于其独特的运动学网络架构，能够直接输出符合生物力学约束的 3D 骨骼数据，并无需任何后处理步骤即可转换为标准的 BVH 动画文件，极大地简化了工作流程。此外，MotioNet 还引入了脚部接触信号和对抗训练机制，显著提升了在复杂真实场景（Wild Videos）下的动作还原度与稳定性。\n\nMotioNet 主要面向计算机视觉研究人员、图形学开发者以及动画制作专业人士。对于研究者而言，它提供了复现顶级会议论文（ToG 2020）成果的完整代码与预训练模型；对于开发者和动画师，只要具备基础的 Linux 环境和 NVIDIA GPU 资源，即可利用 OpenPose 等工具提取 2D 关键点后，快速将实拍视频转化为可用的 3D 动画数据，为游戏开发、影视特效及虚拟现实内容创作提供高效的技术支持。","# MotioNet\n\nThis library provides the source code of [*MotioNet*](http:\u002F\u002Frubbly.cn\u002Fpublications\u002FmotioNet), [Transaction on Graphics (ToG) 2020], a kinematic deep neural network that reconstructs 3D skeletal human motion from monocular video. The network designed based on the common motion representation, and its direct output can be converted to bvh file without any post-processing step.\n\n**MotioNet: 3D Human Motion Reconstruction from Monocular Video with Skeleton Consistency** : [Project](https:\u002F\u002Frubbly.cn\u002Fpublications\u002FmotioNet\u002F) | [Paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2006.12075) |[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8YubchlzvFA)\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShimingyi_MotioNet_readme_279e65e0e273.gif\" align=\"center\">\n\n\n\n## Prerequisites\n\n- Linux\n- Python 3\n- NVIDIA GPU + CUDA CuDNN\n- 2D Pose Detection Tool (for evaluation on wild videos, now support: [Openpose](https:\u002F\u002Fgithub.com\u002FCMU-Perceptual-Computing-Lab\u002Fopenpose))\n\nBased on your Cuda version, choose a suitable version of [PyTorch](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) and install it, then run this command to install other packages:\n\n```shell\npip install -r requirements.txt\n```\n\n## Quick Start\nWe provide a pretrained model and a few demo examples, that demonstrate how our framework works. In order to run the demo, download the 1. Pretrained model from [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19hO4eVV8cE61aVg3dA-hClVjrtiJhq8d) and place it in the **.\u002Fcheckpoints** folder 2. Training data from [here](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1mvRPqtsNp46grBQ9feYish8evhEkm_9O) and place it in the **.\u002Fdata** folder. Then simply run\n\n```shell\nmkdir output\npython evaluate.py -r .\u002Fcheckpoints\u002Fwild_gt_tcc.pth -i demo\n```\n\nThe resulting bvh files will be found at **.\u002Foutput**. Note that for these examples we already extracted the 2D key-points from the videos using [Openpose](https:\u002F\u002Fgithub.com\u002FCMU-Perceptual-Computing-Lab\u002Fopenpose)) , but if you want to use your own videos this piror step should be performed by yourself. All the original video can be found in our [video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8YubchlzvFA).\n\n### Data preparation\n\n#### Training Data\n\nThere are two datasets in full pipeline, one is [Human3.6m](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fdescription.php) and another one is [CMU Motion Capture](https:\u002F\u002Fsites.google.com\u002Fa\u002Fcgspeed.com\u002Fcgspeed\u002Fmotion-capture\u002Fcmu-bvh-conversion) data. The h36m data is necessary for both training and testing, so prepare it firstly.\n\nFor h36m, you can follow [h36m-fetch](https:\u002F\u002Fgithub.com\u002Fanibali\u002Fh36m-fetch) to download original files, once you get extracted files, you can run our python script to convert it to a numpy matrix:\n\n```shell\npython .\u002Fdata\u002Fprepare_h36m.py\n```\n\nFor CMU data we just selected 310 clips for training, you can find the file list in *data\u002Fcmu_file_list* and collect them to one folder and run our script to take out useful rotations data.\n\n```shell\npython .\u002Fdata\u002Fprepare_cmu.py\n```\n\nAll procedures produce the same result, but we recommend you process data by yourself. We also provide link [[Google drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1mvRPqtsNp46grBQ9feYish8evhEkm_9O?usp=sharing)] to download them directly. And then place them into *.\u002Fdata* folder. \n\n#### Pre-trained Model\n\nNow there are two available pre-trained models, one is for evaluation on h36m with ground-truth 2d detection and another one is for wild videos using [confidence map, foot contact signal and adversarial training].\n\nAfter downloading with link [[Google drive(updated!)](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19hO4eVV8cE61aVg3dA-hClVjrtiJhq8d?usp=sharing)], then place them into .\u002Fcheckpoints folder.\n\nMore pre-trained model will be released next days.\n\n### Test on h36m\n\nOnce you have h36m data and pre-trained model, you can run the script to evaluate our model on h36m.\n\n```shell\n# Evaluation only, without contact, translation\npython evaluate.py -r .\u002Fcheckpoints\u002Fh36m_gt.pth -i h36m -o [output_folder]\n\n# With translation\npython evaluate.py -r .\u002Fcheckpoints\u002Fh36m_gt_t.pth -i h36m -o [output_folder]\n```\n\nThe results will be placed in a subfolder in *.\u002Foutput* with a special name which is a combination of model parameters, it will be helpful to understand the training details. And two kinds of results will be generated: error.txt and BVH files.\n\nIn error.txt, you can find same performance like what we show - around 53mm with gt detected(52mm when the channel parameter is 2048, but it causes waste of model size and training time). And 4 randomly selected bvh file will also be stored in here, you can use Blender to see the visual performance.\n\nThe translation will be observed clearly in action like Walking or WalkingDog. \n\n(NOTICE: The training data we use is in camera space, so the orientation of predicted pose will be strange when you observe it in Blender World Space, you need to rotate the user view or skeleton object in Blender)\n\n### Test on wild videos\n\nOnce you have h36m data, 2d detected data and pre-trained model, you can run the script to evaluate our model on wild videos. Now we provide the interface between Openpose and our network, the supporting of CPN and Detectron will coming soon.\n\nAfter running Openpose, all 2d pose files will be stored in one folder, then you can use these folder path as input parameter to run the python script, the results will also be in a subfolder in *.\u002Foutput* with bvh format.\n\nNow we **haven't apply any smoothing process** on the 2d **input** and **output**, you can do it by yourself to get better results like we show in the video, but here we want to show the original production.\n\n```shell\npython evaluate.py -r .\u002Fcheckpoints\u002Fwild_gt_tcc.pth -i [openpose_results_folder]\n```\n\n## Train from scratch\n\nWe provide instructions for retraining our models\n\nThere are three kinds parameters for training: Runtime parameters, Network definition and Training parameters, you can find more details in *train.py*. We also provide a default configuration of network definition and trainer, you can find it in *.\u002Fconfig_zoo\u002Fdefault.json*. Before your training, you should change the ***save_dir*** in this file to a suitable path.\n\nIf you want to reproduce the results of our pretrained models, run the following commands:\n\n```shell\n# h36m evaluation, without translation and contact\npython train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024 \n\n# h36m, with translation\npython train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024 --translation 1\n\n# wild videos\npython train.py -n wild -d 1 --kernel_size 5,3,1 --stride 3,1,1 --dilation 1,1,1 --channel 1024 --confidence 1 --translation 1 --contact 1 --loss_term 1101\n```\n### Training visualization:\n\nWe use [tensorboardX](https:\u002F\u002Fgithub.com\u002Flanpa\u002FtensorboardX) to visualize the losses when training. In the training, you can go into checkpoint folder and run this command:\n\n```\ntensorboard --logdir=.\u002F\n\nPrint:\nTensorBoard 1.15.0 at http:\u002F\u002Flocalhost:6006\u002F (Press CTRL+C to quit)\n```\n\nThen you can visit this link in your machine [http:\u002F\u002Flocalhost:6006\u002F](http:\u002F\u002Flocalhost:6006\u002F) to check the visualzation.\n\n![vis_example](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShimingyi_MotioNet_readme_9d9613d24c0a.png)\n\n### Training tips:\n\nThere are few things you can do to get different model preferences:\n\n- We haven't use any foot contact dataset to train it, we just extract it by average foot height and velocity in h36m dataset. And in this [contact detection function](https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fblob\u002Fmaster\u002Fdata\u002Fh36m_dataset.py#L148), there is a magic number 20, and it can be defined by you self. If the number is bigger, more frames can be thought as ‘contacting'. It will enhence the attraction from floor, so the results will be worse if there are so many foot action.\n- We trained our model on clips with variance frame number, so you can put all the frames of test video to the network without cutting.\n\n## Limitations\n\n- Moving camera: The model is trained on h36m dataset which includes 4 cameras, and what the network predict is in camera space. The reason is that, if we predict the pose in world space: (different 3d pose ⊕ different camera view) = same 2d projection, then if given a same 2d pose, these will be an ambiguity for predicted 3d pose. When the camera is moving, the situation is same like it, sometimes looks make sense, but not correct.\n- The dependence on 2d detection: The input is 2d detection from other implement, although the confidence map is used as a adapter, the results will be influenced when 2d detection crushed, it's mostly appeared in fast motion or occlusion cases.\n- Animation: Explained in paper, the loss is not applied on rotation directly so the absolutely value of rotation is wired although look fine in positional view. This problem will be solved in next version.\n\n## Acknowledgments\n\nThe code of forward kinematics layer is from [cvpr2018nkn](https:\u002F\u002Fgithub.com\u002Frubenvillegas\u002Fcvpr2018nkn) in tensorflow, we re-write a pytorch version in our code. \n\n## Citation\n\nIf you use this code for your research, please cite our papers:\n\n```bittext\n@article{shi2020motionet,\n  title={MotioNet: 3D Human Motion Reconstruction from Monocular Video with Skeleton Consistency},\n  author={Shi, Mingyi and Aberman, Kfir and Aristidou, Andreas and Komura, Taku and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},\n  journal={arXiv preprint arXiv:2006.12075},\n  year={2020}\n}\n```\n\n","# MotioNet\n\n本库提供了[*MotioNet*](http:\u002F\u002Frubbly.cn\u002Fpublications\u002FmotioNet)的源代码，该模型发表于2020年的《计算机图形学汇刊》（ToG），是一种基于单目视频重建三维骨骼人体运动的运动学深度神经网络。该网络基于通用的运动表示设计，其直接输出无需任何后处理即可转换为bvh文件。\n\n**MotioNet：基于骨骼一致性的单目视频三维人体运动重建**：[项目](https:\u002F\u002Frubbly.cn\u002Fpublications\u002FmotioNet\u002F) | [论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2006.12075) | [视频](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8YubchlzvFA)\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShimingyi_MotioNet_readme_279e65e0e273.gif\" align=\"center\">\n\n\n\n## 前置条件\n\n- Linux\n- Python 3\n- NVIDIA GPU + CUDA CuDNN\n- 2D姿态检测工具（用于在真实视频上进行评估，目前支持：[Openpose](https:\u002F\u002Fgithub.com\u002FCMU-Perceptual-Computing-Lab\u002Fopenpose)）\n\n根据你的CUDA版本，选择合适的[PyTorch](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F)版本并安装，然后运行以下命令安装其他依赖包：\n\n```shell\npip install -r requirements.txt\n```\n\n## 快速开始\n我们提供了一个预训练模型和几个演示示例，展示了我们的框架如何工作。要运行演示，请下载：1. 预训练模型，从[这里](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19hO4eVV8cE61aVg3dA-hClVjrtiJhq8d)下载，并将其放置在**.\u002Fcheckpoints**文件夹中；2. 训练数据，从[这里](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1mvRPqtsNp46grBQ9feYish8evhEkm_9O)下载，并将其放置在**.\u002Fdata**文件夹中。然后简单地运行：\n\n```shell\nmkdir output\npython evaluate.py -r .\u002Fcheckpoints\u002Fwild_gt_tcc.pth -i demo\n```\n\n生成的bvh文件将位于**.\u002Foutput**文件夹中。请注意，对于这些示例，我们已经使用[Openpose](https:\u002F\u002Fgithub.com\u002FCMU-Perceptual-Computing-Lab\u002Fopenpose)从视频中提取了2D关键点，但如果您想使用自己的视频，则需要自行完成这一步骤。所有原始视频都可以在我们的[视频](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8YubchlzvFA)中找到。\n\n### 数据准备\n\n#### 训练数据\n\n完整流程中包含两个数据集，一个是[Human3.6m](http:\u002F\u002Fvision.imar.ro\u002Fhuman3.6m\u002Fdescription.php)，另一个是[CMU动作捕捉](https:\u002F\u002Fsites.google.com\u002Fa\u002Fcgspeed.com\u002Fcgspeed\u002Fmotion-capture\u002Fcmu-bvh-conversion)数据。h36m数据对训练和测试都是必需的，因此请先准备好它。\n\n对于h36m数据，您可以按照[h36m-fetch](https:\u002F\u002Fgithub.com\u002Fanibali\u002Fh36m-fetch)的说明下载原始文件。获取解压后的文件后，可以运行我们的Python脚本将其转换为numpy矩阵：\n\n```shell\npython .\u002Fdata\u002Fprepare_h36m.py\n```\n\n对于CMU数据，我们仅选择了310段用于训练。您可以在*data\u002Fcmu_file_list*中找到文件列表，将它们收集到一个文件夹中，然后运行我们的脚本提取有用的姿态数据。\n\n```shell\npython .\u002Fdata\u002Fprepare_cmu.py\n```\n\n所有步骤都会产生相同的结果，但我们建议您自行处理数据。我们也提供了链接[[Google云端硬盘](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1mvRPqtsNp46grBQ9feYish8evhEkm_9O?usp=sharing)]，可以直接下载这些数据。然后将它们放入*.\u002Fdata*文件夹中。\n\n#### 预训练模型\n\n目前有两个可用的预训练模型，一个用于在h36m数据上进行评估，使用地面真值2D检测；另一个用于处理真实视频，采用了置信度图、足部接触信号和对抗训练等技术。\n\n通过链接[[Google云端硬盘（已更新！）](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19hO4eVV8cE61aVg3dA-hClVjrtiJhq8d?usp=sharing)]下载后，将其放置在*.\u002Fcheckpoints*文件夹中。\n\n未来几天还将发布更多预训练模型。\n\n### 在h36m上的测试\n一旦您有了h36m数据和预训练模型，就可以运行脚本在h36m数据上评估我们的模型。\n\n```shell\n# 仅评估，不考虑接触和平移\npython evaluate.py -r .\u002Fcheckpoints\u002Fh36m_gt.pth -i h36m -o [output_folder]\n\n# 包括平移\npython evaluate.py -r .\u002Fcheckpoints\u002Fh36m_gt_t.pth -i h36m -o [output_folder]\n```\n\n结果将被放置在*.\u002Foutput*中的一个子文件夹中，文件夹名称由模型参数组合而成，有助于理解训练细节。将生成两种结果：error.txt和BVH文件。\n\n在error.txt中，您可以找到与我们展示相似的性能——使用地面真值检测时约为53mm（当通道参数为2048时为52mm，但这会浪费模型大小和训练时间）。此外，还会随机存储2个bvh文件，您可以使用Blender查看可视化效果。\n\n平移效果在行走或遛狗等动作中会非常明显。\n\n（注意：我们使用的训练数据处于相机空间，因此在Blender的世界空间中观察预测姿态时，方向可能会显得奇怪。您需要在Blender中旋转用户视图或骨骼对象。）\n\n### 在真实视频上的测试\n一旦您有了h36m数据、2D检测数据和预训练模型，就可以运行脚本在真实视频上评估我们的模型。目前我们提供了Openpose与我们的网络之间的接口，对CPN和Detectron的支持也将很快推出。\n\n运行Openpose后，所有的2D姿态文件将被存储在一个文件夹中，然后您可以将该文件夹路径作为输入参数运行Python脚本，结果也将以bvh格式保存在*.\u002Foutput*的一个子文件夹中。\n\n目前我们对2D的**输入**和**输出**都未进行任何平滑处理，您可以自行进行平滑处理以获得如视频中所示的更好效果，但在这里我们希望展示原始的生成结果。\n\n```shell\npython evaluate.py -r .\u002Fcheckpoints\u002Fwild_gt_tcc.pth -i [openpose_results_folder]\n```\n\n## 从头开始训练\n我们提供了重新训练模型的指导说明。\n\n训练涉及三种参数：运行时参数、网络定义和训练参数，详细信息可在*train.py*中找到。我们还提供了一个默认的网络定义和训练器配置，可在*.\u002Fconfig_zoo\u002Fdefault.json*中找到。在开始训练之前，您需要将此文件中的***save_dir***更改为合适的路径。\n\n如果您想复现我们预训练模型的结果，请运行以下命令：\n\n```shell\n# h36m评估，不考虑平移和接触\npython train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024 \n\n# h36m，考虑平移\npython train.py -n h36m --kernel_size 5,3,1 --stride 1,1,1 --dilation 1,1,1 --channel 1024 --translation 1\n\n# 真实视频\npython train.py -n wild -d 1 --kernel_size 5,3,1 --stride 3,1,1 --dilation 1,1,1 --channel 1024 --confidence 1 --translation 1 --contact 1 --loss_term 1101\n```\n\n### 训练可视化：\n\n我们使用 [tensorboardX](https:\u002F\u002Fgithub.com\u002Flanpa\u002FtensorboardX) 来可视化训练过程中的损失。在训练过程中，您可以进入 checkpoint 文件夹并运行以下命令：\n\n```\ntensorboard --logdir=.\u002F\n\n输出：\nTensorBoard 1.15.0 at http:\u002F\u002Flocalhost:6006\u002F (按 CTRL+C 退出)\n```\n\n然后您可以在本机访问该链接 [http:\u002F\u002Flocalhost:6006\u002F](http:\u002F\u002Flocalhost:6006\u002F) 查看可视化结果。\n\n![vis_example](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShimingyi_MotioNet_readme_9d9613d24c0a.png)\n\n### 训练技巧：\n\n为了获得不同的模型效果，您可以尝试以下几点：\n\n- 我们并未使用专门的足部接触数据集进行训练，而是通过 H36M 数据集中平均的足高和速度来提取接触信息。在该 [接触检测函数](https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fblob\u002Fmaster\u002Fdata\u002Fh36m_dataset.py#L148) 中，有一个魔术数字 20，您可以自行调整。如果这个数值越大，则会有更多帧被判定为“接触”状态。这会增强对地面的吸引力，因此当视频中包含大量足部动作时，结果可能会变差。\n- 我们是在帧数不固定的片段上训练模型的，因此您可以将测试视频的所有帧直接输入网络，而无需进行裁剪。\n\n## 局限性\n\n- 摄像机运动：模型是在包含 4 个摄像头的 H36M 数据集上训练的，网络预测的是相机空间中的姿态。原因在于，如果我们在世界坐标系中预测姿态：不同的 3D 姿态与不同的摄像机视角组合可能产生相同的 2D 投影。因此，给定相同的 2D 姿态时，预测出的 3D 姿态可能存在歧义。当摄像机移动时，也会出现类似的情况——有时看起来合理，但实际上并不正确。\n- 对 2D 检测的依赖：输入是来自其他实现的 2D 检测结果，尽管我们使用置信度图作为适配器，但当 2D 检测失败时，结果仍会受到影响。这种情况通常出现在快速运动或遮挡场景中。\n- 动画效果：如论文所述，损失函数并未直接作用于旋转部分，因此即使从位置上看效果不错，旋转的绝对值也可能显得异常。这一问题将在后续版本中得到解决。\n\n## 致谢\n\n正向运动学层的代码源自 tensorflow 上的 [cvpr2018nkn](https:\u002F\u002Fgithub.com\u002Frubenvillegas\u002Fcvpr2018nkn)，我们在自己的代码中重新实现了 PyTorch 版本。\n\n## 引用\n\n如果您在研究中使用了本代码，请引用我们的论文：\n\n```bittext\n@article{shi2020motionet,\n  title={MotioNet: 从单目视频中基于骨骼一致性重建 3D 人体运动},\n  author={Shi, Mingyi and Aberman, Kfir and Aristidou, Andreas and Komura, Taku and Lischinski, Dani and Cohen-Or, Daniel and Chen, Baoquan},\n  journal={arXiv 预印本 arXiv:2006.12075},\n  year={2020}\n}\n```","# MotioNet 快速上手指南\n\nMotioNet 是一个基于运动学深度神经网络的开源项目，能够从单目视频中重建 3D 人体骨骼动作。其直接输出为 BVH 文件，无需额外后处理即可用于动画制作。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux\n*   **编程语言**: Python 3\n*   **硬件加速**: NVIDIA GPU + CUDA + CuDNN\n*   **2D 姿态检测工具**: 用于处理野生视频（当前支持 [OpenPose](https:\u002F\u002Fgithub.com\u002FCMU-Perceptual-Computing-Lab\u002Fopenpose)）\n*   **深度学习框架**: PyTorch（请根据您的 CUDA 版本选择合适的版本安装）\n\n## 安装步骤\n\n1.  **安装 PyTorch**\n    访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) 根据您的环境获取安装命令并执行。\n\n2.  **安装其他依赖**\n    克隆项目代码后，进入目录运行以下命令安装所需包：\n    ```shell\n    pip install -r requirements.txt\n    ```\n    > **提示**：国内用户建议使用清华或阿里镜像源加速安装：\n    > `pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n3.  **下载预训练模型与数据**\n    *   **预训练模型**: 从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F19hO4eVV8cE61aVg3dA-hClVjrtiJhq8d) 下载，并将 `.pth` 文件放入 `.\u002Fcheckpoints` 文件夹。\n    *   **演示数据**: 从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F1mvRPqtsNp46grBQ9feYish8evhEkm_9O) 下载示例数据，放入 `.\u002Fdata` 文件夹。\n\n## 基本使用\n\n以下是最简单的演示运行流程，将使用预训练模型对示例数据进行 3D 动作重建。\n\n1.  **创建输出目录**\n    ```shell\n    mkdir output\n    ```\n\n2.  **运行评估脚本**\n    使用提供的预训练模型 (`wild_gt_tcc.pth`) 和演示数据 (`demo`) 进行推理：\n    ```shell\n    python evaluate.py -r .\u002Fcheckpoints\u002Fwild_gt_tcc.pth -i demo\n    ```\n\n3.  **查看结果**\n    生成的 3D 动作文件 (`.bvh`) 将保存在 `.\u002Foutput` 目录下。您可以使用 Blender 等软件打开这些文件查看重建效果。\n\n> **注意**：演示数据中的 2D 关键点已预先通过 OpenPose 提取。如果您想处理自己的视频，请先使用 OpenPose 提取 2D 姿态数据，然后将包含结果的文件夹路径作为 `-i` 参数传入上述命令。","一家小型独立游戏工作室正在为新款动作游戏制作角色动画，但团队缺乏昂贵的动作捕捉设备和专业动捕演员，只能依靠网上找到的单目视频素材进行参考。\n\n### 没有 MotioNet 时\n- **硬件门槛极高**：传统方案必须租赁专业光学动捕棚或购买深度相机，初创团队难以承担数万元的设备成本。\n- **人工转换耗时**：动画师需要逐帧手动将视频中的二维动作“脑补”并关键帧化到三维骨骼上，制作一个奔跑循环需耗费数天。\n- **数据格式割裂**：即便提取了姿态，往往还需要繁琐的后处理脚本才能转换为游戏引擎通用的 BVH 格式，容易丢失运动细节。\n- **自然度不足**：手工还原的动作常出现脚部滑步、关节扭曲等不物理现象，反复修调严重拖慢开发进度。\n\n### 使用 MotioNet 后\n- **零硬件成本启动**：仅需普通摄像头拍摄的单目视频，配合开源的 OpenPose 提取二维关键点，即可直接驱动三维重建流程。\n- **自动化高效产出**：MotioNet 利用深度神经网络直接推理，几分钟内就能将视频序列转化为完整的三维骨骼运动数据。\n- **无缝引擎集成**：模型输出无需任何后处理步骤，直接生成标准的 BVH 文件，可立即导入 Unity 或 Unreal Engine 使用。\n- **运动逻辑自洽**：基于骨架一致性的算法设计，自动修正了脚部接触和关节约束问题，生成的奔跑、跳跃动作流畅且符合物理规律。\n\nMotioNet 让独立开发者仅凭一段手机视频，就能以极低成本获得电影级的三维角色动画资产。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShimingyi_MotioNet_279e65e0.gif","Shimingyi","Rubbly","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FShimingyi_2a8121ad.png","Formerly study in SDU, BFA, PKU and HKU; exploring the new data-driven animation including video2motion and universal control. ",null,"myshi@cs.hku.hk","rubbly.cn","https:\u002F\u002Fgithub.com\u002FShimingyi",[23],{"name":24,"color":25,"percentage":26},"Python","#3572A5",100,588,83,"2026-04-07T07:17:34","BSD-2-Clause",4,"Linux","必需：NVIDIA GPU，需安装对应的 CUDA 和 CuDNN（具体版本需根据安装的 PyTorch 版本匹配，README 未指定具体显存大小）","未说明",{"notes":36,"python":37,"dependencies":38},"1. 该工具仅明确支持 Linux 系统。2. 运行前需单独安装 2D 姿态检测工具（如 OpenPose）以处理野生视频。3. 需手动下载预训练模型和数据集（Human3.6m, CMU MoCap）并放置于指定文件夹。4. 在 Blender 中查看生成的 BVH 文件时，由于数据是在相机空间预测的，可能需要旋转视角或骨骼对象才能看到正确的方向。5. 输入和输出默认未应用平滑处理，如需更好效果需自行处理。","3",[39,40,41],"torch","tensorboardX","OpenPose (外部工具，用于 2D 姿态检测)",[43,44],"视频","其他",[46,47,48,49],"deep-neural-network","3d-pose-estimation","character-animation","bvh",2,"ready","2026-03-27T02:49:30.150509","2026-04-11T03:23:03.323670",[55,60,65,70,75,80],{"id":56,"question_zh":57,"answer_zh":58,"source_url":59},28822,"运行快速开始演示（quick start demo）时出现 'TypeError: only integer scalar arrays can be converted to a scalar index' 错误怎么办？","该错误通常发生在加载相机参数时。维护者确认这是一个已知问题并提供了修复方案。如果更新代码后仍有问题，请检查是否因内存不足导致进程被内核杀死（可使用 `dmesg` 或系统监控工具确认），特别是 GPU 显存不足时。维护者曾建议临时添加 `print(name)` 调试，确认数值正常后可删除该打印语句。","https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fissues\u002F31",{"id":61,"question_zh":62,"answer_zh":63,"source_url":64},28823,"训练生成的模型文件大小（145MB）与预训练模型（73MB）不一致，且训练过程中发生崩溃，原因是什么？","维护者确认这是代码中的 Bug。具体原因包括：1. 论文中提到每个迭代随机设置剪辑长度，但代码中 `set_sequences` 函数仅在开始时执行一次，导致剪辑长度未随 epoch 变化；2. 模型配置中步长（stride）设置错误，根据论文末尾的模型配置，Es 分支应使用 stride 1 而非 3，而 Eq 分支应使用 3 而非 1，错误的 stride 设置会导致在 `self.branch_S` 处崩溃。请等待维护者推送新的修复提交。","https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fissues\u002F20",{"id":66,"question_zh":67,"answer_zh":68,"source_url":69},28824,"图 9 中的骨长估计对比是否公平？其他方法（如 Pavllo）并未使用真值（GT）信息，且 Y 轴单位是什么？","该对比是公平的。因为某些方法只能在缩放空间中计算误差，所以需要利用从 GT 测试集中提取的缩放因子（alpha scaling factor）将结果恢复至原始空间，以便与其他方法进行比较。Y 轴表示的是恢复后的实际骨长误差。如果不使用 GT 缩放因子，不同方法之间的尺度将不统一，无法直接对比。","https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fissues\u002F17",{"id":71,"question_zh":72,"answer_zh":73,"source_url":74},28825,"使用预训练模型评估时，生成的 BVH 文件为空或包含 NaN 值，以及如何绘制 3D 关节点？","生成空 BVH 文件或出现 `RuntimeWarning: invalid value encountered in true_divide` 通常是因为中间变量（如 `poses_2d_root`, `pred_bones` 等）包含了 NaN 值。关于绘制 3D 关节点：数据默认是 Tensor 格式，需先转换为 NumPy 数组才能使用 matplotlib 绘图，代码为：`pred_pose_3d_numpy = pred_pose_3d.cpu().numpy()`。3D 关节位置可通过前向运动学（Forward Kinematics）获得，即对骨骼应用旋转，具体参考 `evaluate.py` 第 40 行的 `pred_pose_3d` 和 `model\u002Fmodel.py` 中的 `forward_fk` 函数。","https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fissues\u002F22",{"id":76,"question_zh":77,"answer_zh":78,"source_url":79},28826,"运行 `prepare_cmu.py` 准备 CMU 数据集时报错 'AssertionError: ... is not a valid directory' 如何解决？","该错误通常由路径配置错误或文件结构不正确引起。解决方法：1. 确保路径是绝对路径且指向正确位置（例如 `\u002Fhome\u002F[用户名]\u002FDocuments\u002F...\u002FMotioNet-master\u002F...`），而不是相对路径或错误的挂载点；2. 检查文件结构，确保 BVH 文件直接存放在指定的数据集文件夹中，而不是嵌套在子文件夹内。代码中引用的文件列表（`cmu_file_list`）对应的文件应直接位于目标目录下。","https:\u002F\u002Fgithub.com\u002FShimingyi\u002FMotioNet\u002Fissues\u002F32",{"id":81,"question_zh":82,"answer_zh":83,"source_url":64},28827,"如何处理缺失的关键点数据？坐标和置信度应该如何设置？","对于缺失的关键点，正确的处理方式是将该点的坐标（coord）和置信度（confidence）都设置为 0。如果发现代码中仅将坐标设为 0 而置信度仍保留较高值（如 0.86），这被视为一个 Bug。在 `add_noise()` 函数及相关数据处理逻辑中，应确保缺失点的索引处理正确（注意区分 `item_index` 和 `joint_index`），并将对应位置的坐标和置信度同时清零。",[],[86,98,110,119,127,135],{"id":87,"name":88,"github_repo":89,"description_zh":90,"stars":91,"difficulty_score":92,"last_commit_at":93,"category_tags":94,"status":51},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,3,"2026-04-06T03:28:53",[95,96,97,43],"开发框架","图像","Agent",{"id":99,"name":100,"github_repo":101,"description_zh":102,"stars":103,"difficulty_score":50,"last_commit_at":104,"category_tags":105,"status":51},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[96,106,43,107,97,44,108,95,109],"数据工具","插件","语言模型","音频",{"id":111,"name":112,"github_repo":113,"description_zh":114,"stars":115,"difficulty_score":116,"last_commit_at":117,"category_tags":118,"status":51},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,1,"2026-04-08T20:11:31",[108,106,44],{"id":120,"name":121,"github_repo":122,"description_zh":123,"stars":124,"difficulty_score":116,"last_commit_at":125,"category_tags":126,"status":51},5773,"cs-video-courses","Developer-Y\u002Fcs-video-courses","cs-video-courses 是一个精心整理的计算机科学视频课程清单，旨在为自学者提供系统化的学习路径。它汇集了全球知名高校（如加州大学伯克利分校、新南威尔士大学等）的完整课程录像，涵盖从编程基础、数据结构与算法，到操作系统、分布式系统、数据库等核心领域，并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。\n\n面对网络上零散且质量参差不齐的教学资源，cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容，仅收录真正的大学层级课程，排除了碎片化的简短教程或商业广告，确保用户能接触到严谨的学术内容。\n\n这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员，以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽，不仅包含传统的软件工程与网络安全，还细分了生成式 AI、大语言模型、计算生物学等新兴学科，并直接链接至官方视频播放列表，让用户能一站式获取高质量的教育资源，免费享受世界顶尖大学的课堂体验。",79792,"2026-04-08T22:03:59",[44,96,106,95],{"id":128,"name":129,"github_repo":130,"description_zh":131,"stars":132,"difficulty_score":92,"last_commit_at":133,"category_tags":134,"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",[97,96,95,108,44],{"id":136,"name":137,"github_repo":138,"description_zh":139,"stars":140,"difficulty_score":92,"last_commit_at":141,"category_tags":142,"status":51},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75309,"2026-04-10T11:12:54",[108,96,95,44]]