龙空技术网

Nvidia发布基于插值光栅化的微分渲染器(DIB-R)生成3D对象模型

图像算法 631

前言:

现在朋友们对“光栅化插值”大约比较看重,同学们都需要分析一些“光栅化插值”的相关文章。那么小编也在网上汇集了一些有关“光栅化插值””的相关知识,希望兄弟们能喜欢,看官们快快来学习一下吧!


Nvidia研究人员将于本月在温哥华举行的年度神经信息处理系统会议(NeurIPS)上介绍他们的模型。


他们提出了一个完整的基于光栅化的微分渲染器,可以通过分析来计算梯度。当包裹在神经网络周围时,他们的框架学会了从单个图像预测形状,纹理和光线,并且展示了他们的框架“以学习3D纹理形状的生成器。


应用非常的广泛,比如从摄像机的实时视频流中提取的静止图像可以立即转换为3-D模型,从而使自动驾驶汽车能够准确地确定需要避免的大型卡车的尺寸,DIB-R甚至可以提高负责识别人员并跟踪人员的安全摄像机的性能,因为即时生成的3D模型将使人员在视野范围内移动时更容易进行图像匹配。

团队在四张2D鸟类图像(最左侧)上测试了DIB-R。

相关工作


可微分栅格化:


OpenDR是基于可微分栅格化的渲染器系列,它使用一阶泰勒逼近近似于像素位置的梯度,并使用自动微分通过用户指定的前向渲染程序进行反向传播。在这种方法中,梯度仅在网格面的边缘周围的一小段中为非零,这势必会影响性能。


手工设计一个近似的梯度定义,以实现人脸在图像像素之间的移动。近似渐变的使用以及缺乏全彩信息会导致嘈杂的3D预测,而不会产生凹面特征。为了分析计算梯度,Paparazzi建议将图像梯度反向传播到面部法线,然后通过链法则将其传递到顶点位置。但是,它们的梯度计算仅限于特定的照明模型,并且使用脸部法线进一步阻止了将它们的方法应用于平滑阴影。设计C∞光滑可微分渲染器,以估计3D几何,同时忽略光照和纹理。支持每个顶点的颜色,并在边界附近模糊化渐变,从而产生有线效果,但无法覆盖整个图像。着重于点云的渲染,并采用可微分的重投影损失来限制预定点云的分布,从而失去了点连通性并且无法处理纹理和光照。


最近提出的SoftRas-Mesh引入了一种光栅化的概率公式,其中每个像素都被软分配给网格的所有面。在引发更高的计算成本的同时,这种巧妙的技巧还可以分析梯度。与我们的工作平行,SoftRas-Color扩展了此框架,以合并顶点颜色并在理论上支持纹理和照明。但每个像素中的所有面孔都会受到影响,因此可能会有模糊的问题。与我们的并行工作之间的主要区别在于,类似于我们将每个前景像素指定到最前面,并通过将栅格化视为局部网格属性的插值来计算前景像素的解析梯度。这使我们的渲染效果与OpenGL管道相同,并且自然支持针对所有顶点属性的优化,此外还使我们的管道可以扩展到各种不同的照明模型。与之相反,它也使用基于插值的方法,但是应用于整个图像,我们的光栅化模块允许通过全局特征的聚合来软分配背景像素。


对抗性3D对象生成

在大量工作中,都使用了生成性对抗性网络(GAN)来通过深度学习生成3D形状。尽管这些方法需要完整的3D监督,但是可区分的渲染框架允许仅使用2D监督来学习3D对象分布。我们在同一应用程序中展示模型,我们是第一个学习形状和纹理生成器的模型。


DIB-R:基于微分插值的渲染器



渲染pipeline

许多流行的渲染API(例如OpenGL和DirectX3D)将渲染3D场景的过程分解为一组顺序的用户定义程序(称为着色器)。尽管存在许多不同的着色器类型,但顶点,光栅化和片段着色器是建立完整渲染管线的三个最重要的步骤。从3D多边形网格渲染图像时,

首先,顶点着色器将场景中的每个3D顶点投影到定义的2D图像平面上。然后使用栅格化来确定这些顶点定义的图元覆盖哪些像素以及覆盖哪些像素。


最后,片段着色器计算每个像素如何被覆盖它的图元着色。可以轻松定义顶点着色器和片段着色器,以使它们完全可区分。通过与相应的3D模型,视图和投影矩阵相乘,将3D点投影到2D图像平面上,可以直接区分顶点着色器操作。在片段着色器中,像素颜色由局部属性(包括分配的顶点颜色,纹理,材质属性和照明)的组合决定。尽管此信息组合的过程可能会相对于所选渲染模型有所不同,但在大多数情况下,这可以通过应用完全可微分的算术运算来实现。渲染管道剩下的全部内容就是栅格化着色器,这是主要的挑战,因为它需要固有的不可微分的操作。在以下部分中,我们描述了对场景进行栅格化的方法,以便可以分析确定此操作的派生类。

可微分栅格化

首先仅考虑一个或多个面所覆盖的前景像素。在这里,与标准渲染相反,在标准渲染中,像素的值是从覆盖它的最接近的面开始分配的,我们将前景栅格化视为顶点属性的插值。对于每个前景像素,我们执行z缓冲测试,并将其分配给最近的覆盖面。每个像素仅受此面影响。如图1所示,位置fi处的像素被面fj覆盖,具有三个顶点〜v0,〜v1,〜v2,每个顶点分别具有自己的属性:u0,u1,u2。〜pi和〜vi是图像平面上的2D坐标,而ui是标量。我们使用脸部顶点属性的重心插值来计算此像素的值Ii:

