文献阅读:Image-Based 3D Object Reconstruction: State-of-the-Art and Trends in the De

6 阅读19分钟

一、摘要

3D reconstruction is a longstanding ill-posed problem, which has been explored for decades by the computer vision, computer graphics, and machine learning communities. Since 2015, image-based 3D reconstruction using convolutional neural networks (CNN) has attracted increasing interest and demonstrated an impressive performance. Given this new era of rapid evolution, this article provides a comprehensive survey of the recent developments in this field. We focus on the works which use deep learning techniques to estimate the 3D shape of generic objects either from a single or multiple RGB images. We organize the literature based on the shape representations, the network architectures, and the training mechanisms they use. While this survey is intended for methods which reconstruct generic objects, we also review some of the recent works which focus on specific object classes such as humanbodyshapesandfaces. Weprovide an analysis and comparison of the performance of some key papers, summarize some of the open problems in this field, and discuss promising directions for future research.

三维重建是计算机视觉、计算机图形学与机器学习领域长期关注的核心问题之一。从二维图像中恢复物体的三维几何结构,本质上是一个典型的病态逆问题,长期以来都具有很高挑战性。近年来,随着卷积神经网络等深度学习方法的发展,以及大规模训练数据的不断积累,基于图像的三维重建取得了显著进展,尤其是在从单张或多张 RGB 图像恢复通用物体三维形状方面表现突出。本文系统综述了 2015 年以来该方向的研究进展,重点关注利用深度学习从单视图或多视图 RGB 图像中恢复通用物体三维形状的方法。作者从形状表示、网络结构与训练机制三个维度对已有工作进行分类梳理。同时,文章也回顾了若干面向特定类别的三维重建任务,如人脸重建、人体形状重建等。最后,论文对代表性方法进行了性能分析与比较,总结了当前仍待解决的问题,并讨论了未来值得关注的发展方向。

文章链接如下:<Image-Based 3D Object Reconstruction: State-of-the-Art and Trends in the Deep Learning Era | IEEE Journals & Magazine | IEEE Xplore>

二、方法分类

作者将图像三维重建概括为一个学习预测函数的过程。设输入为一组 RGB 图像,目标是学习一个预测器,使其输出的三维形状尽可能接近真实目标。深度学习框架中,这一过程通常通过最小化重建损失函数来实现,其中损失度量了预测形状与真实形状之间的差异。基于此可以从以下四个方面进行分类:

  • 输入形式
  • 输出表示
  • 网络结构
  • 训练机制

输入形式

输入可以为单张图像多张图像(相机内外参已知或未知)、视频序列(带有时间特征)

输出表示

输出可以为体素表示(离散为规则网格)、表面表示(如网格、点云)、中间表示(如深度图、法向图)

网络结构

大多数方法采用编码器—解码器结构。编码器将输入图像映射到潜在空间中的特征向量,解码器再从该潜在表示恢复三维形状。根据输出形式不同,解码器可能由全连接层、反卷积层、三维卷积层等构成。

训练机制

使用的数据集类型;损失函数设计;监督强度与训练流程。

有些方法需要图像与三维模型一一对应的强监督训练数据,而另一些方法则尽量减少对三维标注的依赖,仅利用轮廓、深度图、多视图一致性等较易获得的监督信号进行训练。

三、编码

一个理想的编码器应满足以下要求:

  • 相似三维形状的输入应在潜在空间中彼此接近;
  • 潜在表示的微小变化应对应形状的平滑变化;
  • 表示应尽量对相机姿态、光照等外部因素不敏感;
  • 同一三维物体及其对应的二维图像应尽可能映射到相同或相近的潜在位置,以减少歧义。

围绕这些目标,作者将潜在空间设计分为以下几类:

离散潜在空间

早期工作多采用普通卷积编码器,将输入映射为固定维度的特征向量。例如 3D ShapeNet 将体素化的三维形状编码为高维向量;其他方法则利用二维卷积网络对图像编码。不同方法主要区别在于卷积层数量、通道数、池化方式和激活函数选择。随着网络加深,残差网络逐渐被采用,以改善深层网络训练的稳定性和收敛速度。

这类表示方式简单直接,但其潜在空间未必连续,因此不利于插值、采样与生成。

连续潜在空间

为获得连续、可采样、可插值的潜在表示,部分方法引入变分自编码器(VAE)及其三维扩展。与普通编码器直接输出单个特征向量不同,VAE 输出的是潜在高斯分布的均值与方差,再从该分布中采样得到潜在变量。

