我们的 logo 是用 PyTorch3D 的隐式立体渲染器生成的
介绍
PyTorch3D 是一个高度模块化和优化的库,具有独特的功能,旨在利用 PyTorch 促进 3D 深度学习。PyTorch3D 为 3D 数据提供了一组快速可微的常用的 3D 运算符和损失函数,以及一个模块化可微渲染 API。研究人员可以马上在深度学习系统中使用这些特性。(PyTorch3D 和可微渲染的入门介绍,请参阅 PyTorch hackathon 教程:https://www.youtube.com/watch?v=Pph1r-x9nyY)。
隐式形状渲染(Implicit Shape Rendering)
今天我们发布了一套新的特性来支持隐式形状渲染。在过去的一年里,使用神经渲染技术的论文和项目数量激增。这个令人兴奋的研究方向专注基于输入场景图像从新的视角生成三维场景的逼真(realistic)渲染。其核心思想是利用神经网络与可微渲染相结合重建三维场景表面的隐式表示,这使得从 2D 视图中学习 3D 场景的几何形状成为可能。
这方面的高效研究需要几个关键的工程组件,包括立体数据的抽象以及一个可微的隐式形状渲染器。为了在这个新兴的研究领域中实现灵活的实验,我们提供了一个模块化和可扩展的 API。我们已经确定了关键的可重用组件,这些组件文档齐全且实现经过了良好的测试。
我们为 PyTorch3D 添加的新功能包括:
- 卷(volumes)数据结构,支持 3D 卷的批处理和坐标帧之间的转换
- 多重射线抽样实现(GridRaysampler,MonteCarloRaysampler,NDCGridRaysampler)
- 几个 raymarcher 实现(AbsorptionOnlyRaymarcher, EmissionAbsorptionRaymarcher)
- ImplicitRenderer 和 VolumeRenderer APIs, 包含一个 Raysampler 和 一个Raymarcher
- 几个工具函数,例如点云到卷的可微转换
开始
为了展示这些新组件,我们将使用这些组件重新实现一个模块化的、文档完整的 NeRF。我们的复现比官方版本运行得更快,而输出图像的质量差不多。下面是使用基于 PyTorch3D 的 NeRF 实现生成的具有许多形状和复杂反光的场景示例:
该代码可以作为任何新视图合成研究项目的起点。它将存放在 PyTorch3D repo 中的 projects
文件夹中,我们将继续添加更多使用 PyTorch3D 特性的项目和论文实现示例。
要了解更多关于这些技术的信息,请参阅我们的新的 Colab 教程(https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/fit_textured_volume.ipynb),这些教程将带你一步一步地学习一个简单的 NeRF 模型输入纹理卷的例子。
总结
PyTorch3D 的目标是通过为研究人员和工程师配备一个工具包,实现复杂 3D 数据的尖端研究,从而推动深度学习和 3D 交叉领域的进步。我们承诺不断改进和扩展 PyTorch3D 的算子,并欢迎社区的贡献。
如果你想了解更多关于 PyTorch3D 工具渲染隐式形状和体素网格的细节,请看下面的视频教程:
原文: https://medium.com/pytorch/pytorch3d-volumes-release-7921c6793762