其中权重w0,w1和w2是使用可微函数Ωk(在附录中提供)在顶点和像素位置上计算的:

虽然重心插值已在OpenGL管道中广泛使用。在这里,我们得出了可微的重构。使用这种方法,可以很容易地将梯度从定义在输出图像上的损失函数L通过像素值Ii反向传播到通过链法则的顶点属性uk:

其中N是被脸部覆盖的像素数。现在考虑没有面部覆盖的像素,我们将其称为背景像素。请注意,在上面的公式中,背景像素的渐变不能向后传播到任何网格属性。但是,背景像素对3D形状提供了严格的约束,因此在学习几何图形时,来自它们的渐变会提供有用的信号。


渲染模型



在等式1中,我们通过抽象顶点属性u0,u1和u2的插值来定义像素值Ii。正如我们的渲染器期望的是网格输入一样,顶点位置自然是这样的属性之一,但是我们同时支持大量其他顶点属性,如附录所示。在以下部分中,我们概述了光栅化可以插值然后再传播通过的顶点属性,以及支持这些属性的渲染模型。附录中显示了此信息的完整概述。

基础模型

我们的DIB-R支持基本的渲染模型,在这些模型中,我们可以直接使用顶点颜色或纹理绘制图像。为了定义网格的基本颜色,我们支持顶点属性,即在学习的或预定义的纹理贴图上的顶点颜色或u,v坐标。像素值分别通过顶点颜色的双线性插值或投影的纹理坐标确定。

照明模型

我们还支持3种不同的局部照明模型:Phong Lambertian和Spherical Harmonics,它们的照明效果与法线,光和眼睛方向有关。

图2:我们通过对多个网格属性进行优化来对DIB-R进行完整性检查。 我们优化w.r.t. 不同渲染模型中的不同属性:(a,b)顶点颜色渲染模型中的顶点位置和颜色,(c,d)纹理渲染模型中的纹理和纹理坐标,(e,f)Lambertian模型中的顶点和相机位置 ,(g)球谐模型的照明,(h)Phong模型的材料。

DIB-R的应用

我们通过三种具有挑战性的ML应用程序来证明我们框架的有效性。

从单个图像预测3D对象Geometry and color:我们首先将方法应用于仅使用2D监督从单个图像预测3D网格的任务
通过2D监督的纹理形状的3D GAN我们通过训练生成对抗网络(GAN)仅使用2D监督即可生成3D纹理形状,从而进一步证明了我们方法的威力。实验我们的数据集包含ShapeNet中的13个对象类别数据集。我们将与相同的对象划分用于训练和测试集中。我们从24个不同的视图渲染每个模型,以创建用于2D监督的RGB图像数据集。为了演示DIB-R支持的多种渲染模型,我们使用4种不同的渲染模型渲染每个图像:1)没有光照效果的基本模型;2)带有朗伯反射率;3)带有Phong阴影;4)带有球形谐波。

从单个图像预测3D对象:几何和颜色

表1提供了评估。在这两个指标的几乎所有类别中,我们的DIB-R均明显优于其他方法。就3D IOU和F得分而言,我们分别以1.92 / 4.23点和5.98 / 1.23点超过SoftRas-Mesh / N3MR。由于该实验的唯一区别是渲染器,因此定量结果证明了我们方法的优越性能。定性示例如图4所示。与SoftRas-Mesh和N3MR相比,我们的DIB-R忠实地重建了3D形状的精细颜色和几何形状。


从单个图像预测3D对象:几何,纹理和光

我们在表2和图5中提供结果。由于ShapeNet不提供地面真实的UV纹理,因此我们使用预测的纹理/纹理+照明和GT图像计算渲染图像的L-1差异。与N3MR相比,我们在数量和质量上均取得了明显更好的结果。与N3MR相比,我们在质感上的L-1差异降低了约40%,在照明方向上的角度差异减小了60%。如图5和附录所示,我们在形状,纹理和光照方面也获得了明显更好的视觉效果。


具有对抗性损失的纹理和光照结果

我们在图6中显示定性结果。请注意,网络很好地解开了纹理和光线,并生成了准确的3D形状。此外,与图5相比,逆向损耗有助于使预测的纹理看起来更清晰。为进一步研究纹理和光的纠缠,我们使用相同的汽车模型渲染测试输入图像,但改变照明方向(图7)。我们的预测可以恢复形状,纹理图和照明方向。图8提供了更多示例。在左侧,我们固定了照明和纹理,但在不同的摄影机视图中渲染了汽车,以说明跨视点的预测的一致性。在图的右侧,我们渲染具有不同亮度常数的图像,但固定了照明方向,纹理和相机视图。在这里,我们发现我们的模型无法准确预测光泽度常数。在这种情况下,纹理贴图错误地补偿了光泽效果。这可能是因为光亮效果不足以通过2D监督通过神经网络来学习。我们希望在以后的工作中解决这个问题。

通过2D监督的纹理形状的3D GAN

在图10中显示了从我们学到的汽车形状和纹理分布中随机抽样的结果。该图证明了形状和纹理生成的高质量以及多样性。我们还显示了图11中潜在代码之间的插值所产生的渲染网格的结果,以证明我们学习到的分布的鲁棒性。


结论

在本文中,作者提出了一个完整的基于栅格化的可微分渲染器,可对其进行解析计算。当我们的框架包裹着神经网络时,它学会从单个图像预测形状,纹理和光线。我们进一步展示了我们的框架,以学习3D纹理形状的生成器。


论文地址:

标签: #光栅化插值