这种设计带来了两个优势:潜在空间具有连续性,更利于在形状之间平滑插值;同一输入可以采样得到多个合理结果,从而适应单图三维重建本身存在的多解性。

层次化潜在空间

作者指出,单一扁平的潜在向量难以充分表达复杂形状的多层次结构,容易导致重建模糊。为此,有研究引入层次化潜在变量结构:先定义一个全局潜变量,再连接多个局部潜变量层,用于分别编码不同层次的形状信息。靠近输入的局部变量更倾向于表示低层细节,较远的变量则更偏向高层语义结构。最终这些局部潜变量被拼接后送入任务相关模块,用于三维重建。

层次化表示的核心思想,是让网络同时建模全局结构与局部细节,以提升重建质量。

解耦表示

图像中物体的外观不仅受形状影响,也受到姿态、光照等因素干扰。若编码器将这些因素混杂在同一特征向量中,会增加三维重建难度。为此,部分工作尝试构建解耦表示,分别用不同编码表示形状、姿态和光照。

一种典型做法是:编码器从图像中同时提取“形状编码”和“变换编码”,前者用于恢复三维几何,后者用于恢复光照和相机姿态等外在因素。训练时通过特定的前向/反向传播设计,抑制外观分支对形状编码的干扰,从而迫使形状编码尽量只承载几何信息。另一类工作则直接将物体重建到规范姿态空间,再额外预测 6 自由度姿态参数,将姿态与形状分离建模,以提高效率与稳定性。

四、解码————体素重建

体素优势在于结构规则,便于直接使用三维卷积与池化;缺点则是内存消耗随分辨率立方增长,极易变得不可承受。

体素表示方式

二值占据网格
概率占据网格
有符号距离函数(SDF)
截断有符号距离函数(TSDF)

除常规规则体素网格外,也有工作提出与视锥空间对齐的变体体素结构,以提升与输入图像轮廓的对齐精度。还有研究尝试学习连续的 SDF 表示,使网络不必局限于固定分辨率的离散网格。

低分辨率体素重建

最典型的方式是使用与编码器对称的三维反卷积网络,将特征逐步上采样为三维体积。早期多种方法采用两条路线:

路线一:直接从图像回归体素

这类方法使用编码器—解码器结构,直接输出三维占据概率网格。优点是流程简洁,端到端训练方便。由于二维卷积网络的成功经验可较容易迁移到三维,这一思路在单视图和多视图重建中都取得了不错效果。

路线二:借助中间表示

另一些方法先从输入图像恢复深度图、法向图与轮廓图等“2.5D 草图”,再基于这些中间结果恢复完整三维体素。其核心逻辑是:相较于直接预测完整三维,深度、法向与轮廓等中间表示更容易从二维图像中估计;同时,从这些中间表示恢复三维也更容易。因此,这种分阶段设计能显著简化学习难度。

然而,受限于三维卷积的内存与计算成本,这类直接体素方法通常只能输出 32³ 或 64³ 等较低分辨率体积,因此难以恢复精细细节。

高分辨率体素重建

为了在可接受的资源消耗下提升体素分辨率,研究者提出了多种策略。作者将其归纳为四类:空间划分、形状划分、子空间参数化以及粗到细细化

空间划分

规则体素网格虽然利于卷积运算,但大多数体素实际上为空,真正有用的信息通常集中在物体表面附近,因此存在大量稀疏冗余。为利用这一特性,一类方法采用八叉树等空间划分结构,只在需要的局部区域保留高分辨率表示。

这类方法面临两个难点:

  • 计算实现难:八叉树不是规则网格,不如普通卷积那样容易在 GPU 上高效实现;
  • 结构预测难:八叉树本身是与对象相关的,网络不仅要预测每个单元中的值,还要预测空间该如何划分。

围绕这两个问题,出现了几种代表性做法:

(1)预定义八叉树结构

例如将若干浅层八叉树嵌入规则网格中,兼顾局部自适应性与全局规则性。这样可支持较深、较高分辨率的三维卷积网络,但缺点是测试时往往假定八叉树结构已知,灵活性不足。

(2)学习八叉树结构

更进一步的方法尝试让网络同时推断八叉树结构及其内容。一般流程为:先输出一个较粗体素体;再递归地对边界区域对应的八叉树节点进行细分与上采样;不断重复直到达到目标分辨率。不同工作在树的遍历顺序上有所不同,有的采用深度优先方式,有的采用广度优先方式。

(3)基于局部平面片的划分

