这般丝滑的美食展示,是否让跟随镜头移动的你食指大动?
再看这放大镜里流畅变化的弹簧,你敢相信,这完全是用静态图像合成的吗?
没错,这样的动图并非截自视频,而是来自AI的合成大法。
甚至只需手机随手拍摄的十几张2D照片,就能实时渲染生成。
比起大名鼎鼎的谷歌前辈NeRF,这只名为NeX的AI,能直接把每秒渲染帧数从0.02帧提升到60帧。
也就是说,渲染速度能提升3个数量级。
细节之处,也更加接近真实效果。
这项已经入选CVPR 2021 Oral的研究,是怎么做到的?
像素参数与基函数结合
多平面图像(MPI)视图合成技术,使得不用3D建模,只用少数几张图像还原多视角逼真3D效果成为可能。
不过,此前的MPI主要采用的是标准RBGα表示法,简单说就是把图像转换成RGBα平面,以进行后续的计算。
这样做的局限性在于,其表示出的物体外观仅与漫反射表面有关,与视角无关。
这就极大地限制了MPI可以捕捉的物体和场景类型。
为此,来自泰国科学技术研究所VISTEC的研究人员提出:将每个像素的参数转化为基函数的系数,进行线性组合,并以此创建与视图相关的效果模型。
就如上图所示,多平面图像中每个像素都由alpha透明值、基色k0和视图相关的反射系数k1…kn组成。
将这些系数和神经网络预测的基函数进行线性组合,就产生了最终的颜色值。
如此一来,像金属勺子在不同视角下的反射效果这样的信息,都能在合成图像中显示出来。
具体到整个NeX的结构,对于输入图像,首先根据不同平面深度,对像素坐标(x,y)进行采样,以构建出MPI中的每个像素。
然后,把这个数据喂给多层感知机(MLP),得到alpha透明度,以及和视图相关的基础系数(k1,k2,…,kn)。
这些系数再与显式的k0一起,与另一个MLP预测的基函数相乘,生成RGB值。
输出图像,如公式1所示,为所有平面复合运算的结果。
而在细节效果的提升方面,研究人员人员发现,通过比较渲染图像和真实值之间的差距,对基色k0进行优化,就可以得到很好的效果,显著减轻网络压缩和细节重现的负担,减少迭代次数。
研究人员还补充说,NeX可以被理解成是隐式辐射场函数的离散抽样。
至于实时渲染,论文指出,NeX MPI中的每一个模型参数都可以转换为图像。而给定预先计算好的图像,就可以在OpenGL/WebGL的片段着色器中实现上述公式1,实现捕获场景的实时渲染。
实验结果
有NeRF珠玉在前,NeX具体到数据上,到底有怎样的提升?
在运行时间方面,输入17张分辨率为1008×756的照片,批量大小为1的情况下,使用单个英伟达V100训练,NeX的耗时大概为18小时。
使用WebGL,此场景可以以每秒60帧的速度被渲染出来。
而在同一台机器上运行,NeRF则需要大约55秒才能生成一帧。
也就是说,NeX的渲染速度比NeRF要快1000倍以上。
与SRN、LLFF和NeRF相比,在峰值信噪比、结构相似性和图像感知相似度这三个指标上,NeX都达到了最佳。
而在定性比较中,可以看到,与NeRF相比,在颜色均匀的区域,NeX细节更清晰,噪声更少,更接近真实值。
LLFF虽然细节表现也很好,但当结果以视频形式呈现时,会产生跳跃和扭曲伪影。
可上手试玩
对了,如果你对NeX感兴趣,还可以到项目官网亲自感受一下实时渲染Demo。
还有手机版和VR版哟。