基于物理的可微渲染

可微渲染(Differentiable Rendering)是一种新兴的渲染技术,它结合了计算机图形学和机器学习,特别是深度学习的技术。与传统的渲染技术相比,可微渲染最大的特点是其渲染过程是可微分的,这意味着可以通过计算渲染图像的梯度来优化渲染参数。需要通过梯度下降算法来学习场景参数、光照条件或材料属性等任务中。

可微渲染的目的

可微渲染的最终目的, 不同于传统渲染, 不是尽可能渲染出逼真的图片, 也不是为了求出尽可能精
确的导数, 而是为了作为一个工具, 使得顶层应用 (一般是一个优化问题) 优化得更好 (渲染出逼真的
结果以及求出精确的导数, 往往有助于优化问题). 具体表现为损失函数的梯度流能够传播回输入, 指
导整个优化过程. 所以衡量可微渲染方法的重要指标就是, 梯度流是否能够很好地传播回输入, 是否
能够正确地引导输入朝着损失函数更低的方向改变. 这个问题需要结合应用具体分析, 不同的应用有
不同的需求, 实践的时候可以参考成功的案例, 详见第 7 节. 这里我们一般化地分析一下不同方法梯
度流的行为. 


可微渲染与传统渲染的区别


可微性:传统渲染过程通常是不可微分的,因为它们涉及复杂的几何和光照计算(参数不连续),而可微渲染则被设计为可以计算梯度。
应用场景:传统渲染主要用于图形渲染和视觉效果制作,而可微渲染更多地用于机器学习领域,如场景重建、图像合成、风格迁移等。
计算过程:传统渲染关注的是如何高效、真实地渲染图像,而可微渲染更关注如何通过渲染过程来优化某些参数

可微渲染是一个可以微分求导的渲染过程, 它的正向是渲染, 逆向是求像素 对场景参数的微分. 由于传统的渲染不可微, 难以设计基于优化和基于深度学习神经网络的逆渲染方 法, 可微渲染技术的提出大大地增加了这些方法的设计空间.


可微渲染的流程


场景设置:根据输入数据设置渲染场景,包括几何模型、材质、光源和相机参数。
前向渲染:执行渲染过程,生成初始图像。
梯度计算:通过可微渲染技术计算图像的梯度,这些梯度反映了渲染参数对图像的影响。
参数更新:使用梯度下降或其他优化算法更新场景参数。
迭代优化:重复渲染和梯度计算过程,直到达到预定的优化目标或收敛。

可微渲染的光栅化:

可微的光栅化操作:传统的光栅化操作,如三角形填充、深度测试和混合,通常不是可微分的。为了实现可微渲染,需要对这些操作进行修改或替换,以支持梯度计算。
可微分的着色器:在光栅化过程中,着色器用于计算像素的颜色。为了使这些操作可微分,需要使用可微分的着色器,例如基于物理的渲染(PBR)着色器,它们可以输出与输入参数(如光照、材质属性等)相关的梯度。
梯度传播:在光栅化过程中,需要能够将像素级别的梯度传播回原始的三维场景参数,如几何形状、纹理、光照等。这通常涉及到复杂的数值方法和优化技术。
优化算法:可微渲染通常与优化算法结合使用,如梯度下降,以调整场景参数以生成更优化的图像。这些算法需要能够处理光栅化渲染过程中产生的梯度。

可微渲染的解决思路:

可微渲染不能离开传统的渲染模型 , 但传统的渲染方法不可微 , 所以可微渲染往往是基于某种传统渲染模型, 通过引入新的技术 , 使得我们可以得到渲染结果对输入的导数 . 主流的可微渲染方法往往基于以下两类思想, 一类是使用近似的方法, 求得近似导数用于反向传播; 另一类是改编传统渲染模型, 让像素对顶点可导。
上述第 1 类方法不改变传统渲染的正向过程 , 虽然传统渲染方法天然不可微 , 但使用近似的方法 , 能求得近似导数用于反向传播. 这类方法的核心在于如何更好地近似渲染过程的导数 , 使得导数在某种观点下是一种有效的近似, 或是使得导数对优化输入有着指导意义 . 为了使得导数对优化输入有着指导意义, 有时导数会和应用相关 , 会根据损失函数的不同而不同 .
对于上述第 2 类方法, 由于传统渲染方法天然不可微, 需要对其进行改编, 使得改编后的渲染方 法依然拥有渲染的能力, 渲染结果不发生较大变化 , 但其过程完全可微 , 可以求得精确导数 . 这类方法通常改编其中光栅化的步骤, 因为这一步从连续空间映射到离散空间 , 是导致传统渲染不可微的原因 .

