可微分渲染是一个新颖的领域,可帮助计算3D对象的梯度并允许它们在图像中传播,而无需3D数据收集和注释。计算机图形学中的渲染生成3D场景,该场景由几何形状,材质,场景光和相机属性定义。渲染是一个复杂的过程。它的区别不能唯一地定义;因此不可能直接集成到神经网络中。可微分渲染(DR)构成了一系列技术,这些技术通过获取渲染过程的有用梯度来解决端到端优化的这种集成问题。
英伟达(Nvidia)和阿尔托大学(Aalto University)引入了模块化原语,以为基于栅格化的可区分渲染提供高性能的原语操作。所提出的模块化原语使用高度优化的硬件图形管线来提供比以前的可区分渲染系统更好的性能。
提议的方法的重要亮点如下:
- 效率:它有助于高效地渲染3D场景,这些场景在几何细节,遮挡和高分辨率外观方面都很复杂。
- 极简主义:它可以轻松地与现有的现代自动差异(AD)框架(例如PyTorch和TensorFlow)结合并兼容。
- 自由:可以自由支持用户指定的任意阴影和输入几何的任意参数化。它不承诺特定的形式。
- 质量:它支持内部生成所需的mipmap级别的纹理过滤操作,而无需对纹理内容进行任何假设。
图:它显示了不同的可区分渲染系统之间的比较。可扩展性是表面镶嵌和图像分辨率性能,对随机阴影支持的灵活性以及对几何边缘平滑的抗锯齿。遮挡表明覆盖的表面不会影响生成的图像,并且“渐变”考虑渲染图像中渐变的正确性,“ GI”表示全局照明。
拟议的差异化渲染系统提供了自定义的高性能实现,例如
- 栅格化 (将图像从矢量图形格式转换为一系列像素,点或线,共同构成所需的形状)
- 大量的三角形
- 属性插值
- 过滤纹理查找
- 用户可编程阴影
- 几何加工
图:一个简单的可区分渲染管线,上面提到的原始操作以红色突出显示,纹理化提供了每个像素的纹理坐标矢量,从表面检索一个值然后将其放置在输出中。
为了评估所提出方法的性能,从ShapeNet数据库中选择了不同三角形计数的网格。然后使用提议的方法和两个基准(Soft Rasterizer和PyTorch3D)以多种分辨率渲染这些图像。实验结果表明,所提出的方法比其他方法需要更少的渲染和渐变时间。而且它提供了更好的可伸缩性。
图:根据渲染,渐变时间和加速因子进行比较
论文:
https://arxiv.org/pdf/2011.03277.pdf
GitHub:
https://github.com/NVlabs/nvdiffrast