4DGaussians

GitHub
3.5k 346 较难 1 次阅读 昨天Apache-2.0其他图像
AI 解读 由 AI 自动生成,仅供参考

4DGaussians 是一款专为实时动态场景渲染打造的开源 AI 工具,由华中科技大学与华为联合研发,并入选 CVPR 2024。它核心解决了传统方法在处理运动物体或变化场景时,难以兼顾高画质与流畅速度的难题。通过扩展静态的 3D 高斯泼溅(3D Gaussian Splatting)技术至四维时空,4DGaussians 能够高效地捕捉并重现复杂的时间动态变化。

该工具最大的技术亮点在于其惊人的收敛速度与渲染效率。在优化算法后,它仅需数分钟即可完成训练,并能实现实时的新视角合成,让用户可以流畅地漫游于动态视频场景中,而无需漫长的等待或昂贵的算力支持。目前,它已支持 D-NeRF、HyperNeRF 等多种主流动态数据集,并提供了便捷的 Colab 演示环境。

4DGaussians 非常适合计算机视觉研究人员、图形学开发者以及需要构建沉浸式动态内容的创作者使用。对于希望探索前沿神经渲染技术或开发实时互动应用的专业人士而言,这是一个兼具学术价值与工程实用性的高效选择。

使用场景

某影视特效团队正在制作一段包含复杂流体变形与人物互动的动态场景,需要生成高保真的自由视角视频素材。

没有 4DGaussians 时

  • 训练耗时过长:传统动态神经辐射场(如 D-NeRF)训练一个场景往往需要数小时甚至更久,严重拖慢迭代节奏,导演无法在现场实时确认效果。
  • 渲染速度瓶颈:预览或输出视频时帧率极低,难以达到实时交互标准,导致多角度审视画面时出现明显卡顿,影响创作直觉。
  • 动态细节丢失:在处理快速运动或拓扑结构剧烈变化的物体(如飘动的布料、飞溅的水花)时,重建结果容易出现模糊或伪影,缺乏真实的物理质感。

使用 4DGaussians 后

  • 分钟级快速收敛:依托优化的算法,4DGaussians 将 HyperNeRF 数据集的训练时间从 1 小时压缩至 30 分钟,D-NeRF 数据集更是仅需 8 分钟,让团队能在半天内完成多个版本的方案试错。
  • 实时流畅渲染:实现了真正的实时动态场景渲染,美术指导可即时拖动时间轴并从任意角度观察高清画面,如同操作游戏引擎般流畅。
  • 高保真动态还原:利用四维高斯溅射技术,精准捕捉了高速运动中的细微几何变化与纹理细节,即使是复杂的流体形变也能呈现锐利、自然的视觉效果。

4DGaussians 通过将动态场景的重建效率提升一个数量级并实现实时渲染,彻底打破了高质量动态内容制作的时效壁垒。

运行环境要求

操作系统
  • Linux
GPU

必需 NVIDIA GPU,支持 CUDA 11.6 (pytorch=1.13.1+cu116),显存需求未明确说明(建议 8GB+ 以运行实时渲染)

内存

未说明

依赖
notes1. 项目基于 3D Gaussian Splatting 构建,需先初始化 git 子模块。2. 必须安装特定版本的 PyTorch (1.13.1) 和对应的 CUDA (11.6)。3. 训练动态场景前通常需要使用 COLMAP 生成点云并进行下采样(脚本中提供了 colmap.sh 和 downsample_point.py)。4. 官方提供了 Colab 演示环境。5. 自定义数据集需遵循特定的文件夹结构或使用 nerfstudio 管道处理。
python3.7
torch==1.13.1+cu116
depth-diff-gaussian-rasterization
simple-knn
nerfstudio (可选,用于自定义数据集)
4DGaussians hero image

快速开始

用于实时动态场景渲染的四维高斯泼溅法

CVPR 2024

项目页面| arXiv论文

Guanjun Wu 1*, Taoran Yi 2*, Jiemin Fang 3‡, Lingxi Xie 3 ,
Xiaopeng Zhang 3 , Wei Wei 1 ,Wenyu Liu 2 , Qi Tian 3 , Xinggang Wang 2‡✉

1 华中科技大学计算机科学学院   2 华中科技大学电子信息与通信工程学院   3 华为公司  

* 共同贡献。 $\ddagger$ 项目负责人。 通讯作者。

block 我们的方法收敛非常迅速,能够实现实时渲染速度。

