研究人员表示,高效的单像素点光栅化让他们能够实时显示超过 1 亿个像素点的点云场景。
一亿个像素点是什么概念?说白了,这些3D图像太逼真了,简直和拍照没啥区别。
这项研究最近在推特上收到了很大的关注,网友纷纷回应:impressive!同时,也有网友表示,这项研究确实利用了大规模动态输入点云的优势,而这原本是“超级难”的问题。
如下图所示,给定一组RGB图像和初始3D重建(图左),该渲染方法能够合成新的帧,并优化场景参数。
论文地址:https://arxiv.org/pdf/2110.06635v1.pdf
用神经网络自动学习合成高清3D图像已有成效,但之前还难以做到大动态的视角变换,他们是怎么实现的呢?
1
秘密:点云输入和可微优化
合成逼真的虚拟环境是计算机图形学和计算机视觉研究的热门领域之一。
其中,3D 形状的编码形式是非常关键的部分,人们通常会考虑三角形网格、体素网格、隐函数和点云,每种表示法都有各自的优缺点。
从左到右,分别是点云、体素、三角网格形式的兔子3D图像。
为了有效渲染不透明表面,人们通常选择三角形网格。
体素网格常用于容量表示,而隐函数适用于精确描述非线性分析表面(比如a^2+b^2+c^2=1,就是一个单位球面。
另一方面,点云具有易于使用的优点,因为不必考虑拓扑性质,非常便于作为3D图像合成的中间输出阶段。不必考虑拓扑性质是指,无论是圆环还是球体,其表示形式都是一样的。
在2000年左右,点云渲染,尤其是点散布,已在计算机图形学中得到广泛研究。
与此同时,人们越来越关注基于图像的渲染技术。也就是基于粗略的、重建的3D模型以及已有的一组物体图像,来合成新的视图。
这些方法存在输入不精确的问题,例如,如果几何图形包含孔或输入图像没有完全对齐,则会出现伪影。
而基于神经图像的渲染方法使用神经网络来去除这些伪影,可以生成前所未有的如照片般逼真的高质量新视图。
图源:https://arxiv.org/pdf/2008.05511.pdf
Aliev等人则表明,将传统的点光栅化器与深度神经网络配对也是可行的。
图源:https://arxiv.org/pdf/1906.08240.pdf(Aliev et al.)
这一发现对3D重建尤其有益,因为其通常使用密集点云作为初始输出。因此,我们可以跳过不必要的、可能出现错误的三角测量,直接可视化重建的场景。
在本文中,研究人员的方法建立在 Aliev 等人的管道之上,并以多种方法对其进行改进。
图2:基于点的HDR神经渲染管道概览。
如上图所示,由纹理点云和环境图组成的场景被光栅化为一组具有多种分辨率的稀疏神经图像。
深度神经网络重建HDR图像。
然后通过一个基于物理的可微色调映射器将其转换为给定新视点场景的 LDR图像。
在训练阶段,可以同时优化矩形框中的所有参数以及神经网络。
在整个管道中,他们特别添加了一个物理的、可微分的相机模型和一个可微分的色调映射器,并提出了一个公式,以更好地近似单像素点光栅化的空间梯度。
可微分的好处是,不仅可以优化神经点特征,还可以在训练阶段校正不精确的输入。
因此,系统可以根据神经渲染网络的视觉损失来调整这些参数:
相机模型
相机角度
点云位置
点云颜色
环境贴图
渲染网络权重
渐晕
相机响应函数
每张图像的曝光和白平衡
得益于此,图像的渲染质量得到了显著提升。
此外,该方法能够合成任意的高动态范围成像(HDR,即大幅度的曝光变化)和LDR(低动态范围成像,容易缺失图像细节)设置,并校正曝光不足或过度曝光的视图(如下图所示)。
同时,深度神经网络内部的参数数量也显著减少,因为亮度和颜色变化由物理上正确的传感器模型单独处理。
如下表所示,与其他可微渲染器相比,本文的方法效率高出大约两个数量级。
表I:RTX 2080 Ti上1920×1080图像的正向和反向渲染时间(以毫秒为单位)。
因此,渲染性能提高了,过拟合伪影也减少了。
总而言之,这篇论文的研究成果如下:
• 用于场景细化和可视化的端到端可训练的基于点的神经渲染管道。
• 使用伪影几何概念的单像素点碎片的可微分光栅化器。
• 可模拟数码摄影镜头和传感器效果的基于物理的可微分色调映射器。
• 用于大型点云的高效多层渲染的随机点丢弃技术。
最后,该研究已开源:https://github.com/darglein/ADOP
图11:在罗马船只数据集上合成的新视图。使用与参考照片相同的曝光值对图像进行渲染。在右列中,每个像素的误差都是可视化的。
2
管道详解
我们再详细介绍一下模型管道。
管道的第一步是可微分光栅化器(图2左)。
它通过使用相机参数将每个点投影到图像空间,将其呈现为单个像素大小的碎片。
如果该像素点通过一个测试,它就会在神经网络输出图像中占据一个描述符。所有未被点着色的像素都由从背景颜色填充。
由于我们将点渲染为单个像素大小的碎片,输出的图像可能会非常稀疏,这取决于点云的空间分辨率和相机距离。
因此,以不同的比例渲染多个图层,使输出图像密集化,并处理遮挡和照明问题。
神经渲染器(图2中间)采用多分辨率神经图像生成单个HDR输出图像。
它由一个四层全卷积U-Net和跳跃连接组成,其中较低分辨率的输入图像连接到中间特征张量。使用平均池化执行下采样,并通过双线性插值对图像进行上采样。
研究人员主要使用门控卷积,它最初是为填孔任务而开发的,因此非常适合稀疏点输入。
总体而言,该网络架构类似于 Aliev等人提出的架构,只减少了一层,并进行了一些修改,以支持HDR成像。
首先,去掉批归一化层,因为它们将中间图像的均值和标准差归一化为固定值。这会使得总传感器辐照度(类似光强概念)丢失,并且无法从3D点传播到最终图像。
此外,如果场景的亮度范围相当大(大于 1 : 400),会以对数方式存储神经点描述符。否则,神经描述符将线性存储。对于对数描述符,在光栅化过程中将其转换为线性空间,以便卷积操作仅使用线性亮度值。
管道中的最后一步(图2右侧)是可学习的色调映射操作符,它将渲染的HDR图像转换为 LDR。
该色调映射器模拟数码相机的物理镜头和传感器特性。因此,它最适合捕捉智能手机、数码单反相机和摄像机的LDR图像。
3
局限性
尽管合成效果如此惊艳,在实验中,研究人员也发现了一些局限性。
其中一个限制是,由于不同参数的数量巨大,不容易寻找合适的超参数。必须平衡纹理颜色、结构参数、色调映射设置和神经网络权重的学习速率。为了找到适合所有场景的可行设置,需要进行广泛的网格搜索。
另一个限制是,点位置的优化对于中到大的学习率是不稳定的。因此,该管道需要合理的初始点云,例如,通过多视图立体系统或 LiDaR 扫描仪。
研究人员认为这个问题是由光栅化过程中的梯度逼近引起的。它适用于相机模型和相机角度优化,因为数千个点的空间梯度在一个优化器步骤中得到平均。然而,对于位置点梯度,仅使用单个近似梯度来更新其坐标。因此需要非常低的学习率来平均点梯度随时间的变化。
最后,由于是单像素点渲染,当相机离物体太近或点云非常稀疏时,可能会出现孔。这是因为神经网络结构只能填补一定大小阈值的洞。在实验中,研究人员通过人为地增加点密度来减少这个问题。然而,这并不是一个普遍可行的解决方案,因为在自由视图环境中,用户仍然可以任意移动相机以靠近物体表面。研究人员表示,他们未来的工作应该会从这里开始,例如,可以尝试在放大过程中动态生成具有内插神经描述符的新点。