还有方法在每个叶子节点内用一个局部平面近似表面,只有当该平面无法很好逼近当前表面时才继续细分。这样可以显著降低内存与时间消耗,但对曲面和拼接连续性处理较弱。

除了用八叉树压缩离散体素,还可以进一步摆脱显式体素网格,转而学习一个连续的占据函数。其基本思想是:网络输入形状的潜在向量以及一个三维空间点坐标,输出该点位于物体内部还是外部的概率。这样,物体表面就由该连续分类器的决策边界隐式定义。

这类方法的主要优势在于:

  • 训练阶段无需显式存储高分辨率体素;
  • 推理时可在任意分辨率下采样并提取等值面,因此具有很强的分辨率灵活性;
  • 内存开销远小于传统高分辨率体素网格。

缺点是:推理时必须对大量空间点逐点评估网络,生成成本会随采样密度增加而上升。

形状划分

另一条思路不是划分空间,而是将物体视为若干几何部件的组合,先分别重建各个部件,再将它们拼接为完整形状。这样,每个局部部件都可以在较低分辨率下重建,但由于部件彼此独立,最终整体分辨率可能更高。

例如,有些工作通过递归结构学习形状部件层级关系,再使用生成网络为每个局部部件恢复体素几何;也有方法用递归神经网络顺序预测多个几何基元,如长方体等,再组合成完整物体。该类方法更适合结构化程度较高的人造物体,但对复杂有机形状和精细曲面建模能力有限。

子空间参数化

作者还介绍了一类将“形状空间”表示为若干基的线性组合的方法。具体来说,若三维形状可由一组正交基表示,那么三维重建就可转化为估计这些基的系数,而不必直接预测整个高维体素体。

常见实现包括:

  • 用离散余弦变换基作为通用形状基;
  • 用主成分分析从特定类别训练数据中学习低维形状子空间。

这种方法的优点在于显著降低输出维度与网络复杂度,特别适合人脸、人体等类别受限、形状变化可由少量主成分刻画的场景。但对于跨类别、拓扑变化明显的通用物体,其表达能力通常不足。

粗到细细化

还有一类方法采用多阶段策略:先预测一个粗略但完整的低分辨率体积,再通过一个或多个细化模块逐步提高分辨率和几何细节。

这类策略大致可分为几种形式:

  • 简单上采样式:用额外反卷积模块直接将低分辨率体积放大;
  • 切片式细化:将三维体积视为一系列二维切片,用循环网络或二维卷积逐片恢复高分辨率结构;
  • 局部块细化:只对边界或复杂区域对应的小块进行再采样和再重建;
  • 基于检索与补丁合成:先从数据库中找到相似形状,再将相似局部补丁拷贝并细化到当前结果中。

这种方法的优势是训练稳定、模块化强,并能较好地兼顾全局完整性与局部细节;不足是流程通常较复杂,常伴随额外的局部检测、近邻搜索或块选择步骤。

体素方法虽然能恢复任意拓扑的三维体积,但真正感兴趣的通常是其表面网格,而这通常需要借助 Marching Cubes 等后处理算法从体素中提取等值面。这样一来,整个系统就无法实现从输入图像到最终表面网格的完全端到端训练。 为此,有研究提出可微分的 Marching Cubes 思想,将体素占据概率与单元边上的顶点位置预测结合起来,用概率方式隐式定义网格拓扑,并保持对网络参数可导。这样,网络可以在训练过程中直接面向表面网格进行优化。不过,这类方法目前仍主要受限于较低分辨率。

五、解码————表面重建

  • 参数化方法
  • 模板变形方法
  • 点云方法

六、解码————中间表示

常见的中间表示有

  • 深度图;
  • 法向图;
  • 轮廓图;
  • 多视图深度图;
  • 局部点云

再通过体素融合、点云补全或表面恢复获得完整三维结果。这样做的原因在于,从二维图像预测这些 2.5D 表达通常比直接预测完整三维更容易,而它们又能为后续重建提供更直接的几何约束。

在视频或多帧序列场景中,连续帧之间存在大量冗余与约束信息。部分方法使用 RNN、LSTM 或三维卷积 LSTM 记忆先前帧中已恢复的结构,再结合新帧不断更新结果,从而实现逐步细化的三维重建。不过循环结构存在串行计算慢、输入顺序敏感的问题。因此,也有工作改为并行处理多张输入图像,再通过融合模块自适应选择不同视图中的高质量局部结果,提高效率与鲁棒性。