局部光照模型的可微渲染方法:

基于局部光照模型的可微渲染方法在处理具有高度先验信息的简单场景时具有重要意义。目前,主流的局部光照模型可微渲染方法大致分为两类:一类是求得近似导数用于反向传播,另一类是改编了传统渲染管线中的步骤,使像素对顶点可导。

OpenDR方法

  1. 基本思想:OpenDR方法是一种求得近似导数用于反向传播的方法。它对渲染过程进行了一定的限制,要求颜色是逐顶点确定的,而不是逐片段确定。

  2. 渲染过程:在正向渲染过程中,顶点的颜色在光栅化之前已经计算完成,然后在光栅化过程中,通过插值顶点颜色得到片段的颜色。

  3. 导数计算:OpenDR通过近似计算颜色对水平方向的导数,来求得渲染结果对输入的近似导数。具体来说,它根据像素和遮挡边界的关系,将像素分为内部像素和边界像素,并采用图像空间的一阶泰勒展开的方法来近似颜色对水平方向的导数。

  4. 优缺点:这种方法的渲染结果与传统渲染相同,但渲染过程受限,无法支持所有渲染方式。此外,OpenDR方法只考虑了水平方向的导数,没有考虑垂直方向的导数,因此对于垂直方向的优化效果不佳。

使用OpenDR方法的原因:OpenDR方法之所以被采用,是因为它提供了一个相对简单的方式来求得渲染结果对输入的近似导数,这为后续的优化和反向传播提供了基础。虽然该方法存在一定的局限性,但对于一些简单场景来说,它已经足够有效。

平滑光栅化方法

  1. 基本思想:平滑光栅化方法是一种近似导数的方法。它在反向传播梯度流时,通过平滑顶点移动对像素的影响,来近似计算像素对顶点坐标的导数。

  2. 渲染过程:平滑光栅化方法在渲染过程中与传统渲染相同,但在反向传播梯度流时,它将顶点移动导致像素颜色突变的地方进行平滑,用渐变代替突变。

  3. 导数计算:具体来说,它根据像素颜色变化量和顶点移动量来近似计算导数。这种方法渲染结果与传统渲染相同,但渲染过程不受限。

  4. 优缺点:平滑光栅化方法的优点在于渲染过程不受限,且可以支持垂直方向的优化。然而,这种方法需要存储顶点移动导致像素颜色变化的量,这增加了存储和计算的开销。

使用平滑光栅化方法的原因:平滑光栅化方法被采用的原因在于它提供了一种相对简单的方式来近似计算像素对顶点坐标的导数。这使得后续的优化和反向传播变得更加容易。尽管这种方法存在一定的存储和计算开销,但对于一些简单场景来说,这些开销是可以接受的。

基于概率分布的光栅化方法

  1. 基本思想:基于概率分布的光栅化方法改编了渲染步骤,使像素对顶点可导。它使用概率分布的方法来代替传统的光栅化,计算每个三角形在图片上的概率分布。

  2. 渲染过程:然后使用深度信息来混合不同深度的三角形的概率分布,从而得到渲染结果。

  3. 导数计算:这种方法渲染结果与传统渲染不同,但梯度可以传播到被遮挡的三角形,并且可以优化深度信息。

  4. 优缺点:基于概率分布的光栅化方法的优点在于梯度传播范围更广,可以优化深度信息。然而,这种方法需要存储每个三角形的概率分布,增加了存储和计算的开销。

