humannerf

GitHub
818 86 较难 1 次阅读 5天前MIT图像开发框架
AI 解读 由 AI 自动生成,仅供参考

HumanNeRF 是一款基于深度学习的开源项目,能够将普通人用单摄像头拍摄的人物运动视频,转化为支持 360 度自由视角的 3D 视频。它主要解决了传统技术难以从单一视角重建动态人物三维形态的难题,让用户在观看视频时,可以像在虚拟场景中一样自由旋转镜头,从背面或侧面观察原本未拍摄到的人物细节。

该工具特别适合计算机视觉研究人员、AI 开发者以及从事数字人、特效制作的专业设计师使用。虽然普通用户也能通过其生成的效果获得惊艳体验,但目前的使用流程涉及环境配置、数据预处理及模型训练,需要具备一定的编程基础和 GPU 硬件资源。

HumanNeRF 的核心技术亮点在于巧妙结合了神经辐射场(NeRF)与 SMPL 人体参数化模型。它不仅利用 NeRF 强大的场景表达能力来还原精细的衣物纹理和光影,还引入 SMPL 模型作为几何先验,有效约束了人体在复杂运动中的形变,从而在单目输入条件下实现了高质量、无伪影的动态人物新视图合成。作为 CVPR 2022 的获奖成果,它为动态场景的三维重建提供了极具价值的参考实现。

使用场景

某独立游戏开发团队需要为角色制作一段高质量的 360 度展示动画,但预算仅支持使用单台普通摄像机拍摄演员表演视频。

没有 humannerf 时

  • 视角受限严重:单目视频只能呈现固定角度,若想获得环绕效果,必须搭建昂贵的多相机阵列或重新组织大规模现场拍摄。
  • 动态细节丢失:传统静态 3D 重建方法难以处理人物行走、转身等复杂非刚性运动,生成的模型在动作衔接处容易出现撕裂或伪影。
  • 后期成本高昂:美术人员需手动逐帧修图或进行繁琐的关键帧绑定,耗时数周才能勉强产出一段流畅的旋转视频。
  • 真实感不足:基于几何建模的方法往往丢失了衣物褶皱、头发飘动等高频纹理细节,导致角色看起来像“塑料人偶”。

使用 humannerf 后

  • 单视频变全景:直接输入一段普通的单目表演视频,humannerf 即可合成任意自由视角的 360 度环绕视频,无需额外拍摄设备。
  • 完美捕捉动态:利用神经辐射场技术,humannerf 能精准理解人体姿态变化,即使在大角度转身时也能保持画面连贯,无几何撕裂。
  • 自动化高效产出:只需配置好数据集和掩码,运行训练脚本后即可自动渲染出包括 T-pose 规范姿态在内的多种视图,将数周工作缩短至数小时。
  • 照片级真实还原:humannerf 保留了原始视频中的光照、阴影及衣物细微纹理,生成的角色在自由视角下依然具备电影级的写实质感。

humannerf 将单一视角的动态视频转化为可自由探索的 3D 沉浸式体验,极大降低了高保真数字人内容的创作门槛。

运行环境要求

操作系统
  • Linux
GPU
  • 需要 NVIDIA GPU
  • 官方测试使用 4 张 NVIDIA RTX 2080 Ti
  • 提供单卡 (RTX 2080 Ti) 配置但性能不保证
  • 未明确说明显存大小和具体 CUDA 版本(依赖 PyTorch 环境)
内存

未说明

依赖
notes1. 推荐使用 Miniconda 或 Anaconda 创建虚拟环境。2. 必须手动下载并配置 SMPL 性别中立模型 (basicModel_neutral_lbs_10_207_0_v1.0.0.pkl),且需按照指引移除其中的 Chumpy 对象。3. 若在自定义单目视频上运行,需预先使用 SPIN、VIBE 或 ROMP 等工具提取人体姿态 (SMPL poses/betas) 和相机参数。4. 建议输入视频片段少于 600 帧(约 20 秒),且包含多角度的人体区域以获得最佳效果。
python3.7
PyTorch
SMPL (性别中立模型)
Chumpy (需移除)
OpenCV (相机模型参考)
humannerf hero image

快速开始

HumanNeRF:基于单目视频的运动人体自由视点渲染(CVPR 2022)

项目页面 | 论文 | 视频

这是一个官方实现。代码库使用 PyTorch 编写,并在 Ubuntu 20.04.4 LTS 上进行了测试。

前置条件

配置环境

安装 Miniconda(推荐)或 Anaconda

创建并激活一个虚拟环境。

conda create --name humannerf python=3.7
conda activate humannerf

安装所需的包。

pip install -r requirements.txt

下载 SMPL 模型

这里 下载中性性别 SMPL 模型,并解压 mpips_smplify_public_v2.zip

复制 SMPL 模型。

SMPL_DIR=/path/to/smpl
MODEL_DIR=$SMPL_DIR/smplify_public/code/models
cp $MODEL_DIR/basicModel_neutral_lbs_10_207_0_v1.0.0.pkl third_parties/smpl/models

按照 此页面 的说明,从 SMPL 模型中移除 Chumpy 对象。

在 ZJU-Mocap 数据集上运行

下面我们以主体 387 为例进行说明。

准备数据集

首先,从 这里 下载 ZJU-Mocap 数据集。

其次,修改 tools/prepare_zju_mocap/387.yaml 中主体 387 的 YAML 文件。特别是,zju_mocap_path 应该是 ZJU-Mocap 数据集的目录路径。

dataset:
    zju_mocap_path: /path/to/zju_mocap
    subject: '387'
    sex: 'neutral'