新的Colab演示:在Colab中打开(感谢Tasmay-Tibrewal

旧的Colab演示:在Colab中打开(感谢camenduru.)

轻量级高斯实现:此链接(感谢pablodawson

新闻

2024年6月25日:我们清理了代码,并添加了参数说明。

2024年3月25日:更新了hypernerf和dynerf数据集的使用指南。

2024年3月4日:我们调整了Neu3D数据集的超参数,以匹配我们的论文。

2024年2月28日:更新了SIBR查看器的使用指南。

2024年2月27日:被CVPR 2024接收。我们删除了一些用于调试的日志设置,修正后的训练时间在D-NeRF数据集中仅为8分钟(之前为20分钟),在HyperNeRF数据集中仅为30分钟(之前为1小时)。渲染质量不受影响。

环境配置

请按照3D-GS的说明安装相关软件包。

git clone https://github.com/hustvl/4DGaussians
cd 4DGaussians
git submodule update --init --recursive
conda create -n Gaussians4D python=3.7 
conda activate Gaussians4D

pip install -r requirements.txt
pip install -e submodules/depth-diff-gaussian-rasterization
pip install -e submodules/simple-knn

在我们的环境中,我们使用pytorch=1.13.1+cu116。

数据准备

对于合成场景: 使用D-NeRF提供的数据集。您可以从dropbox下载该数据集。

对于真实动态场景: 使用HyperNeRF提供的数据集。您可以从Hypernerf数据集下载场景,并按照Nerfies的方式组织它们。

同时,您也可以从Plenoptic数据集的官方网站下载数据。为了节省内存,您应该提取每个视频的帧,然后按如下方式组织您的数据集。

├── data
│   | dnerf 
│     ├── mutant
│     ├── standup 
│     ├── ...
│   | hypernerf
│     ├── interp
│     ├── misc
│     ├── virg
│   | dynerf
│     ├── cook_spinach
│       ├── cam00
│           ├── images
│               ├── 0000.png
│               ├── 0001.png
│               ├── 0002.png
│               ├── ...
│       ├── cam01
│           ├── images
│               ├── 0000.png
│               ├── 0001.png
│               ├── ...
│     ├── cut_roasted_beef
|     ├── ...

对于多视角场景: 如果您想训练自己的多视角场景数据集,可以按以下方式组织您的数据集:

├── data
|   | multipleview
│     | (您的数据集名称) 
│   	  | cam01
|     		  ├── frame_00001.jpg
│     		  ├── frame_00002.jpg
│     		  ├── ...
│   	  | cam02
│     		  ├── frame_00001.jpg
│     		  ├── frame_00002.jpg
│     		  ├── ...
│   	  | ...

之后,您可以使用我们提供的multipleviewprogress.sh脚本来生成相关的姿态和点云数据。使用方法如下:

bash multipleviewprogress.sh (您的数据集名称)

运行multipleviewprogress.sh后,您需要确保data文件夹按如下方式组织:

├── data
|   | multipleview
│     | (您的数据集名称) 
│   	  | cam01
|     		  ├── frame_00001.jpg
│     		  ├── frame_00002.jpg
│     		  ├── ...
│   	  | cam02
│     		  ├── frame_00001.jpg
│     		  ├── frame_00002.jpg
│     		  ├── ...
│   	  | ...
│   	  | sparse_
│     		  ├── cameras.bin
│     		  ├── images.bin
│     		  ├── ...
│   	  | points3D_multipleview.ply
│   	  | poses_bounds_multipleview.npy

训练

对于训练如bouncingballs这样的合成场景,运行

python train.py -s data/dnerf/bouncingballs --port 6017 --expname "dnerf/bouncingballs" --configs arguments/dnerf/bouncingballs.py 

对于训练如cut_roasted_beef这样的dynerf场景,运行

# 首先,提取每个视频的帧。
python scripts/preprocess_dynerf.py --datadir data/dynerf/cut_roasted_beef
# 其次,从输入数据中生成点云。
bash colmap.sh data/dynerf/cut_roasted_beef llff
# 第三步,对第二步生成的点云进行下采样。
python scripts/downsample_point.py data/dynerf/cut_roasted_beef/colmap/dense/workspace/fused.ply data/dynerf/cut_roasted_beef/points3D_downsample2.ply
# 最后,进行训练。
python train.py -s data/dynerf/cut_roasted_beef --port 6017 --expname "dynerf/cut_roasted_beef" --configs arguments/dynerf/cut_roasted_beef.py 

对于训练如virg/broom这样的hypernerf场景:COLMAP预生成的点云已在此处提供这里。只需下载并放入相应的文件夹,即可跳过前两步。您也可以直接运行以下命令。

# 首先,使用COLMAP计算密集型点云。
bash colmap.sh data/hypernerf/virg/broom2 hypernerf
# 其次,对第一步生成的点云进行下采样。
python scripts/downsample_point.py data/hypernerf/virg/broom2/colmap/dense/workspace/fused.ply data/hypernerf/virg/broom2/points3D_downsample2.ply

# 最后,开始训练。
python train.py -s  data/hypernerf/virg/broom2/ --port 6017 --expname "hypernerf/broom2" --configs arguments/hypernerf/broom2.py 

对于多视角场景的训练,你需要在“./arguments/mutipleview”目录下创建一个名为(你的数据集名称).py的配置文件,之后运行:

python train.py -s  data/multipleview/(your dataset name) --port 6017 --expname "multipleview/(your dataset name)" --configs arguments/multipleview/(you dataset name).py 

对于自定义数据集,请先安装Nerfstudio,并按照其COLMAP流程进行操作。首先需要安装COLMAP,然后:

pip install nerfstudio
# 使用COLMAP流程计算相机位姿
ns-process-data images --data data/your-data --output-dir data/your-ns-data
cp -r data/your-ns-data/images data/your-ns-data/colmap/images
python train.py -s data/your-ns-data/colmap --port 6017 --expname "custom" --configs arguments/hypernerf/default.py 

你可以通过配置文件来自定义训练参数。

检查点

此外,你也可以使用检查点来继续训练模型。

python train.py -s data/dnerf/bouncingballs --port 6017 --expname "dnerf/bouncingballs" --configs arguments/dnerf/bouncingballs.py --checkpoint_iterations 200 # 可以根据需要调整

然后加载检查点:

python train.py -s data/dnerf/bouncingballs --port 6017 --expname "dnerf/bouncingballs" --configs arguments/dnerf/bouncingballs.py --start_checkpoint "output/dnerf/bouncingballs/chkpnt_coarse_200.pth"
# 精细阶段:--start_checkpoint "output/dnerf/bouncingballs/chkpnt_fine_200.pth"

渲染

运行以下脚本以渲染图像。

python render.py --model_path "output/dnerf/bouncingballs/"  --skip_train --configs arguments/dnerf/bouncingballs.py 

评估

只需运行以下脚本即可评估模型。

python metrics.py --model_path "output/dnerf/bouncingballs/" 

查看器

观看教程

脚本

这里有一些有用的脚本,欢迎使用。

export_perframe_3DGS.py: 获取每个时间戳下的所有3D高斯点云。

用法:

python export_perframe_3DGS.py --iteration 14000 --configs arguments/dnerf/lego.py --model_path output/dnerf/lego 

你会在output/dnerf/lego/gaussian_pertimestamp中找到一组3D高斯点云。

weight_visualization.ipynb:

可视化多分辨率六边形平面模块的权重。

merge_many_4dgs.py: 合并你训练好的4D高斯场景。

用法:

export exp_name="dynerf"
python merge_many_4dgs.py --model_path output/$exp_name/sear_steak

colmap.sh: 从输入数据生成点云

bash colmap.sh data/hypernerf/virg/vrig-chicken hypernerf 
bash colmap.sh data/dynerf/sear_steak llff

Blender 格式似乎目前还不支持。欢迎提交拉取请求来修复这个问题。

downsample_point.py :对SFM生成的点云进行下采样。

python scripts/downsample_point.py data/dynerf/sear_steak/colmap/dense/workspace/fused.ply data/dynerf/sear_steak/points3D_downsample2.ply

在我的论文中,我通常使用colmap.sh生成稠密点云,并将其下采样到4万点以下。

以下是一些可能有用但未在我论文中采用的代码,你也可以尝试一下。

优秀的同期/相关工作

也欢迎查看这些优秀的同期或相关工作,包括但不限于:

用于高保真单目动态场景重建的可变形3D高斯

SC-GS:用于可编辑动态场景的稀疏控制高斯泼溅

MD-Splatting:从高度变形场景中的4D高斯学习度量变形

4DGen:具有时空一致性的基于地面的4D内容生成

Diffusion4D:通过视频扩散模型实现快速的时空一致性4D生成

DreamGaussian4D:生成式4D高斯泼溅

EndoGaussian:用于动态内窥镜场景重建的实时高斯泼溅

EndoGS:利用高斯泼溅重建可变形的内窥镜组织

Endo-4DGS:使用4D高斯泼溅进行内窥镜单目场景重建

贡献

该项目仍在开发中。欢迎提出问题或提交拉取请求,为我们的代码库做出贡献。

我们的一些源代码借鉴了3DGSK-planesHexPlaneTiNeuVox以及Depth-Rasterization。我们衷心感谢这些作者的杰出工作。

致谢

我们衷心感谢@zhouzhenghong-gt对我们代码的修改以及关于论文内容的讨论。

引用

关于神经体素网格和动态场景重建的一些见解来源于TiNeuVox。如果你觉得这个仓库或工作对你的研究有帮助,欢迎引用这些论文并给予一颗星。

@InProceedings{Wu_2024_CVPR,
    author    = {吴冠军、易涛然、方继民、谢凌熙、张晓鹏、魏伟、刘文宇、田琪、王兴刚},
    title     = {用于实时动态场景渲染的4D高斯泼溅},
    booktitle = {IEEE/CVF计算机视觉与模式识别会议(CVPR)论文集},
    month     = {六月},
    year      = {2024},
    pages     = {20310-20320}
}

@inproceedings{TiNeuVox,
  author = {方继民、易涛然、王兴刚、谢凌熙、张晓鹏、刘文宇、Nie\ss{}ner, Matthias、田琪},
  title = {具有时间感知神经体素的快速动态辐射场},
  year = {2022},
  booktitle = {SIGGRAPH Asia 2022会议论文集}
}

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

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

162.1k|★★★☆☆|1周前
开发框架图像Agent

ComfyUI

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

108.3k|★★☆☆☆|4天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|4天前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|1周前
开发框架图像Agent