七、训练

监督级别 Degree of Supervision

三维监督

最直接的训练方式,是用带有真实三维标注的图像—三维模型对进行监督。
常用损失包括:

  • 体素上的 L2、IoU 或交叉熵损失;
  • 点云上的 Chamfer Distance 与 Earth Mover’s Distance;
  • 面向单图多解性的 Min-of-N 损失等。
二维监督

由于三维标注昂贵,很多方法尝试仅利用二维图像信息训练。核心思路是:如果重建结果正确,那么其投影到图像平面后应与真实图像中的轮廓、深度或法向一致。

常见二维监督信号包括:

  • 轮廓/掩膜一致性;
  • 深度图一致性;
  • 法向一致性;
  • 多视图射线一致性;

二维监督极大降低了对三维标注的依赖,但由于同一二维投影可能对应多个不同三维形状,因此往往需要结合多视图信息、姿态估计或形状先验来减少歧义。

视频监督

还有方法利用视频中的运动信息替代三维标注。通过传统 SfM 等方法先从视频中估计稀疏深度与相机位姿,将其作为弱监督信号训练网络,使网络在测试时能从单帧图像中直接预测完整三维结构。

训练过程 Training Procedure

二维—三维联合嵌入

为让二维图像与其对应三维形状在潜在空间中靠近,部分方法在训练阶段同时引入二维编码器和三维编码器,共同映射到同一潜在表示上。这样可以增强表示的可解释性和跨模态一致性。

对抗训练

生成对抗网络可用于提升结果的真实感与先验合理性。判别器在训练中学习区分“真实三维形状”与“网络生成形状”,从而迫使生成器输出更符合目标类别分布的结构。对抗训练尤其适合处理二维监督下的三维歧义问题,因为它能抑制虽然满足投影一致性、但形状本身不自然的错误解。

与其他任务联合训练

三维重建还可与分割、姿态估计等任务联合优化。多任务训练能够让不同任务互相提供约束,例如更好的目标分割可帮助重建,而更准确的重建也可能反过来提升部件分割质量。

八、特定应用

三维人体重建

人体重建方法可分为两类:

  • 参数化模型方法:如基于 SCAPE、SMPL 等人体统计模型,网络只需回归形状与姿态参数。这类方法适合在强先验下恢复人体结构,但在服装、头发和细节表现上较受限制。
  • 体素或显式几何方法:直接预测人体的体素或三维场,更适合处理复杂服饰与细节,但通常对数据规模与训练难度要求更高。

三维人脸重建

人脸重建中最常见的是基于 3D Morphable Model 的参数回归方法。网络从图像直接预测身份、表情、纹理、光照和姿态参数,再通过可微分渲染实现端到端训练。这类方法速度快、先验强,但容易得到过于平滑的人脸。为提升细节,很多方法在粗脸重建后叠加细节恢复模块,或结合形状从明暗恢复技术进一步估计皱纹与局部纹理结构。

另一些方法则尝试摆脱 3DMM,直接预测体素、深度图或点云等更自由的表示,以提升对大表情、遮挡和复杂姿态的适应性。

三维场景解析

与单个物体不同,场景重建还需解决多目标检测、布局估计、遮挡处理以及对象间空间关系建模等问题。一类方法采用“检测—检索—匹配—变形”的流水线;另一类则利用多分支深度网络,联合预测场景布局、物体体素形状和姿态。该方向仍受限于训练数据不足与场景复杂性高等问题。

九、数据集与性能比较

作者总结出以下趋势:

  • 早期方法以体素为主
  • 高分辨率体素依赖压缩与分层策略
  • 表面方法逐渐兴起
  • 多视图通常优于单视图
  • 二维监督方法进步明显,但仍略逊于三维监督

十、结论与展望

基于深度学习的图像三维目标重建已经从早期的体素回归,逐步发展到多表示、多监督、多任务融合的复杂体系。其核心驱动力来自三个方面:更强的三维形状先验学习能力;更丰富的表示方式与网络结构;更灵活的监督机制,尤其是二维弱监督与可微渲染技术。

作者认为,尽管深度学习三维重建已取得显著进展,但整体上仍处于发展早期,未来至少有以下几个值得重点推进的方向:

  • 训练数据问题
  • 泛化到未见类别
  • 精细尺度重建
  • 重建与识别的关系
  • 多对象、遮挡与复杂背景
  • 三维视频与时序重建
  • 面向特定类别的深度先验建模

十一、笔者思考

论文发表于2021年5月。