使用基于概率分布的光栅化方法的原因:基于概率分布的光栅化方法之所以被采用,是因为它提供了一种更精确的方式来计算像素对顶点坐标的导数。这使得后续的优化和反向传播变得更加精确。尽管这种方法存在一定的存储和计算开销,但对于一些需要高精度渲染的场景来说,这些开销是可以接受的。

DIB-R方法

DIB-R是一种基于深度学习的可微渲染方法,它结合了深度学习框架TensorFlow和可微渲染技术,用于实现从二维图像重建三维模型的任务。DIB-R的全称是Differentiable Interpolation-Based Rasterization,它主要采用插值的方法来实现渲染过程的可微化。

DIB-R方法的特点如下:

  1. 处理前景和背景:DIB-R将渲染区域分为前景和背景两部分。前景区域是被至少一个三角形覆盖的区域,而背景区域则是没有被三角形覆盖的区域。

  2. 前景渲染:对于前景区域,DIB-R采用与TF Mesh Renderer类似的方法,使用最靠近的三角形的重心坐标来插值顶点属性,从而计算像素颜色。这使得渲染过程与传统的渲染方式相同。

  3. 背景渲染:对于背景区域,DIB-R采用了基于概率分布的渲染方法,类似于SoftRas。它使用概率分布来近似三角形对三角形外的影响,影响大小与像素到三角形的距离相关。通过这些影响进行计算,得到背景像素的Alpha值。

  4. 梯度传播:在梯度反向传播时,DIB-R将前景像素的梯度传播回所在三角形的顶点,而将背景像素的梯度传播回每一个顶点。这使得DIB-R在前景和背景区域的渲染更加自然和连续。

  5. 优缺点:DIB-R方法结合了前景渲染和背景渲染的优势,使得渲染结果更加逼真和自然。然而,由于需要存储三角形的概率分布和顶点属性,DIB-R方法的存储和计算开销较大。

DIB-R方法之所以被采用,是因为它提供了一种有效的渲染方式,可以处理前景和背景区域的渲染,同时实现了渲染过程的可微化。这使得DIB-R方法在从二维图像重建三维模型的任务中具有广泛的应用前景。尽管DIB-R方法存在一定的存储和计算开销,但对于需要高精度渲染的场景来说,这些开销是可以接受的。

全局光照模型的可微渲染方法

基于全局光照模型的可微渲染方法是一种通过模拟光线在场景中的传播和相互作用来生成逼真图像的技术。这些方法通常涉及复杂的数学和计算技术,以实现对光线传播的精确模拟。这里介绍三种基于路径跟踪的全局光照可微渲染方法:基于边采样的蒙特卡洛路径跟踪、重参数化不连续的被积函数和路径空间的可微渲染。

基于边采样的蒙特卡洛路径跟踪

  1. 基本思想: 基于边采样的蒙特卡洛路径跟踪方法将路径积分分为连续和离散两部分。在连续部分,使用传统的面积采样来估计积分。在离散部分,即遮挡边界,使用边采样来估计积分的不连续部分。这种方法可以有效地模拟光线在场景中的传播,并生成逼真的图像。

  2. 边采样: 在遮挡边界上,使用边采样来计算积分的不连续部分。通过蒙特卡洛方法,可以估计积分的不连续部分。在连续部分,使用传统的面积采样来估计积分。这种方法可以有效地模拟光线在场景中的传播,并生成逼真的图像。

  3. 优点: 该方法具有完全可微的正向过程,因此能够求出精确的导数。但需要假设场景中不包含点光源。

  4. 实现细节: 在实现上,将场景函数f(x,y)按三角形的边划分为多个子函数fi(x,y)。对积分求导后,将导数分为两部分,一部分在边上非零,另一部分在连续区域非零。在边上非零的部分使用边采样,而在连续区域非零的部分使用面积采样。这使得在遮挡边界上的采样可以连续变化,从而求出精确的导数。

