本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

函擎 发自 凹非寺

量子位 报道 | 公众号 QbitAI

万万没想到,把照片 变3D 这件事,离了神经网络也是这般丝滑。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

而在此之前,新视角合成这方面的“大牛”,是近两年大火的 NeRF (神经辐射场)

它是一个简单的 全连接神经网络 ,使用2D图像的信息作为训练数据,还原拥有体积的3D场景。

但最近,来自伯克利大学的研究人员提出了一个叫做 Plenoxels 的方法。

不需要神经网络,仅仅通过梯度下降和正则化便实现了同样的效果,而且速度还快了 100倍

那么他们是如何做到这点的呢?

由NeRF到Plenoxels的进化

为了帮助大家理解 Plenoxels ,我们先来简单介绍一下 NeRF 模型。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

要准备 NeRF 的数据,我们首先需要一部相机。

拍了很多张各个角度的照片后,沿相机射线将每一张2D图片的 坐标 视图方向 构成一个5D向量 (x, y, z, θ, φ)作为mlp (多层全连接神经网络)的输入。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

我们从图(b)上可以看到,射线上的点有了颜色,每点的颜色c = (r, g, b)和密度(σ)就是输出向量。

接着 NeRF 使用体积渲染技术将得到的颜色与密度进行3D渲染。

由于渲染函数是可导的,我们可以最小化合成效果与实际效果的误差,从而进行神经网络参数的优化。

其中mlp使用的参数多可达到5MB,实际训练起来就会发现训练时间十分漫长,通常要1-4天。

这个速度与 Plenoxels 的11分钟相比确实是无法接受的。

2D图片变3D,听起来不是个小工程, Plenoxels 不用神经网络是如何实现的呢?其实并不复杂。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

Plenoxels 发现 NeRF 成功的秘诀其实是它的体积渲染方程,与其最耗时的神经网络关系不大。

那么你一定会好奇这个体积渲染方程究竟是何方神圣,我们就先来看一下。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

σi代表不透明度,ci代表颜色,δi代表距离。Ti代表有多少光经过射线上的点i,是通过密度和距离计算的。

这个体积渲染方程其实就是将射线上每个点的颜色,不透明度,光,还有距离进行了一个整合处理。

体积渲染方程介绍过了,那么不需要神经网络的 Plenoxels 是如何表示图片的呢?

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

Plenoxels 首先重建了一个稀疏的体素表格,每个被占用的体素都带有 不透明度 球谐系数

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

我们的颜色信息就存储在这些 球谐系数 中,每个颜色通道需要9个系数表示,一共有三个颜色,那么每个体素就需要27个 球谐系数 来表示它的颜色。

相机射线经过的每个点的颜色和不透明度,就是通过其最近处的8个体素的三线性插值计算的。

接着与 NeRF 一样,使用体积渲染技术将得到的颜色与不透明度进行3D渲染。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

Plenoxels 通过对渲染的像素的 平均平方误差 (MSE)进行最小化,来优化体素的不透明度和球谐系数,并且使用 TV正则化 帮助消除噪声。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

我们可以看出,是否使用 TV正则化 的效果区别还是很大的!

提速100倍,仅需11分钟

我们用最直观的方法对比一下两个模型速度上的差距。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

看到了吗,只用几秒 Plenoxels 就可以达到一个比较清晰的效果,而 NeRF 只有一个模糊的影子。

同样是单个场景, NeRF 使用型号为v100的单个GPU训练需要耗时1-2天,而 Plenoxels 使用单个GPU通常只需要11分钟。

这时有一个问题一定萦绕在你的脑海里,速度提升了这么多,效果真的不会受影响吗?

空口无凭,我们还是要用数据说话。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

PSNR (峰值信噪比):是最普遍,最广泛使用的评鉴画质的客观量测法,PSNR值越大,就代表失真越少。

SSIM (结构相似性):衡量实际图像和合成图像的相似度,当两张图像一模一样时,SSIM的值等于1。

LPIPS (学习感知图像块相似度):用于度量实际图像和合成图像之间的差别,值越低代表图片越相似。

可以看到 Plenoxels 对比其他模型的表现不说样样最好,但也绝不落后他人,关键在于它的速度整整快了 两个数量级

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

正因为 Plenoxels 速度上的大幅提升,使得一些目前处于瓶颈的下游应用变得可能,例如 多次反射照明 (multi-bounce lighting) 大型场景的3D建模 (3D generative models)

如果能在相机和体素散列上进行有效优化,模型甚至可以让端到端三维重建成为拥有 pipeline 的实际应用。

相信 Plenoxels 的潜力不仅于此,让我们一起期待它落地后的成果吧!

UC伯克利本科生一作

效果强劲的 Plenoxels 来自UC伯克利的学生团队,一作 Alex Yu 还是一名 本科生

在大学里,他不仅同时学习 计算机 应用数学 两门专业,还在伯克利的 BAIR ( Berkeley Artificial Intelligence Research)实验室进行3D计算机视觉的相关研究。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

Alex计划在2022的秋季开始他的 PhD 旅程,让人不禁感叹AI界真是人才辈出。

在未来经过PhD的学习后,他又会迸发出怎样的能量呢,让我们一起拭目以待吧!

GitHub代码开源

目前, Plenoxels 项目的代码已经在GitHub上开源。

本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

小伙伴们要注意的是,拍摄照片的时候要尽可能环绕物体,并且尝试不同的高度哦。

快来试试效果如何吧!

参考链接:

[1]https://alexyu.net/plenoxels/?s=09 [2]https://github.com/sxyu/svox2 [3]https://www.casualganpapers.com/eccv-3d-novel-view-synthesis-differentiable-rendering-implicit-representation/NeRF-explained.html [4]https://www.casualganpapers.com/nerf-3d-voxels-without-neural-networks/Plenoxels-explained.html

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态