https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLtbFBddaXSQ9x-oBlhU_mUrk7nd9XpEr0bWXFRiE9lNjdeGKKf6Zl5DKbqn7eiaY032Wmck2JDliqalyJx_f43Y-4Mspjkz3X7eBze1o7NhSnsyDRvEIpHli9oqEFBuJshVeRt7cEmW02/s1600/tf+graphics.jpeg
Posted by Julien Valentin and Sofien Bouaziz
Github 仓库: https://github.com/tensorflow/graphics
在过去几年中,我们看到了新型可微分图形层的发展,这些层可以插入神经网络架构中。从空间变换器到可微分图形渲染器,这些新的层利用了多年来计算机视觉和图形研究积累的知识,以构建新的、更高效的网络架构。将几何先验和约束显式地建模到神经网络中,为可以鲁棒地、高效地,更重要的是以自监督方式训练的架构打开了大门。
从高层次来看,计算机图形流水线需要 3D 对象及其在场景中的绝对位置、它们所制成的材质的描述、灯光和相机。然后,渲染器会解释此场景描述,以生成合成渲染。
相比之下,计算机视觉系统会从图像开始,并尝试推断场景参数。这使得能够预测场景中有哪些物体、它们是由什么材料制成的,以及它们的三维位置和方向。
训练能够解决这些复杂 3D 视觉任务的机器学习系统,通常需要大量数据。由于数据标注是一个成本高昂且复杂的过程,因此拥有能够理解三维世界,同时无需大量监督就能训练的机器学习模型设计机制非常重要。将计算机视觉和计算机图形技术相结合,提供了一个独特的机会,可以利用大量易于获取的未标记数据。 如下图所示,例如,这可以通过综合分析来实现,其中视觉系统提取场景参数,图形系统根据这些参数重新渲染图像。如果渲染与原始图像匹配,则视觉系统已准确地提取了场景参数。在此设置中,计算机视觉和计算机图形相互配合,形成一个类似于自动编码器的单一机器学习系统,可以以自监督方式进行训练。
可微分图形层
接下来,我们将探讨 TensorFlow Graphics 中提供的一些功能。本指南并非详尽无遗;有关更多信息,请访问我们的 Github 以了解 TensorFlow Graphics 带来的新可能性。
变换
对象变换控制对象在空间中的位置。在下图中,使用轴角形式来旋转立方体。旋转轴指向上方,角度为正,导致立方体逆时针旋转。在此 Colab 示例中,我们展示了如何将旋转形式训练到一个神经网络中,该网络经过训练可以预测观察到的对象的旋转和平移。此任务是许多应用程序的核心,包括专注于与其环境交互的机器人。在这些情况下,用机械臂抓取物体(例如,通过其手柄)需要准确地估计这些物体相对于机械臂的位置。
建模相机
相机模型在计算机视觉中起着至关重要的作用,因为它们极大地影响了投影到图像平面上的三维物体的外观。如下图所示,立方体似乎在放大和缩小,而实际上变化只是由于焦距的变化。尝试这个 Colab 示例 以详细了解相机模型,以及如何在 TensorFlow 中使用它们的具体示例。
材质
材质模型定义了光如何与物体相互作用,从而赋予它们独特的外观。例如,一些材料(如灰泥)会将光均匀地反射到所有方向,而另一些材料(如镜子)则纯粹是镜面反射的。在此交互式 Colab 笔记本中,您将了解如何使用 Tensorflow Graphics 生成以下渲染。您还将有机会调整材质和光线参数,从而深入了解它们的交互方式。准确预测材质属性是许多任务的基础。例如,它可以允许用户将虚拟家具放到他们的环境中,并使这些家具与他们的室内装饰完美融合,使用户能够准确地感知这些家具的外观。
几何 - 3D 卷积和池化
近年来,输出三维点云或网格数据的传感器正逐渐成为我们日常生活的一部分,从智能手机深度传感器到自动驾驶汽车的激光雷达。由于其不规则的结构,与提供规则网格结构的图像相比,对这些表示形式进行卷积的实现要困难得多。 TensorFlow Graphics 带有两个 3D 卷积层和一个 3D 池化层,例如,允许训练网络以对网格执行语义部件分类,如下所示,并在以下示例中演示 Colab 笔记本.
TensorBoard 3d
可视化调试是评估实验是否朝着正确方向发展的好方法。为此,TensorFlow Graphics 带有一个 TensorBoard 插件,可以交互式地可视化 3d 网格和点云。
入门
TensorFlow Graphics 的第一个版本支持与 TensorFlow 1.13.1 及更高版本兼容。您可以通过访问以下网站找到 API 和安装库的说明 https://tensorflowcn.cn/graphics.
鸣谢