...

最后,运行数据预处理脚本。

cd tools/prepare_zju_mocap
python prepare_dataset.py --cfg 387.yaml
cd ../../

训练/下载模型

现在你可以通过运行脚本下载预训练模型:

./scripts/download_model.sh 387

或者自己训练一个模型。我们使用 4 张 NVIDIA RTX 2080 Ti 显卡来训练模型。

python train.py --cfg configs/human_nerf/zju_mocap/387/adventure.yaml

为了验证,我们提供了一个支持单 GPU(NVIDIA RTX 2080 Ti)训练的配置文件。请注意,此配置的性能无法保证。

python train.py --cfg configs/human_nerf/zju_mocap/387/single_gpu.yaml

渲染输出

渲染输入帧(即观测到的运动序列)。

python run.py \
    --type movement \
    --cfg configs/human_nerf/zju_mocap/387/adventure.yaml 

对某一特定帧(例如第 128 帧)进行自由视点渲染。

python run.py \
    --type freeview \
    --cfg configs/human_nerf/zju_mocap/387/adventure.yaml \
    freeview.frame_idx 128

渲染学习到的规范外观(T 姿势)。

python run.py \
    --type tpose \
    --cfg configs/human_nerf/zju_mocap/387/adventure.yaml 

此外,你可以在 scripts/zju_mocap 中找到渲染脚本。

在自定义单目视频上运行

为了获得最佳效果,我们建议使用符合以下要求的视频片段:

  • 片段长度少于 600 帧(约 20 秒)。
  • 视频中的人体主体应展示大部分身体部位(例如身体的正面和背面)。

准备数据集

要在单目视频上进行训练,需将你的视频数据按以下结构准备在 dataset/wild/monocular 目录下:

monocular
    ├── images
    │   └── ${item_id}.png
    ├── masks
    │   └── ${item_id}.png
    └── metadata.json

我们使用 item_id 来匹配视频帧与其主体掩码和元数据。item_id 通常是一串字母数字字符,如 000128

images

一组视频帧,以 PNG 文件形式存储。

masks

一组主体分割掩码,以 PNG 文件形式存储。

metadata.json

此 JSON 文件包含视频帧的元数据,包括:

  • 人体姿态(SMPL 姿态和贝塔系数)
  • 相机姿态(相机内参和外参矩阵)。我们遵循 OpenCV 的相机坐标系,并采用 针孔相机模型

你可以使用基于 SMPL 的人体姿态检测器(例如 SPINVIBEROMP)对单目视频进行处理,以获取人体姿态和相机姿态。

{
  // 将字符串 item_id 替换为你视频帧的文件名。
  "item_id": {
        // 一个 (72,) 数组:控制人体姿态的 SMPL 系数。
        "poses": [
            -3.1341, ..., 1.2532
        ],
        // 一个 (10,) 数组:控制人体形状的 SMPL 系数。
        "betas": [
            0.33019, ..., 1.0386
        ],
        // 一个 3x3 的相机内参矩阵。
        "cam_intrinsics": [
            [23043.9, 0.0,940.19],
            [0.0, 23043.9, 539.23],
            [0.0, 0.0, 1.0]
        ],
        // 一个 4x4 的相机外参矩阵。
        "cam_extrinsics": [
            [1.0, 0.0, 0.0, -0.005],
            [0.0, 1.0, 0.0, 0.2218],
            [0.0, 0.0, 1.0, 47.504],
            [0.0, 0.0, 0.0, 1.0],
        ],
  }

  ...

  // 遍历每一帧视频。
  "item_id": {
      ...
  }
}

数据集正确创建后,运行脚本完成数据准备。

cd tools/prepare_wild
python prepare_dataset.py --cfg wild.yaml
cd ../../

训练模型

现在我们可以开始训练了。默认情况下,我们使用 4 张 NVIDIA RTX 2080 Ti 显卡来训练模型。

python train.py --cfg configs/human_nerf/wild/monocular/adventure.yaml

为了验证,我们提供了一个单 GPU(NVIDIA RTX 2080 Ti)的训练配置。请注意,此配置的性能无法保证。

python train.py --cfg configs/human_nerf/wild/monocular/single_gpu.yaml

渲染输出

渲染输入帧(即观测到的运动序列)。

python run.py \
    --type movement \
    --cfg configs/human_nerf/wild/monocular/adventure.yaml 

对某一特定帧(例如第 128 帧)进行自由视点渲染。

python run.py \
    --type freeview \
    --cfg configs/human_nerf/wild/monocular/adventure.yaml \
    freeview.frame_idx 128

渲染学习到的规范外观(T 姿势)。

python run.py \
    --type tpose \
    --cfg configs/human_nerf/wild/monocular/adventure.yaml 

此外,你可以在 scripts/wild 中找到渲染脚本。

致谢

本项目的实现参考了 NeRF-PyTorchNeural BodyNeural VolumeLPIPS 以及 YACS。我们感谢这些作者慷慨地开源代码。

引用

如果您觉得我们的工作有所帮助,请考虑引用以下文献:

@InProceedings{weng_humannerf_2022_cvpr,
    title     = {Human{N}e{RF}: 从单目视频中实现运动人体的自由视点渲染},
    author    = {Weng, Chung-Yi 和 
                 Curless, Brian 和 
                 Srinivasan, Pratul P. 和 
                 Barron, Jonathan T. 和 
                 Kemelmacher-Shlizerman, Ira},
    booktitle = {IEEE/CVF 计算机视觉与模式识别会议(CVPR)论文集},
    month     = {6月},
    year      = {2022},
    pages     = {16210-16220}
}

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架