TensorFlow也可以做图形渲染了:当神经网络遇上计算机图形学
晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI
谷歌给TensorFlow加入了计算机图形处理功能TensorFlow Graphics,让神经网络可以更好地理解计算机世界里的图形操作。
计算机图形(Computer Graphics)和计算机视觉(Computer Vision)是一对孪生兄弟,二者互为逆过程。
计算机图形是预先知道3D物体的形状、位置、材料构成,以及场景的灯光和相机,然后渲染出场景。
计算机视觉是已知拍到的图像,从中推断出有哪些物体,它们由什么材料制成,以及它们的3D位置和方向。
图像识别自然不必多说。在TensorFlow Graphics,图像渲染包括对图形进行旋转、缩放、光影、3D网格等操作。
旋转
旋转在与一些机器人任务中非常重要,比如,用机械臂抓住物体需要精确估计这些物体相对于臂的位置。
缩放
缩放计算机视觉中起着重要作用,因为它会极大地影响投影到平面上的三维物体的外观。
光影材质
材质模型定义光与对象的交互方式,展现这种材料独特的外观。在某些虚拟环境中,可以预测某些物体的真实外观。
几何形状
从手机深度传感器到自动驾驶汽车激光雷达,近年来3D传感器越来越多。它们以网格或者点云的方式输出3D数据。
由于它们的不规则结构,与提供规则网格结构的图像相比,这些表示上的卷积很难实现。TensorFlow Graphics有两个3D卷积层和一个3D池化层,允许网络在网格上执行语义部分分类的训练。
为何要推出TensorFlow Graphics
近几年,在神经网络架构中插入可微图形层的情况越来越多。尤其是空间变换网络,这是2015年DeepMind在NIPS上发表的论文《Spatial Transformer Networks》。
这篇文章提出神经网络应当具有所谓“空间不变性”,即无论平移、旋转、缩放,都能够正确地识别和处理图像,但CNN在这方面的能力是欠缺的。
在神经网络中插入这些可微图形层,可以来构建新的、更高效的网络架构。将几何和约束建模到神经网络中,可以通过自我监督的方式进行稳健、高效的训练。
另外,训练3D视觉任务的机器学习系统通常需要大量数据,需要设计机器学习模型,在没有太多监督的情况下进行训练,给网络加入计算机图形渲染的能力,能帮AI更好地理解3D世界。
安装使用
TensorFlow Graphics要求使用TensorFlow 1.13.1或更高版本。谷歌提供了CPU和GPU两个版本:
pip install --upgrade tensorflow-graphics
# CPU版本
pip install --upgrade tensorflow-graphics-gpu
# GPU版本
为了让用户能够进行可视化调试,TensorFlow Graphics还附带了一个TensorBoard插件,交互式地显示3D网格和点云。
更多的实际效果可以去项目页提供的几个Colab笔记本中体验。比如前面提到的光影材质渲染:
传送门
官方介绍:
https://medium.com/tensorflow/introducing-tensorflow-graphics-computer-graphics-meets-deep-learning-c8e3877b7668
项目页:
https://github.com/tensorflow/graphics