Skip to content

yuanzhongqiao/nerfstudio

 
 

Repository files navigation

NeRF 的协作友好工作室

文档 观众 科拉布

关于

使用 nerfstudio 即插即用,非常简单!

Nerfstudio 提供了一个简单的 API,可以简化创建、训练和测试 NeRF 的端到端流程。该库通过模块化每个组件来支持 NeRF 的更可解释的实现。 通过更多模块化的 NeRF,我们希望在探索该技术时创造更加用户友好的体验。

这是一个对贡献者友好的存储库,其目标是建立一个社区,让用户可以更轻松地利用彼此的贡献。Nerfstudio 最初是由伯克利分校的学生于 2022 年 10 月在伯克利人工智能研究中心 (BAIR)KAIR 实验室推出的开源项目,作为研究项目的一部分(论文)。它目前由伯克利学生和社区贡献者开发。

我们致力于提供学习资源,帮助您了解 NeRF 的基础知识(如果您刚刚入门),并及时了解(如果您是经验丰富的老手)所有 NeRF 的知识。作为研究人员,我们知道采用这种下一代技术有多么困难。因此,我们随时为您提供教程、文档等方面的帮助!

有功能请求吗?想要添加您全新的 NeRF 模型吗?有新的数据集吗?我们欢迎贡献如有任何问题,请随时通过Discord联系 nerfstudio 团队。

有反馈吗?如果您想让我们知道您是谁、您为何对 Nerfstudio 感兴趣或提供任何反馈,我们希望您填写我们的Nerfstudio 反馈表!

我们希望 nerfstudio 能够帮助您更快地构建🔨一起学习📚并为我们的 NeRF 社区做出贡献💖。

赞助商

这项工作的赞助商包括Luma AIBAIR commons

    <themed-picture data-catalyst-inline="true" data-catalyst=""><picture>
    <source media="(prefers-color-scheme: dark)" srcset="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/luma_dark.png">
    <source media="(prefers-color-scheme: light)" srcset="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/luma_light.png">
    
    <img alt="亮度人工智能" src="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/luma_light.png" width="300" style="visibility:visible;max-width:100%;">
    
    </picture></themed-picture>
    
</a>
<a href="https://bcommons.berkeley.edu/home" rel="nofollow">
    
    <themed-picture data-catalyst-inline="true" data-catalyst=""><picture>
    <source media="(prefers-color-scheme: dark)" srcset="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/bair_dark.png">
    <source media="(prefers-color-scheme: light)" srcset="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/bair_light.png">
    
    <img alt="拜尔" src="/nerfstudio-project/nerfstudio/raw/main/docs/_static/imgs/bair_light.png" width="300" style="visibility:visible;max-width:100%;">
    
    </picture></themed-picture>
    
</a>

快速开始

本快速入门将帮助您开始使用在经典 Blender Lego 场景中训练的默认香草 NeRF。对于更复杂的更改(例如,使用您自己的数据运行/设置新的 NeRF 图),请参阅我们的参考资料

1.安装:搭建环境

先决条件

您的系统上必须安装有 CUDA 的 NVIDIA 显卡。该库已使用 CUDA 11.8 版本进行了测试。您可以在此处找到有关安装 CUDA 的更多信息

创造环境

Nerfstudio 需要python >= 3.8. 我们建议使用 conda 来管理依赖项。确保在继续之前安装Conda

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
pip install --upgrade pip

依赖关系

使用 CUDA 安装 PyTorch (此存储库已使用 CUDA 11.7 和 CUDA 11.8 进行了测试)和tiny-cuda-nncuda-toolkit是建筑所必需的tiny-cuda-nn

对于 CUDA 11.8:

pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

有关更多信息,请参阅 安装文档中的依赖项。

安装nerfstudio

简单的选择:

pip install nerfstudio

或者如果您想要最新最好的:

git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

或者,如果您想跳过所有安装步骤并直接开始使用 nerfstudio,请使用 docker 镜像:

请参阅安装-使用 docker 镜像

2. 训练你的第一个模型!

下面将训练一个nerfacto模型,这是我们针对现实世界场景推荐的模型。

# Download some test data:
ns-download-data nerfstudio --capture-name=poster
# Train model
ns-train nerfacto --data data/nerfstudio/poster

如果一切正常,您应该会看到如下所示的训练进度:

图像

导航到终端末尾的链接将加载网络查看器。如果您在远程计算机上运行,​​则需要端口转发 websocket 端口(默认为 7007)。

图像

从检查点恢复/可视化现有运行

可以通过运行加载预训练模型

ns-train nerfacto --data data/nerfstudio/poster --load-dir {outputs/.../nerfstudio_models}

可视化现有运行

给定预训练的模型检查点,您可以通过运行来启动查看器

ns-viewer --load-config {outputs/.../config.yml}

3. 导出结果

拥有 NeRF 模型后,您可以渲染视频或导出点云。

渲染视频

首先,我们必须创建一条供相机遵循的路径。这可以在查看器的“RENDER”选项卡下完成。将 3D 视图定向到您希望视频开始的位置,然后按“添加摄像机”。这将设置第一个相机关键帧。继续添加额外的摄像机以创建摄像机路径的新视点。我们提供其他参数来进一步完善您的相机路径。满意后,按“RENDER”,这将显示一个包含渲染视频所需命令的模式。终止训练作业(或者如果您有大量计算,则创建一个新终端)并运行命令来生成视频。

还可以使用其他视频导出选项,通过运行了解更多信息

ns-render --help

生成点云

虽然 NeRF 模型不是为生成点云而设计的,但它仍然是可能的。导航到 3D 查看器中的“导出”选项卡并选择“点云”。如果选择裁剪选项,黄色方块中的所有内容都将导出到点云中。根据需要修改设置,然后在命令行中运行面板底部的命令。

