计图:5秒训好NeRF!已开源

2023-11-01

金磊 转载整理自 图形学与几何计算
量子位 | 公众号 QbitAI

计图(Jittor)框架的NeRF模型库JNeRF正式开源了!

通过JNeRF可以5秒训练好NeRF模型(见图1)。

Jittor成为首个支持Instant-NGP的深度学习框架。

 图1:5秒训练好NeRF

研究背景

NeRF在2020[1]被提出,它惊艳的视角生成效果获得了学术界的广泛关注。

不同于传统的显式表达,NeRF通过将场景表示为隐式的神经辐射场,渲染时通过神经网络查询位置上的场景信息生成新视角图像。

 图2:用Jittor框架训练的NeRF的例子

NeRF的出现很可能带来一场革命,但它仍存在一些问题。

不同方法针对NeRF各部分(如:采样、位置编码、网络结构)的优化都会对NeRF的性能带来提升,这一定程度上影响了比较的公平性。

并且随着NeRF效率的提升,深度学习框架逐渐成为NeRF效率提升的瓶颈,许多工作修改、添加cuda代码以提升效率,这进一步带来了混乱。

因此NeRF需要一个统一、高效、并与框架高度适配的模型库,建立统一流程,提升科研效率。

JNeRF架构

JNeRF模型库分析了现有的NeRF方法,将NeRF的主要训练流程总结为图3所示的7个模块,不同模块之间相互解耦,使其能够方便地调用和替换。

由于时间有限,目前JNeRF只支持了其中很少的工作,后续JNeRF会不断支持更多有代表性的NeRF工作,也十分欢迎大家在GitHub为JNeRF贡献代码。

4dc4bc5deb1ee50cb027445d8d5b9906.png

 图3:NeRF的训练流程

JNeRF支持Instant-NGP

Nvidia的工作Instant-NGP[2]在今年年初发布后,受到了学术界和工业界的广泛关注,github开源仓库至今已获得7k+个星。

该工作通过Hash编码和定制化的优化,使得NeRF能在5秒训练出一个效果优质的结果

经过我们的分析,Instant-NGP能5秒训练出NeRF并不仅仅是因为哈希编码方法,更因为Nvidia针对硬件做的极致优化。

5723e4acc3829515464676c0749b8b6a.png

 图4:Instant-NGP 算法流程

Instant-NGP能5秒训练NeRF的效果给学术界和产业界都带来了很多可能,但Instant-NGP的实现仍存在一些问题:其源码完全基于Cuda编写,对习惯Python的用户而言使用门槛较高。

Instant-NGP没有成熟的深度学习框架支持,无法适配各种常用NeRF变种模型;Nvidia为了追求极致的效率优化,其源码不同函数间耦合严重,难以修改。

基于JNeRF实现的Instant-NGP具有以下优势:

  • 准确复现了论文的速度和点数(见表1),其他深度学习框架复现的Instant-NGP在速度和点数上都距离原论文有一定差距,Jittor是全球唯一成功复现了Instant-NGP的框架。

9f144403d6ee432d25a4510775adbdf7.png

 表1:与Instant NGP原文的对比
  • JNeRF速度十分高效,其训练速度可以达到大约133 iter/s。我们注意到,随着NeRF训练速度的提升,框架的运行速度成为了限制NeRF速度进一步提升的瓶颈,近期有的工作(如Plenoxel)通过大量修改Pytorch源码才实现快速训练,而Instant-NGP则更是直接使用Cuda来达到速度的极致追求。得益于Jittor的速度优势,JNeRF可以直接轻松地使用Jittor框架完成Instant-NGP的复现。

  • Jittor是一个即时编译的框架,通过即时编译的特性,能够实现很多原版Instant-NGP都无法实现的操作,例如在训练时动态修改Cuda代码。

  • JNeRF进行了较好的模块化,使得科研人员能够轻松地调用、替换其中的模块。

  • Jittor基于元算子融合的优势,有着丰富的硬件生态支持,因此基于Jittor的JNeRF库能够轻松地在各种国内外硬件以及移动端上运行。

JNeRF代码演示

JNeRF通过配置文件可以轻松修改模型设置,下面的代码展示了用户可以通过简单地修改配置文件实现模块的替换。

目前,JNeRF仓库已在github和中国计算机学会的GitLink上开源。JNeRF仍有待不断完善,支持的模型仍十分有限。

欢迎大家通过该仓库进行NeRF的学习和研究,并和我们一起完善该仓库,共同推动NeRF的发展。

GitHub链接:

https://github.com/Jittor/JNeRF

GitLink链接:

https://www.gitlink.org.cn/jittor/jnerf

参考文献:

[1]Mildenhall B, Srinivasan P P, Tancik M, et al. Nerf: Representing scenes as neural radiance fields for view synthesis[C]//European conference on computer vision. Springer, Cham, 2020: 405-421.
[2]MüllerT, Evans A, Schied C, et al., Instant Neural Graphics Primitives with a Multiresolution Hash Encoding, arXiv: 2201.05989, 2022.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计图:5秒训好NeRF!已开源 的相关文章

