当计算机图形学遇上深度学习,针对3D图像的TensorFlow Graphics面世

  • GitHub 地址:https://github.com/tensorflow/graphics

近几年,一种可以插入神经网络架构中的新型可微图形层(differentiable graphics layer)开始兴起。从空间变换器(spatial transformer)到可微图形渲染器,这些新型网络层利用多年的计算机视觉和图形学研究知识来构建更高效的新网络架构。将几何先验和约束显式建模到神经网络中,为能够以自监督的方式进行稳健、高效训练的架构打开了大门。

从高级层面来说,计算机图形管道需要 3D 物体及其在场景中的绝对位置、材质描述、光和摄像头。然后,渲染器利用该场景描述生成合成渲染。

相比之下,计算机视觉系统从图像开始,推理场景的参数,对场景中的物体及其材质、三维位置和方向进行预测。

训练能够解决这些复杂 3D 视觉任务的机器学习系统通常需要大量数据。由于标注数据的过程既昂贵又复杂,因此设计能够理解三维世界且训练时无需太多监督的机器学习模型非常重要。

结合计算机视觉和计算机图形学技术后,我们得以利用大量可用的无标注数据。如下图所示,这可以通过合成分析(analysis by synthesis)来实现:视觉系统抽取场景参数,图形系统基于这些参数渲染图像。

如果渲染图像结果与原始图像匹配,则说明视觉系统准确地抽取了场景参数。在该设置中,计算机视觉和计算机图形学携手合作,形成了一个类似自编码器的机器学习系统,该系统能够以自监督的方式进行训练。

可微图形层

接下来,我们将探索TensorFlowGraphics 的一些可用功能。更多详情,参见 GitHub 项目。

变换

物体变换控制物体在空间中的位置。如下图所示,利用轴角度旋转立方体。旋转轴指向上方,旋转方向为逆时针,使得立方体逆时针旋转。以下 Colab 示例展示了如何在神经网络中训练旋转形式,该神经网络被训练用于预测观测物体的旋转和平移。

  • 地址 https://colab.sandbox.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/6dof_alignment.ipynb

这项任务是很多应用的核心,包括聚焦于与其环境进行交互的机器人。在这些场景中,用机械臂抓取物体需要精确估计这些物体相对于机械臂的位置。

建模摄像头

摄像头模型在计算机视觉领域中非常重要且基础,因为它们对三维物体投影到图像平面上的外观有极大影响。如下图所示,该立方体看起来可以放大和缩小,但是事实上这些变化仅仅是由于焦距产生的变化。

想了解摄像头模型的详情,以及如何在TensorFlow中使用它们的具体示例,可以查看:

  • https://colab.sandbox.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/intrinsics_optimization.ipynb

材质

材质模型(material model)定义光与物体的交互过程,从而提供物体的外观。例如,一些材质(如石膏)在各个方向对光进行反射,而镜面等材质会对光进行镜面反射。

在以下交互式 Colab notebook 中,你可以了解如何使用 Tensorflow Graphics 生成如下渲染。你还可以试验不同的材质和光的参数,更充分地了解其交互过程。

  • 地址:https://colab.sandbox.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/reflectance.ipynb

准确地预测材质属性是很多任务的基础。例如,它可以让用户在自己的环境中放置虚拟家具,室内环境搭配家具的场景非常逼真,从而让用户准确地感知到这件家具的外观。

几何——3D 卷积和池化

近年来,以点云或网格形式输出三维数据的传感器逐渐成为我们日常生活的一部分,包括智能手机深度传感器、自动驾驶汽车雷达等等。由于其结构不规则,在这些表征上执行卷积要比在规则网格结构上困难得多。

TensorFlowGraphics 提供两个 3D 卷积层和一个 3D池化层,允许网络在网格上执行语义部分分类(如下图所示),更多信息参见该 Colab notebook:

  • https://colab.sandbox.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/mesh_segmentation_demo.ipynb

TensorBoard3d

视觉 debug 是评估实验是否按正确方向运行的重要方式。因此,TensorFlowGraphics 配备有TensorBoard插件,以便交互式地查看 3d 网格和点云。

开始项目

TensorFlowGraphics 与TensorFlow1.13.1 及以上版本兼容。API 和安装说明参见:

  • https://www.tensorflow.org/graphics

原文链接:https://medium.com/tensorflow/introducing-tensorflow-graphics-computer-graphics-meets-deep-learning-c8e3877b7668