或者,您可以在没有查看器的情况下使用 CLI。通过运行了解导出选项

ns-export pointcloud --help

4. 使用自定义数据

使用现有数据集固然很棒,但您可能想使用自己的数据!我们支持使用您自己的数据的各种方法。在将其用于 nerfstudio 之前,必须确定相机位置和方向,然后使用ns-process-data. 为此,我们依靠外部工具,可以在文档中找到说明和信息。

数据 捕捉设备 要求 ns-process-data速度
📷图片 任何 坐标图 🐢
📹视频 任何 坐标图 🐢
🌎360数据 任何 坐标图 🐢
📱宝利康 带有激光雷达的 iOS 宝利康应用程序 🐇
📱 KIRI 引擎 苹果或安卓 KIRI 引擎应用程序 🐇
📱Record3D 带有激光雷达的 iOS Record3D应用程序 🐇
📱壮观的人工智能 IOS、OAK、其他 应用程序/sai-cli 🐇
🖥元形状 任何 元形状 🐇
🖥现实捕捉 任何 现实捕捉 🐇
🖥 ODM 任何 原始设计制造商 🐇
👓咏叹调 阿里亚眼镜 咏叹调计划 🐇
🛠定制 任何 相机姿势 🐇

5. 高级选项

除 nerfacto 之外的训练模型

我们提供了nerfacto以外的其他模型,例如如果你想训练原始的nerf模型,请使用以下命令

ns-train vanilla-nerf --data DATA_PATH

要获得所含型号的完整列表,请运行ns-train --help.

修改配置

每个模型都包含许多可以更改的参数,此处无法列出。使用该--help命令查看配置选项的完整列表。

ns-train nerfacto --help

张量板 / WandB / 查看器

我们支持四种不同的方法来跟踪训练进度,使用查看器张量板权重和偏差以及彗星--vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}您可以通过附加到训练命令来指定要使用的可视化工具。在评估步骤中同时使用查看器和 wandb 或张量板可能会导致卡顿问题。该查看器仅适用于快速方法(即 nerfacto、instant-ngp),对于 NeRF 等较慢方法,请使用其他记录器。

了解更多

这就是 nerfstudio 基础知识的入门。

如果您有兴趣了解有关如何创建自己的管道、使用查看器进行开发、运行基准测试等的更多信息,请查看下面的一些快速链接或直接访问我们的文档

部分 描述
文档 完整的 API 文档和教程
观众 我们的网络查看器的主页
🎒教育性
型号说明 nerfstudio 支持的所有模型的描述以及组件的说明。
组件说明 交互式笔记本,解释各种模型中值得注意/常用的模块。
🏃教程
入门 关于如何开始使用 nerfstudio 从安装到贡献的更深入指南。
使用查看器 有关如何导航查看器的快速演示视频。
使用Record3D 有关如何在不使用 COLMAP 的情况下运行 nerfstudio 的演示视频。
💻对于开发者
创建管道 了解如何通过使用和/或实现新模块轻松构建新的神经渲染管道。
创建数据集 有新的数据集吗?了解如何使用 nerfstudio 运行它。
贡献 演练如何立即开始贡献。
💖社区
不和谐 加入我们的社区讨论更多内容。我们很想听到您的声音!
推特 在 Twitter 上关注我们 @nerfstudioteam 以查看精彩的更新和公告
反馈表 我们欢迎任何反馈!这是我们了解大家使用 Nerfstudio 的用途的机会。

支持的功能

我们提供以下支持结构,让 NeRF 的入门变得更加轻松。

如果您正在寻找当前不受支持的功能,请随时联系Discord上的 Nerfstudio 团队!

  • 🔎 基于网络的可视化工具,允许您:
    • 实时可视化训练+场景互动
    • 使用自定义相机轨迹创建和渲染场景
    • 查看不同的输出类型
    • 和更多!
  • ✏️ 支持多种日志记录接口(Tensorboard、Wandb)、代码分析和其他内置调试工具
  • 📈 Blender 数据集上易于使用的基准测试脚本
  • 📱 完整的管道支持(使用 Colmap、Polycam 或 Record3D),可将手机上的视频转换为完整的 3D 渲染。

建立在

<img alt="新手标志" src="https://camo.githubusercontent.com/d6e47b0506ef080588956ae3da35dd59ce41dc18dde8590129d514b8ee2ab994/68747470733a2f2f6272656e7479692e6769746875622e696f2f7479726f2f5f7374617469632f6c6f676f2d6c696768742e737667" width="150px" data-canonical-src="https://brentyi.github.io/tyro/_static/logo-light.svg" style="visibility:visible;max-width:100%;">

<img alt="新手标志" src="https://user-images.githubusercontent.com/3310961/199084143-0d63eb40-3f35-48d2-a9d5-78d1d60b7d66.png" width="250px" style="visibility:visible;max-width:100%;">

引文

您可以在arXiv上找到该框架的论文。

如果您使用此库或发现该文档对您的研究有用,请考虑引用:

@inproceedings{nerfstudio,
	title        = {Nerfstudio: A Modular Framework for Neural Radiance Field Development},
	author       = {
		Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent
		and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin,
		Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa,
		Angjoo
	},
	year         = 2023,
	booktitle    = {ACM SIGGRAPH 2023 Conference Proceedings},
	series       = {SIGGRAPH '23}
}

贡献者

About

NeRF 的协作友好工作室

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 90.7%
  • JavaScript 7.2%
  • TypeScript 0.9%
  • Shell 0.4%
  • SCSS 0.4%
  • Dockerfile 0.3%
  • HTML 0.1%