渲染是计算机图形学中的核心内容,它可将 3D 模型转换为 2D 图像。这也是在 3D 场景属性(scene properties)和 2D 图像像素之间建立桥接的常规手段。不过传统渲染引擎无法进行微分,因此它们不能被合并至深度学习工作管道中。PyTorch3D 内置模块化的可微分渲染器,能用来处理可微分的 3D 数据。
Facebook 近日开源了将 PyTorch 用于 3D 深度学习的函数库 PyTorch3D,这是一个高度模块化且经过优化的库,具备独有的功能,旨在通过 PyTorch 简化 3D 深度学习。PyTorch3D 为 3D 数据提供了一组常用的 3D 运算符和快速且可微分的损失函数(loss function),以及模块化的可微分渲染 API。通过上述的功能,研究人员可以立即将这些函数导入至当前最先进的深度学习系统中。
研究人员和工程师可以利用 PyTorch3D 进行各种 3D 深度学习研究(无论是 3D 重构、集束调整,乃至 3D 推理),以及改进在二维空间下的识别任务。
对三维空间的认知,在人工智能与真实世界的互动过程中扮演着十分重要的角色。例如机器人在物理空间中的导航、改进虚拟现实体验,以及识别 2D 内容中被遮挡的物体等。不过即便有丰富深度学习技术积累的 Facebook,在面对 3D 的深度学习问题时依然会被困扰。Facebook 表示,之所以深度学习技术较少用于 3D 场景,是因为缺乏足够的工具和资源来支撑神经网络与 3D 数据结合使用的复杂性,这种场景要求更多的内存与更高的算力,不像 2D 图像可以使用张量表示,而且许多传统图形运算符不可微分,因此 3D 深度学习技术的研究受到了限制。
为此,Facebook 构建了 PyTorch3D 函数库以推动 3D 深度学习研究,与 PyTorch 为 2D 识别任务提供高度优化的函数库一样,PyTorch3D 通过提供批处理以及对 3D 运算符和损失函数的支持来优化训练和推理。为了简化 3D 模型批处理的复杂度,Facebook 创建了 Meshes 格式,这是一种专为深度学习应用程序设计,用于批处理的异构网格模型数据结构。
这种数据结构可以让研究人员轻松地将基础网格模型数据快速转换成不同的视图,以使运算符与数据的最有效表示方式相匹配。更重要的是,PyTorch3D 为研究人员和工程师提供了能够灵活地在不同的表示视图之间进行有效切换的方式,并访问不同的网格属性。
渲染是计算机图形学中的核心内容,它可将 3D 模型转换为 2D 图像。这也是在 3D 场景属性(scene properties)和 2D 图像像素之间建立桥接的常规手段。不过传统渲染引擎无法进行微分,因此它们不能被合并至深度学习工作管道中。所以,Facebook 在 PyTorch3D 内置了高度模块化的可微分渲染器,能用来处理可微分的 3D 数据。此功能的实现由可组合单元组成,允许用户轻松扩展渲染器以支持自定义照明或阴影效果。
Facebook 将这些功能打包成工具包,并提供了运算符、异构批处理功能和模块化可微分的渲染 API 等,帮助研究人员进行复杂的 3D 神经网络应用研究。
查看 PyTorch3d 文档:https://pytorch3d.org/docs/why_pytorch3d.htm