Py学习  »  机器学习算法

TensorFlow Graphics 简介:当计算机图形学遇上深度学习

TensorFlow • 4 年前 • 806 次点击  

文 /  Julien Valentin 和 Sofien Bouaziz



GitHub 代码库:https://github.com/tensorflow/graphics


近几年,可嵌入到神经网络架构中的新型可微图形层开始兴起。从空间变换器到可微图形渲染器,这些新型网络层利用多年积累的计算机视觉和图形学研究知识来构建更高效的新型网络架构。通过将几何先验和约束显式建模到神经网络中,我们为能够高效稳健地以自监督方式(这点更为重要)接受训练的架构打开了大门。


总体来看,计算机图形管道需要 3D 物体及其在场景中的绝对位置、对物体材质的描述、光和摄像头。然后,渲染器会解译该场景描述,进而生成合成渲染。



与之相比,计算机视觉系统会从图像入手,试图推断场景的参数。这可以实现对场景中的物体,以及对其材质、三维位置和方向的预测。



训练能够解决这些复杂 3D 视觉任务的机器学习系统通常需要大量数据。由于标记数据是一个成本高昂且复杂的过程,所以我们必须配备设计机器学习模型的机制,以设计出既能理解三维世界,又在训练时无需太多监督的机器学习模型。通过将计算机视觉和计算机图形学技术相结合,我们可以随时利用大量无标记数据,这是绝无仅有的好机会。举例而言,下图所示的流程可以通过合成分析实现,即视觉系统提取场景函数,然后图形系统根据这些函数返回渲染后的图像。如果渲染结果与原始图像匹配,则说明视觉系统精准地提取了场景参数。在该设置中,计算机视觉和计算机图形学携手合作,形成了一个类似自编码器的机器学习系统,该系统能够以自监督方式进行训练。




可微图形层

接下来,我们将探索 TensorFlow Graphics 的一些可用功能。本次探索之旅并未涵盖所有内容;如需更多信息,请访问我们的 GitHub,探索 TensorFlow Graphics 推出的新功能。

注:GitHub 链接

https://github.com/tensorflow/graphics/


变换

物体变换可控制物体的空间位置。如下图所示,利用轴线角形式旋转立方体。旋转轴指向上方,旋转方向为逆时针,因此立方体以逆时针方向旋转。在此 Colab 示例 中,我们展示了如何在神经网络中训练旋转形式,该神经网络在经过训练后用于预测观测物体的旋转和平移。这项任务是很多应用的核心,包括专注于与所处环境进行交互的机器人。在这些场景中,用机械臂(例如,通过其手柄)抓取物体需要精确估测这些物体相对于机械臂的位置。

注:Colab 示例 链接

https://colab.research.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/6dof_alignment.ipynb



对摄像头进行建模

摄像头模型在计算机视觉领域占据至关重要的地位,因为其对三维物体投影到图像平面的外观影响极大。如下图所示,此立方体似乎正在放大和缩小,但事实上这只是焦距改变带来的变化。如需了解摄像头模型的更多详情,以及如何在 TensorFlow 中使用此类模型的具体示例,请尝试完成此 Colab 示例实验(https://colab.research.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/intrinsics_optimization.ipynb)


材质

材质模型定义光线与物体的交互过程,从而赋予物体独特的外观。例如,某些材质(如石膏)会均匀地向各个方向反射光线,而镜面等其他材质只会产生镜面反射。在此交互式 Colab 笔记本 中,您将了解如何使用 Tensorflow Graphics 生成以下渲染。您还将有机会试验材质和光线的参数,充分了解其交互过程。准确预测材质属性是许多任务的基础。例如,它可以让用户在所处环境中放置虚拟家具,打造室内环境与家具搭配的逼真场景,使用户能够准确感知这件家具的外观。

注:Colab 笔记本 链接

https://colab.research.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/reflectance.ipynb



几何学 — 3D 卷积和池化

近年来,以点云或网格形式输出三维数据的传感器正在逐渐融入我们的日常生活,包括智能手机深度传感器、自动驾驶汽车雷达等等。由于其结构不规则,在这些表征上执行卷积要比在规则网格结构上困难得多。TensorFlow Graphics 提供两个 3D 卷积层和一个 3D 池化层,方便开展训练,例如训练网络在网格上执行对语义部分的分类(如下图所示),详细演示参见此 Colab 笔记本(https://colab.research.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/mesh_segmentation_demo.ipynb)



TensorBoard 3D

可视化调试是评估实验是否按正确方向开展的重要方法。为此,TensorFlow Graphics 配备了 TensorBoard 插件,支持以交互方式显示 3D 网格和点云。




使用入门

TensorFlow Graphics 支持的首个版本兼容 TensorFlow 1.13.1 及以上版本。如需查找 API 和代码库安装说明,请访问 https://www.tensorflow.org/graphics。



致谢

TensorFlow Graphics 的开发是团队共同努力的成果。特别感谢 Cem Keskin、Pavel Pidlypenskyi、Ameesh Makadia 和 Avneesh Sud,他们都为此项目作出了巨大贡献。



更多 AI 相关阅读:



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33329
 
806 次点击