爱笑的小姐姐 · 2022年03月04日

一分钟训练NeRF

NeRF是什么

NeRF 是 2020 年 ECCV 上获得最佳论文荣誉提名的工作,NeRF 将隐式表达推上了一个新的高度,仅用 2D 的 posed images 作为监督,即可表示复杂的三维场景。

image.png

NeRF的网络结构

NeRF的主体网络结构是简单的8层全连接网络,输入为五维的连续坐标,输出为体积密度和RGB颜色信息。

image.png

在采样的过程中,我们顺着相机的视角进行一系列点的采样,并且运用传统的体积渲染的方法将得到的颜色信息和体积密度映射到一张二维图片上。

image.png

NeRF的训练

针对复杂几何和外观的渲染,NeRF依赖于Positional Encoding的特征工程。

image.png

Positional Encoding

简而言之,对于输入![[公式]](https://www.zhihu.com/equatio...),对原始的坐标以及视角方向的每一维度都做相同的操作,然后再输入到网络中,事实上在官方的代码实现中,输入的是![[公式]](https://www.zhihu.com/equatio...),也就是说原始信息也保留了下来。

image.png

NeRF训练效果

采用Positional Encoding方法编码的效果如上图所示,可以看到这种multi-resolution的feature embedding还是非常有效的。不过渲染单一场景的训练时间需要几小时,这样就限制了NeRF的应用范围和商用价值。

NeRF加速训练:

最近,英伟达在Instant Neural Graphics Primitives with a Multi-resolution Hash Encoding 提出了多分辨率哈希编码来代替vanilla NeRF中的positional encoding编码方式。

image.png

多分辨率哈希编码

上图采用维护L个不同分辨率的可训练哈希表,这样做的好处有如下几点:

1. 便于区分不同分辨率的信息

2. 降低对后面MLP的大小需求,论文中后面仅采用了2层MLP,O(10k)参数

3. 哈希表存在Cache中训练速度可以提升十到百倍

除此之外,基于tiny-cuda-nn 进行实现上述算法,实现了MLP的完全算子融合,可以大幅加速训练。针对NeRF的问题,整体的训练效果如下图所示。

image.png

NeRF训练结果:多分辨率哈希编码和其他SOTA算法

可以看出基于哈希表可以将之前小时级别的训练时长压缩到分钟甚至秒级。

总结

我们可以看到好的算法落地需要强大的工程能力支持。AI框架作为其中核心引擎,其重要性不言而喻。华为昇思MindSpore AI框架致力于打造全场景统一的AI计算框架,欢迎各位老师,同学积极参与MindSpore社区的建设。

原文链接:知乎
作者: 于璠

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
18790
内容数
1342
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息