[]2D变3D,视角随意换,且不用3D建模,谷歌伯克利神还原高清立体感( 二 )
通过体积渲染技术将这些值合成为RGB图像 。
渲染函数是可微分的 , 所以可以通过最小化合成图像和真实图像之间的残差 , 优化场景表示 。
文章图片
文章图片
需要进一步说明的是 , MLP使用8个完全连接层(ReLU激活 , 每层256个通道)处理输入 , 输出σ和256维特征向量 。然后 , 将此特征向量与摄像机视角连接起来 , 传递到4个附加的全连接层(ReLU激活 , 每层128个通道) , 以输出视点相关的RGB颜色 。
NeRF输出的RGB颜色也是空间位置x和视图方向d的5D函数 。
文章图片
文章图片
这样做的好处可以通过对比来体现 。可以看到 , 如果去掉视点相关 , 模型将无法重现镜面反射;如果去掉位置编码 , 就会极大降低模型对高频几何形状纹理的表现能力 , 导致渲染出的外观过于平滑 。
另外 , 针对高分辨率的复杂场景 , 研究人员还进行了两方面的改进 。
其一 , 是输入坐标的位置编码 , 可以帮助MLP表示高频函数 。
其二 , 是分层采样 。用以更高效地采样高频表示 。
文章图片
文章图片
GitHub代码开源
目前 , NeRF项目的代码已经在GitHub上开源 。
文章图片
文章图片
代码主要基于Python 3 , 还需要准备的一些库和框架包括:TensorFlow 1.15、matplotlib、numpy、imageio、configargparse 。优化一个NeRF
研究人员表示 , 优化NeRF只需要一个GPU就可以完成 , 时间方面 , 需要花费几个小时到一两天(取决于分辨率) 。
而从优化的NeRF渲染图像 , 大约只需要1~30秒时间 。
运行如下代码可以获取生成Lego数据集和LLFF Fern数据集:bashdownload_example_data.sh
若想优化一个低解析度的Fern NeRF:pythonrun_nerf.py--configconfig_fern.txt
在经过200次迭代之后 , 就可以得到如下效果:
文章图片
文章图片
若想优化一个低解析度的Lego NeRF:pythonrun_nerf.py--configconfig_lego.txt
在经过200次迭代之后 , 就可以得到如下效果:
文章图片
文章图片
开始渲染
运行如下代码 , 为Fern数据集获取经过预训练的高分辨率NeRF 。bashdownload_example_weights.sh
渲染代码 , 在 render_demo.ipynb 中 。
另外 , 你还可以将NeRF转换为网格 , 像这样:
文章图片
文章图片
具体示例 , 可以在 extract_mesh.ipynb 中找到 。还需要准备PyMCubes、trimesh和pyrender包 。关于作者:三位青年才俊
这篇论文的研究团队 , 来自加州大学伯克利分校、谷歌研究院和加州大学圣地亚哥分校 。
推荐阅读
- 【人像】轻薄小巧的全新iPhone SE发布 年轻人买iPhone也不用换肾了
- [用户461430234816244]手机总是提醒更新系统, 用不用每次都更新? 维修师傅如是说
- #外观#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
- 「自行车」用放大镜升级单车,再也不用回头看
- 「动物」科普丨被水生生物吃掉的塑料,给环境研究带来新视角
- #轻度玩机#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
- ##苹果用户不用羡慕 Android 的长截图,5 款 iOS 长截图应用横评
- 『』一加手机8系列5399元起售,刘作虎称做高端市场不用冲
- 努比亚:努比亚Play官宣:配5100mAh电池,2天不用充电
- 「互联网的一些事」家里没网络就不用上网课了?不,美国这个学区搞了个 WiFi 校车