如果说计算机视觉是将三维世界的视觉信息“编码”为机器可以理解的参数的过程,那么计算机图形学则是将参数化的三维模型“解码”为人类可以感知的三维世界的过程。从某种意义上来讲,如果不考虑转换过程中信息的损失,这似乎是一个可逆的过程;而如果能使用某种方式把计算机视觉的操作与计算机图形学的操作结合在一起,是不是能够像自动编码器(Autoencoder)一样而实现某种无监督学习的应用呢?这是一个很有趣而值得思考的话题。然而,虽然计算机视觉中的操作(例如卷积神经网络当中的各种变换函数)是可以微分(Differentiable)的,计算机图形学中的操作(例如光栅化)通常是离散的函数而不可微分,将它们直接放在一个统一的模型中训练是不可行的。为此,东京大学的Hiroharu Kato等人提出了神经三维网格渲染器(Neural 3D Mesh Renderer),它可以近似地计算光栅化(Rasterization)过程的梯度,从而将其应用于神经网络的反向传播过程当中,以训练整个网络的参数。
三维模型在存储形式上通常有三种:1)体素(Voxel),2)点云(Point Cloud)以及3)多边形网格(Polygon Meshes),考虑到模型存储的空间复杂度与灵活性,人们通常使用第三种方式来参数化三维模型。一个三维的多边形网格由一个点的集合和一个面的集合组成?