当前位置: 首页 > 科技观察

极兔:五秒训练NeRF!开源

时间:2023-03-18 12:31:28 科技观察

本文经AI新媒体量子位(公众号ID: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需要一个与框架高度兼容的统一、高效的模型库,建立统一的流程,提高科研效率。JNeRFArchitectureJNeRF模型库分析了现有的NeRF方法,将NeRF的主要训练过程概括为如图3所示的七个模块。不同模块之间相互解耦,便于调用和替换。由于时间有限,JNeRF目前只支持其中的少数几个,JNeRF将在未来继续支持更多有代表性的NeRF工作。也非常欢迎您在GitHub上为JNeRF贡献代码。△图3:NeRF的训练过程JNeRF支持Instant-NGPNvidia的工作Instant-NGP[2]于今年年初发布,受到了学术界和工业界的广泛关注。github开源仓库目前已获得7k+stars。通过哈希编码和自定义优化,这项工作使NeRF能够在5秒内训练出高质量的结果。经过我们的分析,Instant-NGP能够在5秒内训练出NeRF,不仅是因为hash编码的方式,还有Nvidia对硬件的极致优化。△图4:Instant-NGP算法流程Instant-NGP能够在5秒内训练出NeRF的效果给学术界和工业界都带来了很多可能性,但是Instant-NGP的实现还存在一些问题:它的源代码是完全基于Cuda编写,对于习惯Python的用户来说,使用门槛较高。Instant-NGP没有成熟的深度学习框架支持,无法适配各种常用的NeRF变体模型;为了追求极致的效率优化,Nvidia的源代码不同功能间耦合严重,难以修改。基于JNeRF实现的Instant-NGP具有以下优势:准确复现了论文的速度和要点(见表1),其他深度学习框架复现的Instant-NGP在速度上远远落后于原论文和积分。Jittor是世界上唯一成功复现Instant-NGP的框架。△表1:与InstantNGPJNeRF原文对比非常高效,其训练速度可达133iter/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/JNeRFGitLink链接:https://www.gitlink.org.cn/jittor/jner??f