重参数化不连续的被积函数

  1. 基本思想: 重参数化不连续的被积函数方法通过对积分进行参数变换,使不连续的位置与场景参数无关。通过在参数空间进行旋转等变换,可以抵消场景参数微小变化对不连续位置的影响。这种方法可以有效地模拟光线在场景中的传播,并生成逼真的图像。

  2. 参数变换: 通过在参数空间进行旋转等变换,可以抵消场景参数微小变化对不连续位置的影响。这种过程相当于一种新的采样过程。

  3. 优点: 求得的是近似导数,需要根据场景选择合适的参数变换。

  4. 实现细节: 具体实现时,首先对场景进行一次卷积,以消除不连续位置的影响。然后在卷积后的场景上进行旋转等变换,以抵消场景参数变化的影响。最后,在变换后的场景上进行积分,求得近似导数。

路径空间的可微渲染

  1. 基本思想: 路径空间的可微渲染方法将路径积分的微分拆分为内部项和边界项,并在路径空间使用蒙特卡洛法进行估计。内部项类似于路径积分的计算,而边界项则需要使用多向路径采样算法来估计。

  2. 内部项和边界项: 内部项类似于路径积分的计算,而边界项则需要使用多向路径采样算法来估计。这种方法可以有效地模拟光线在场景中的传播,并生成逼真的图像。

  3. 优点: 不改变路径跟踪算法,微分过程也在路径跟踪的框架内,求得路径积分的微分是无偏估计。

  4. 实现细节: 在实现上,首先定义一个参考布局,表示抽象的参数空间。然后,在参考布局上计算路径积分的内部项。对于边界项,使用多向路径采样算法在路径空间进行采样,以估计边界项。最后,将内部项和边界项相加,得到路径积分的微分。

可微渲染的应用

  1. 人脸重建: 在人脸重建领域,可微渲染技术被用于从二维图像中恢复人脸的三维几何结构和纹理信息。这种技术可以帮助生成逼真的虚拟人脸,用于电影制作、游戏开发和虚拟现实应用。通过可微渲染,可以调整模型参数以优化渲染结果,使其更接近输入的二维图像。

  2. 人手重建: 在人手重建领域,可微渲染技术同样被用于从二维图像中恢复人手的三维几何结构和纹理信息。这种技术可以帮助生成逼真的虚拟人手,用于虚拟现实中的手势识别和交互。通过可微渲染,可以调整模型参数以优化渲染结果,使其更接近输入的二维图像。

  3. 物体表面细节生成: 在物体表面细节生成领域,可微渲染技术被用于生成物体表面的细节,如纹理、凹凸和反射等。这种技术可以帮助提高渲染图像的真实感和细腻度。通过可微渲染,可以调整模型参数以优化渲染结果,使其更接近真实世界的物体表面。

  4. 光线跟踪和路径追踪: 在光线跟踪和路径追踪领域,可微渲染技术被用于改进算法,以更准确地模拟光线在场景中的传播和相互作用。通过可微渲染,可以调整模型参数以优化渲染结果,使其更接近真实世界的光照效果。

  5. 深度学习与可微渲染的结合: 在深度学习与可微渲染的结合领域,可微渲染技术被用于结合深度学习技术,以实现更高效的渲染和更逼真的图像生成。这种结合可以为虚拟现实、增强现实和计算机动画等领域提供强大的支持。

  6. 逆渲染: 在逆渲染领域,可微渲染技术被用于从输入图像中恢复物体的几何和光照信息。这种技术可以帮助生成逼真的三维场景,用于虚拟现实和计算机动画等领域。通过可微渲染,可以调整模型参数以优化渲染结果,使其更接近输入的二维图像。

  7. 实时渲染: 在实时渲染领域,可微渲染技术被用于实时调整场景参数,以实现更流畅和自然的渲染效果。这种技术可以为虚拟现实和游戏等领域提供支持。通过可微渲染,可以调整模型参数以优化渲染结果,使其更符合实时交互的需求。

综上所述,可微渲染技术在多个领域都具有广泛的应用前景,可以提高渲染的真实性和细腻度,同时支持实时渲染和交互式应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值