随机推荐

  • linux中的/etc/hosts.allow和/etc/hosts.deny详解

    linux中的 etc hosts allow和 etc hosts deny详解 当linux主机需要允许 禁止某些ip地址 地址段访问某些资源或服务时 etc hosts allow和 etc hosts deny就派上了用场 两个文件
  • tcp_transmit_skb的发送时机梳理

    在上文数据通过网络发送的过程中 当程序调用tcp sendmsg发送数据的时候有可能当前的数据不会马上发送出去 当前在哪些场景下会触发数据的发送呢 检查mtu 创建 一个新的路径MTU 发现段 未启用路径MTU 当前路径MTU探测段的长度不
  • Andriod期末复习总结

    一 安卓项目的目录结构 AndroidManifest xml 项目清单文件 设置应用名称 图标等属性 libs 项目依赖的外部库 src Java源文件 bin 目标文件 Java字节码 class 资源打包文件 ap 和Dalvik虚拟
  • 机器学习——SVM(支持向量机)与人脸识别

    忆如完整项目 代码详见github https github com yiru1225 转载标明出处 勿白嫖 star for projects thanks 目录 系列文章目录 一 SVM的概念与原理 1 SVM简介 2 SVM基本流程
  • JS中cookie的增删改查

    JS中对cookie进行增删改查 以下个人总结 如有错误 请指出修正 cookie简单介绍 cookie是一段有大小限制的文本信息 由于浏览器厂商不同 各个浏览器大小不一致 其伴随着用户请求和浏览器与Web服务器之间传递当用户访问站点时 W
  • 全国省市区编码表

    Excel转sql表 将Excel转换成支持导入的数据格式 本文用csv示例 使用Navicat工具导入我们的csv文件 选择对应的文件格式导入 然后执行下一步 然后就一直无限下一步 就导入成功了哦 下面附上下载链接 如果有帮到你的话请点赞
  • ./nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No

    在CentOS7下配置Nginx 但是一致都在报错 报错信息为 nginx error while loading shared libraries libcrypto so 1 1 cannot open shared object fi
  • Unity3d 离散仿真引擎基础

    Unity3d 游戏 离散仿真引擎基础简答题 1 解释游戏对象 GameObjects 和资源 Assets 的区别与联系 游戏对象 GameObjects 用来表示游戏中具体的角色 道具和场景 它们通过容纳组件 Component 来实现
  • Ubuntu20.04+RTX3090+CUDA11.4+CUDNN8.5.0安装与卸载

    目录 CUDA CUDNN卸载 CUDA CUDNN下载与安装 CUDA CUDNN下载 CUDA CUDNN安装 CUDA CUDNN卸载 CUDA卸载有两种方式 一种是执行CUDA自带的卸载脚本 该脚本位于 usr local cuda
  • 网络驱动->PHY驱动调试

    1 Linux 系统网络协议层架构 网络协议框架图 网络子系统是 linux 操作系统里很重要的一部分 关于这部分有很多的参考资料 这里主要说明一下 phy 芯片在整个子系统里的位置 从这个结构里看到 PHY 驱动的功能处于链路层 以太网物
  • Python实现并发编程

    利用python实现并发编程的方法有 1 多线程 2 多进程 3 多线程 多进程 面试题 进程和线程的区别和联系 进程 操作系统分配内存的基本单位 一个进程可以包含一个或多个线程 线程 操作系统分配CPU的基本单位 并发编程 concurr
  • 我的梦想指引前行与追寻梦想之路

    在毕业季来临之际 我想向即将踏入职场的各位同学们致以真诚的祝福和鼓励 在这个毕业季的到来 让我们满怀梦想和热情 准备好迈出职场的第一步 追逐成功的道路 不断成长和拓展自己的辉煌人生 在大学期间 我有幸参与了一项关于人工智能领域的研究项目 这
  • EF Core CodeFirst 添加表字段表述

    1 通过Fluent API 来添加描述 使用HasComment实现 protected override void OnModelCreating ModelBuilder modelBuilder modelBuilder Entit
  • html视频怎么改大小,对视频大小、比例进行修改

    很多人在刚开始制作视频的时候会问 怎么修改高宽比 怎么做全屏视频 为什么我输出的视频有黑边 我们今天就来把这些问题一并解决了 首先来了解问题的原因 问 为什么输出的视频有黑边 答 当剪辑的视频比例与你所选的项目比例不一致 软件会自动填充黑边
  • 【数学】三角函数及部分微积分函数图象整理

    三角函数及部分微积分函数图象整理 1 三角函数 1 1 cosx secx 1 2 sinx cscx 1 3 tanx cotx 1 4 s e c
  • Easyx简单使用

    创建窗口大小为 initgraph 640 长 480 宽 showconsole 显示控制台 关闭窗口closegraph 绘图函数 例 画圆 radius半径 circle 无填充 fillcircle 有边框填充 solidcircl
  • Study Note:CSIN3 Chapter 2: C# Language Basic

    I should familiar with this chapter If not I should hit the wall 2 1 A First C Program I m very glad to see the first C
  • launch4j

    launch4j 3 5 win32 百度百科 http baike baidu com view 2254377 htm launch4j是Java应用程序的Windows本地 可执行文件 exe 封装器 提供了本地弹出屏幕 应用程序图标
  • 【大数据】HiveQL:索引

    HiveQL 索引 Hive 只有有限的索引功能 Hive 中没有普通关系型数据库中键的概念 但是还是可以对一些字段建立索引来加速某些操作的 一张表的索引数据存储在另外一张表中 这是一个相对比较新的功能 所以目前还没有提供很多的选择 Hiv
  • 计图:5秒训好NeRF!已开源

    金磊 转载整理自 图形学与几何计算量子位 公众号 QbitAI 计图 Jittor 框架的NeRF模型库JNeRF正式开源了 通过JNeRF可以5秒训练好NeRF模型 见图1 Jittor成为首个支持Instant NGP的深度学习框架 图