随着 CVPR 2023 Best Paper 的公布,其中一篇名为 VISPROG 的工作引起了广泛关注。这项工作利用自然语言指令解决复杂且组合性的视觉任务,重新将神经-符号方法带回了人们的视野,并证明了计算机视觉社区对这种方法的认可。实际上,VISPROG 并不仅仅是简单地将语言模型和视觉处理库进行拼接。能够获得最佳论文奖,说明神经-符号这种非端到端的方法和框架的优势还是值得我们认真研究和思考的!那么,什么是神经符号呢?它有哪些优势?如何与 2D/3D 视觉计算结合起来呢?
本文选取了来自 Brown、Adobe、UCL、UoW、Autodesk 和 Stanford 的博士生以及教授合著的一篇 Eurographics 2023 上的综述报告,全面介绍了神经符号模型在图形学(包括 2D/3D 视觉)领域的应用。
根据作者的建议,这篇综述报告是为具备计算机图形学基础背景(包括线性代数等数学基础),并且对机器学习概念(如训练集和测试集、过拟合)以及神经网络概念(如网络权重、随机梯度下降)有一定了解的新研究生撰写的。此外,假设读者对基本的编程语言概念(如不同的编程范式、抽象语法树)也有一定的了解。
论文标题:
Neurosymbolic Models for Computer Graphics
论文链接:
https://arxiv.org//pdf/2304.10320
摘要与内容概览:程序模型就是一种用来表示图形内容的方法,比如植被、建筑物、纹理等等。它们有很多好处,比如可以解释设计参数、可以随机变化、输出的质量高、表示方式紧凑等等。不过也有一些限制,比如从零开始创建程序模型比较困难。最近,基于人工智能的方法变得很流行,尤其是神经网络在创建图形内容方面。这些技术让用户可以直接指定他们想要创建的东西的属性,通过示例、约束或目标来进行指定,然后搜索、优化或学习算法会负责处理具体的细节。
不过,这种易用性是有代价的,因为通常很难解释或操纵这些表示方式。在这份最新的报告中,作者总结了关于神经符号模型在计算机图形学领域的研究。这种模型结合了人工智能和符号程序的优势,可以用来表示、生成和处理视觉数据。作者调查了最近应用这些技术来表示 2D 形状、3D 形状以及材料和纹理的工作。在这个过程中,作者将之前的每项工作都放在神经符号模型的统一设计空间中,这有助于揭示一些未经探索的领域和未来研究的机会。
▲ 图1:神经符号模型通过符号程序和机器学习的结合产生视觉数据。从左到右:神经网络编写的 CAD 程序的输出;推断再现输入手绘图的 2D 绘图程序;由神经网络生成的程序材料程序(即节点图)。
神经符号到底是什么?它与视觉领域又会有什么碰撞?
纵观计算机图形学的发展历史,可以发现该领域的进步往往是由于视觉数据表示的改进。新的视觉数据表示方法能够激发新的创意能力,或者更有效地提升现有的能力。举个例子,纹理贴图作为一种表面细节表示方法,使得虚拟对象能够以更真实的外观模仿现实世界的对象。而多边形网格的细节层次系统则能够以交互速度渲染出人口密集的虚拟场景。
此外,各种类型的样条线能够更准确地对光滑曲面进行建模。而隐式表面表示则能够以简洁的代数表达式编码美丽的景观,并且已被证明在从图像观察中重建 3D 几何形状方面非常有用。
在计算机图形学历史中,有一类广泛应用的表示形式被称为过程模型:这些是一种在执行过程中输出视觉数据的符号程序。从某种程度上说,程序模型和计算机图形学本身一样古老,可以追溯到 Ivan Sutherland 在 SketchPad 系统中使用的约束程序来生成工程草图。现在,程序方法被广泛用于建模某些类别的 3D 形状,包括树木、建筑物以及整个城市景观。它们还被用于建模对象表面的外观,比如材质、纹理,甚至是虚拟角色在人群中的行为。
程序模型之所以如此受欢迎和持久,是因为它们有很多理想的特点。它们提供可解释的参数,可以通过改变这些参数来改变生成的视觉数据的属性,比如调整虚拟建筑物的高度。此外,这些参数的随机化能够让单个程序模型生成多种不同的视觉输出,这对于快速探索设计空间或用非重复内容填充大型虚拟世界非常有用。
但是,程序模型确实也有一些局限性。首先,创建程序模型比较具有挑战性:通常需要编程专业知识和艺术/设计的敏锐度,这样的组合只有一些从业者具备。此外,单个程序模型能够实现的变化类型通常仅限于参数的变化,如果想要进行更复杂的结构变化,通常需要对程序模型本身的结构进行重大修改,比如要改变跑车模型来生成卡车。
最近,机器学习模型在生成视觉数据方面变得越来越流行,尤其是深度神经网络。这些模型被广泛应用于图像合成、处理和操作、3D 形状建模、材料和纹理建模、2D 绘图和草图绘制等领域。从原理上讲,这些模型很容易创建:只需要提供示例/训练数据,学习算法就会处理剩下的事情。而且,它们非常通用:相同的模型架构(有时甚至是相同的训练模型)可以表示很多不同类型的视觉数据,比如所有人脸的外观。
然而,它们也有自身的局限性。这些模型学习到的表示通常是不透明且难以解释的,这使得它们难以编辑或操作(尽管在这个领域中也有一些研究人员取得了进展)。此外,由于机器学习方法生成的模型是对其训练数据所暗示的真实函数的统计近似值,因此这些模型可能会生成一些具有伪影的输出,无法泛化到训练集之外,比如模糊的图像或斑点状的几何形状。
如表 1 所示,程序/符号模型和学习/神经模型各有其优点和缺点。大家可能自然而然地想问:是否有一种方法可以将这两种表示形式结合起来,以获得最佳效果呢?在本报告中,作者总结了最新研究成果,专注于这种称为神经符号模型的方法,它使用人工智能/机器学习技术增强了符号程序生成视觉数据的能力。
首先,作者定义了一个设计空间,用于对神经和符号表示进行混合以表示视觉数据的方式进行分类。然后,总结并调查了最近在几个不同的计算机图形学领域应用这些表示的工作,包括 2D 形状、3D 形状和材料/纹理。在整个过程中,作者将之前的每项工作都放置在本文定义的设计空间中。最后,总结了该领域目前的未解决问题和未来的研究机会,包括指出尚未探索的潜在富有成果的领域,这些领域存在于神经符号设计空间中。
▲ 表1:程序/符号模型和学习/神经模型在生成和操作视觉数据方面具有互补的优点和缺点。本报告讨论了将它们结合起来以获得两全其美的研究。
讨论范围及相关必要背景简介
为了让这篇文章更简洁易懂,作者限定了讨论的范围:具体来讲,专注于使用人工智能和机器学习技术来增强符号程序生成视觉数据的任务。在这篇文章中,当提到神经符号模型“使用符号程序”时,指的是它明确地构建生成的视觉数据的中间符号表示。也就是说,视觉数据是用离散的符号表示的,这些符号通过一个或多个组合形成一个结构,然后使用符号操作符(即具有明确定义的符号实现的函数)来处理。
与此相反,视觉数据可以用非符号函数(比如生成数据的神经网络)或者数据结构(比如栅格图像或带符号距离场)来表示。神经-符号建模的研究是跨学科的,吸取了深度学习、程序性建模和程序合成的思想。这些领域中的每一个都值得一篇完整的报告,但在本节中,作者讨论了哪些工作与本文的讨论相关,哪些不在讨论范围之内。
2.1深度学习
深度学习和神经网络在计算机图形学领域被广泛应用。通常,神经网络被用作学习函数逼近器,它可以通过基于梯度的优化技术找到从源域 X 到目标域 Y 的映射。在深度学习中,通过组合多个简单的神经层和非线性操作来构建复杂的神经架构。这些方法在很多计算机图形任务中都很成功,这些任务可以被看作是映射问题,比如特征检测、去噪、渲染、动画等。然而,如何应用深度学习以及何时会取得成功是一个复杂的问题,涉及到很多特定问题因素。
神经方法在重建任务中被证明是有用的。通过足够的数据和计算,基于学习的方法可以产生与部分观察到的或未指定的输入相对应的视觉输出。通常,这些系统以端到端、可微分的方式直接预测视觉输出,例如基于图像的 3D 重建方法。然而,本文的重点并不是这种方法,而是探讨创建能够生成视觉数据的非平凡符号中介表示的方法,这种表示不仅仅是基本元素的简单组合。因此,作者考虑直接预测低级表示实体(如三角形网格)甚至复杂的几何表示(如边界框或边界的层次结构)的神经方法超出了本报告的范围。
相关地,神经方法也在研究如何以结构感知的方式表示视觉数据。虽然神经符号表示总是具有结构,但并不是所有的结构感知表示都符合我们对于“符号程序”的定义。因此,本文的框架没有涵盖一些将视觉数据表示为离散代码序列的方法,或者那些简单地组合原语或学习部分的方法。在接下来的部分中,将讨论学习方法在视觉重建任务中生成符号表示的方法,这些符号表示在执行时可以生成重建输入的视觉输出。
除了重建,神经方法也被证明对于计算机图形内容的生成模型很有用。深度生成模型学习表示输入域 X(如视觉数据的集合)的概率分布,然后可以从中进行抽样,生成新的实例(如新的视觉数据)。
有许多不同类型的深度生成模型,如生成对抗网络(GANs)、变分自动编码器(VAEs)、规范化流、自回归模型和扩散模型,每种模型都有其优点和缺点。这些深度生成模型已应用于许多视觉领域,如自然图像、材料、草图、场景、体素、网格、隐性形状和人物运动。然而,与重建类似,大多数这些方法都设计为直接生成视觉输出,没有中间的符号表示,因此不在研究范围之内。生成性神经符号模型通常使用上述学习范式之一,但训练网络来生成新的符号表示,这些表示可以执行以生成新的视觉输出。
最后,对于以神经方式表示视觉数据的方法,人们越来越感兴趣。在某些应用中,神经表示将专门用于特定的数据。例如,在神经辐射场(NeRFs)中,一个场景由一个神经网络表示,该网络学习从空间位置和观察方向输入对到体积密度和发射辐射输出对的映射关系。
神经表示也可以对数据的分布进行总结。例如,一个神经网络可以学习将一个点和一个潜在代码映射到一个占有率输出的预测。然后,这个网络可以对大量的形状集合进行训练,并将每个复杂的几何图形压缩成一个小的潜在代码。大多数以神经方式表示视觉数据的方法都不属于本报告的范围,因为它们缺乏任何形式的符号表示。然而,正如作者在第 3.2 节中讨论的,一些神经符号模型使用学习到的神经基元来增强它们的符号语言表达能力。
2.2 程序性建模
用符号程序生成视觉数据或进行程序化建模的方法与计算机图形学本身一样古老。这些程序化方法几乎在图形学的每个阶段都有应用,但它们在三维几何和纹理建模中的应用最为广泛。在本文的第 6 节和第 7 节中,作者分别讨论了神经符号模型在这些领域的应用,现在来回顾一些相关的背景知识。
请注意,本文中使用“程序模型”来指代任何生成视觉数据的符号编程方法。在编程语言文献中,有时会使用术语“程序性编程”来表示一种编程范式,其中程序被解释为要执行的指令序列,与其他编程范式(如函数式和声明式编程)形成对比。在本文中,将提供指令序列的程序称为“指令性程序”,以避免混淆。
程序性几何学:程序化几何建模最早应用于计算机辅助设计(CAD),可以追溯到 Ivan Sutherland 的 SketchPad 系统。在 CAD 中,一个模型由一系列参数化的操作组成,这些操作可以进行调整,重新执行建模程序以生成更新的几何形状。构造性实体几何(CSG)是一种三维几何生成的编程模型,通过组合参数化的基本元素集合(可能包括约束条件)的布尔运算(如交集、并集、差集)来创建更复杂的形状。
从结构上看,通过 CSG 程序生成的表面几何形状是完整的,并且与实体物体相吻合,这使得它非常适合用于制造物体的建模。边界表示法(B-reps)是 CSG 的一种替代方案,用于表示实体几何形状。B-rep 由一组连接的表面补丁(形状上的任何流形)组成,它们一起构成了实体区域的边界。人们可以对 B-rep 进行布尔运算(就像 CSG 一样),但它们还支持其他有用的建模操作,如边缘的倒角或锉刀处理。通常,通过挤压、旋转或其他操作,将二维工程草图转化为三维形状(见图 2)。
总体而言,这种基于特征的实体建模范式通常被称为工业标准 CAD 软件采用的实体建模的主流形式。在本文的第 6 节中,研究了神经符号 CAD 建模的工作。之前的一些工作试图从原始输入几何体(如点云)中推断出 B-reps,但这种推断系统并不考虑可以生成这种 B-reps 的更高级 CAD 程序,因此不在本文讨论的范围内。
</