从图像恢复三维物体:深度学习时代的表示、监督与评测地图
这篇综述将 2015–2019 年的图像三维重建研究组织为一套可操作的坐标系:输入条件、三维表示、网络结构、监督信号、数据来源与性能指标。它没有训练一个新模型;核心贡献是梳理 149 篇工作,并将其中的通用物体重建方法放在同一比较框架中。
先确认这篇论文做了什么
作者研究的是从一张或多张 RGB 图像恢复物体三维几何的深度学习方法,主体覆盖通用物体,同时讨论人体、人脸与整场景。传统多视图几何、纯深度估计、形状补全、草图建模和新视角合成只作为邻近问题出现。
作者收集的 2015 年以来论文总数。原文说明收集截止时仍未覆盖大量 CVPR 2019 与即将召开的 ICCV 2019 工作。
通用三维物体重建算法,是方法分类与性能表的主体。
11 篇人脸重建与 6 篇人体形状重建;类特定先验使问题更受约束。
研究缺口
2015 年之后,CNN、VAE、GAN、可微渲染以及大型三维数据集让单图重建迅速发展。已有综述分别处理传统几何、深度估计或非刚性形状分析,缺少围绕深度学习图像三维物体重建的统一整理。本文用“表示—结构—监督—数据—评测”五个维度连接分散工作。
证据边界
综述没有统一复现实验,也没有重新训练表中模型。Table 6 汇总原论文报告值,训练数据、预处理、阈值与评测协议仍存在差异,因此横向排名需要谨慎。
作者明确声明:综述覆盖 149 篇工作,并提供分类、关键方法性能比较、开放问题与未来方向。页面中的单模型结构和结果均属于被综述论文。
问题形式化与分类轴
给定同一物体的一组 RGB 图像,目标是学习预测器,使输出形状尽量接近未知真实形状。
\(\mathbf{I}\) 是一张或多张输入图像;\(X\) 是真实三维形状;\(\widehat{X}\) 是预测结果;\(\theta\) 是模型参数;\(d\) 根据输出表示选择体素、点集或表面距离。
输入
单图、多图或视频;摄像机内外参可知或未知;图像可以包含单物体或多物体、干净背景或杂乱背景;轮廓、分割与语义标签可以充当额外线索。
输出
体素占用、概率占用、SDF/TSDF、参数化曲面、模板变形网格、点云;也可先预测深度、法线或轮廓,再融合为三维形状。
网络
基础形式是 \(f=g\circ h\):编码器 \(h\) 把图像映射到潜变量,解码器 \(g\) 生成三维表示。训练时还可加入 3D 编码器、判别器或多任务分支。
潜空间
离散或连续、扁平或层级、纠缠或解耦。理想潜空间应保持相似性、局部连续性、视角不变性,并让同一对象的 2D 与 3D 观测落在邻近区域。
监督
完整 3D 标注、2D 多视图轮廓/深度/法线、视频运动与 SfM、未标注 3D 形状、对抗先验,以及重建与分割联合训练。
评测
IoU、交叉熵、Chamfer Distance、Earth Mover Distance、对称表面误差,同时关注 3D 监督量、运行时间和内存。
原 Table 1:深度学习图像三维物体重建分类
| 分类维度 | 子维度 | 原文列出的选择 |
|---|---|---|
| 输入 | 训练 | 单张或多张 RGB;3D ground truth;单物体或多物体;统一背景或杂乱背景;segmentation |
| 测试 | 单张或多张 RGB;segmentation | |
| 输出 | 体积 | 高分辨率或低分辨率 |
| 表面 | 参数化、模板变形、点云 | |
| 路径 | 直接重建或经中介表示重建 | |
| 网络结构 | 训练结构 | Encoder–Decoder |
| 训练结构 | TL-Net | |
| 训练结构 | Conditional GAN / GAN | |
| 训练到测试变化 | 3D-VAE-GAN → 测试时保留 3D-VAE | |
| 训练 | 监督程度 | 2D 或 3D supervision;weak supervision;loss functions |
| 训练程序 | adversarial training;joint 2D–3D embedding;与其他任务联合训练 |
原 Table 2:编码阶段分类
| 潜空间性质 | 原文对应结构 | 作用 |
|---|---|---|
| 离散或连续 | ConvNet、ResNet、FC、3D-VAE | 连续 VAE 潜空间支持采样与插值;普通编码器没有连续性保证。 |
| 扁平或层级 | 层级 latent variables 与 skip connections | 不同层次编码局部与全局特征,缓解单一潜变量造成的模糊重建。 |
| 解耦表示 | shape code、pose / lighting / transformation code | 把形状同相机姿态和照明分开,减少无关变化进入形状表示。 |
三维表示决定解码器
早期方法借助规则体素网格直接迁移二维卷积;随分辨率需求上升,研究转向八叉树、连续隐式场、网格与点云。
体素、SDF 与 TSDF
规则占用网格适配 3D CNN,能表达任意拓扑和内部结构,内存复杂度随分辨率立方增长。概率占用便于学习;SDF 提供清晰表面位置与法线;TSDF 适合从局部深度观测增量融合。
32³ / 64³octreecontinuous field
参数化与模板变形
几何图像、球面映射或多个二维 patch 把曲面转成规则域;模板变形直接预测顶点位移或 FFD 参数。它们节省内存并输出显式表面,常受固定拓扑、genus-0 或模板类别限制。
geometry imageGCNNFFD
无序点集
点集可用全连接层直接生成,也可先投影到规则网格或通过 KD-tree 排序后使用一维卷积。表示紧凑、无需固定连接关系,代价是邻域结构与连续表面需要额外恢复。
FC decodergridKD-tree



体积解码路线表(原 Table 3 的完整方法行)
| 引用 | 采样 / 内容 | 分辨率策略 | 网络 | 输入到输出 |
|---|---|---|---|---|
| [7] | 规则 / 占用 | 低分辨率 | LSTM + UpConv | 图像 → 体素 |
| [25] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [17] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [4] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [6] | 规则 / 占用 | 128³ | UpConv | 图像 → 2.5D → 体素 |
| [26] | 规则 / SDF | patch synthesis | UpConv | 扫描 → 体素 |
| [27] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [12] | 规则 / 占用 | DCT 子空间 | IDCT | 图像 → 体素 |
| [18] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [28] | 规则 / 占用 | 128³,volume slicing | CNN → LSTM → CNN | 图像 → 体素 |
| [24] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [29] | 规则 / TSDF | 部件分解 | LSTM + MDN | 深度 → 包围盒基元 |
| [30] | Fruxel / 占用 | 128³ | UpConv | 图像 → 体素 |
| [31] | 规则 / TSDF | PCA 子空间 | FC | 图像 → 体素 |
| [32] | 自适应 | 固定 O-CNN | octree CNN | 未列 |
| [33] | 自适应 | 学习 OGN | octree generator | 未列 |
| [8] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [9] | 规则 / 占用 | 128³ | UpConv | 图像 → 2.5D → 体素 |
| [34] | 自适应 / 占用 | O-CNN + patch-guided | UpConv | 图像 → 体素 |
| [13] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [35] | 规则 / TSDF | OctNet,global-to-local | UpConv | 扫描 → 体素 |
| [11] | 规则 / 占用 | 低分辨率 | UpConv | 图像 → 体素 |
| [36] | 自适应 / 占用 | HSP | UpConv nets | 图像 → 体素 |


网格解码路线表(原 Table 4)
| 引用 | 表示 | 变形模型 | 模板 | 解码器 |
|---|---|---|---|---|
| [52] | Geometry Image | — | — | UpConv |
| [53] | Geometry Image | — | — | ResNet blocks + 2 Conv |
| [54] | Patch-based | — | — | MLP |
| [55] | Mesh | vertex deformation | sphere | FC |
| [56] | Mesh | vertex deformation | ellipse | GCNN blocks |
| [20] | Mesh | vertex | cube | UpConv |
| [57] | Mesh | vertex deformation | learned CNN template | FC |
| [58] | Mesh | FFD | k-NN | FC |
| [59] | Mesh | FFD | NN | UpConv |
| [60] | Mesh | FFD | k-NN | feed-forward |
这套分类最有价值的部分是把表示的工程代价同网络设计直接连接起来:体素拥有规则局部邻域,但内存代价很高;网格拥有显式连通性,但拓扑变化困难;点云拓扑自由,但局部关系需要另行建模。2019 年之后的隐式函数与神经场路线延续了作者已经观察到的“连续场降低分辨率绑定”方向。
监督信号如何替代昂贵的三维标注
综述把训练分成 3D 监督、2D 重投影监督、视频监督,以及联合潜空间和对抗训练。下列公式属于被综述方法与通用评测形式。
三维监督
体素输出常用 \(L_2\)、负 IoU 或交叉熵。概率占用中,\(p_i\) 和 \(\widehat{p}_i\) 分别是真实与预测占用概率。
点集监督
EMD 寻找双集合之间的匹配;Chamfer Distance 使用最近邻近似,计算代价更低。
多解重建
Min-of-N 用随机变量扰动输入,使单张图像能够生成多个合理三维解释。
二维重投影
\(P\) 是可微投影器,\(\alpha^{(j)}\) 是相机参数,\(S^{(j)}\) 是第 \(j\) 个真实轮廓。监督更易获得,但轮廓通常只约束 visual hull。
对抗训练
判别器约束生成形状落在合理类别流形上。原文同时指出高分辨率 GAN 难以稳定训练,需要平衡生成器与判别器。




训练流程的实际输入与输出
输入图像—形状配对,输出体素、网格或点云;直接计算三维重建误差。监督精确,采集成本高。
用多视图轮廓、深度、法线、相机参数或 SfM 结果作为监督;预测三维形状后投影回观测空间。
用未标注 3D 形状、GAN 判别器、分割分支或姿态分支约束输出,提高合理性与局部结构。
作者认为弱监督、无监督、域适配和逼真合成数据将缓解三维标注不足。原文给出方法趋势和部分代表结果,没有通过统一实验验证所有未来判断。
数据决定可比较性
原 Table 5 共列出 14 个常用数据集。合成 CAD 数据规模大却缺少自然图像;真实图像数据通常只有少量三维标注;场景数据带来多物体、杂乱背景与相机标定。
| 数据集 | 年份 | 图像数量 / 尺寸 | 场景属性 | 类别 / 三维对象 | 三维真值 | 相机参数 |
|---|---|---|---|---|---|---|
| ShapeNet [139] | 2015 | — / — | 单物体;渲染;统一背景 | 55 / 51,300 | 51,300 个 3D model | 内参 |
| ModelNet [3] | 2015 | — / — | 单物体;渲染;统一背景 | 662 / 127,915 | 127,915 个 3D model | 内参 |
| IKEA [140] | 2013 | 759 / 可变 | 单物体;真实室内;杂乱 | 7 / 219 | 759 张图像有 3D model | 内参 + 外参 |
| Pix3D [9] | 2018 | 9,531 / 110×110 至 3264×2448 | 单物体;真实室内;杂乱 | 9 / 1,015 | 9,531 张图像有 3D model | 焦距 + 外参 |
| PASCAL 3D+ [141] | 2014 | 30,899 / 可变 | 多物体;真实室内外;杂乱 | 12 / 36,000 | 30,809 张图像有 3D model | 内参 + 外参 |
| ObjectNet3D [142] | 2016 | 90,127 / 可变 | 多物体;真实室内外;杂乱 | 100 / 44,147 | 90,127 张图像有 3D model | 内参 + 外参 |
| KITTI12 [143] | 2012 | 41,778 / 1240×376 | 多物体;真实室外;杂乱 | 2 / 40,000 | 12,000 张图像有 point cloud | 内参 + 外参 |
| ScanNet [144] | 2017–2018 | 2,492,518 / RGB 640×480,1296×968 | 多物体;真实室内;杂乱 | 296 / 36,123 | 全部图像有 dense depth | 内参 + 外参 |
| Stanford Car [145] | 2013 | 16,185 / 可变 | 单物体;真实室外;杂乱 | 196 / — | — | — |
| Caltech-UCSD Birds 200 [146,147] | 2010–2011 | 6,033 / 可变 | 单物体;真实;杂乱 | 200 / — | — | 外参 |
| SUNCG [148] | 2017 | 130,269 / — | 多物体;合成;杂乱 | 84 / 5,697,217 | depth + voxel grid | 内参 |
| Stanford 2D-3D-S [149,150] | 2016–2017 | 70,496 / 1080×1080 | 多物体;真实室内;杂乱 | 13 / 6,005 | point cloud + mesh | 内参 + 外参 |
| ETHZ CVL RueMonge [151] | 2014 | 428 / — | 多物体;真实室外;杂乱 | 8 / — | 428 张图像有 point cloud + mesh | 内参 |
| NYU V2 [152] | 2012 | 1,449 / 640×480 | 多物体;真实室内;杂乱 | 894 / 35,064 | dense depth + 3D points | 内参 |
Table 5 的“对象数”“带三维真值的图像数”和“类别数”并非同一统计口径。PASCAL 3D+ 在原表中分别写为 30,899 张图像与 30,809 张带三维真值图像,本页保留这两个原始数值。使用这些数据复现实验时,应回到对应数据集版本与原方法划分,核实渲染视角、背景合成、体素化分辨率、相机坐标系和测试类别。
原 Table 6:代表方法性能全表
数值顺序为 ShapeNet、Pix3D、PASCAL3D+。破折号表示综述没有报告。IoU 的体素化分辨率会显著影响数值;CD 的缩放也依赖原论文协议。
| 方法 | 训练 / 测试输入 | 输出 | 监督 / 网络 | IoU | CD | 时间 / 内存 |
|---|---|---|---|---|---|---|
| Xie et al. [86] | 训练 \(n\ge1\) RGB + 3D GT;测试 1 RGB / 20 RGB;杂乱 | 体素 32³ | 3D;VGG16 encoder + 3D decoder + refiner | (0.658, —, 0.669) / 20-view (0.705, —, —) @32³ | — | 9.9 ms;114.4M 参数 |
| Richter et al. [51] | 训练 1 RGB + 3D GT;测试 1 RGB;干净 | 体素 512³ | 3D;3D encoder + 2D decoder | (0.641, —, —) @32³ | — | — |
| Tulsiani et al. [11] | 训练多 RGB + segmentation;测试 1 RGB;杂乱 | 体素 + pose | 2D multiview;encoder/decoder + pose CNN | (0.620, —, —) @32³ | — | — |
| Tatarchenko et al. [33] | 训练 \(n\ge1\) RGB + 3D GT;测试 1 RGB;杂乱 | 体素 512³ / 32³ | 3D;Octree Generating Network | 512³ 未报;32³ (0.596, —, 0.504) @32³ | — | 2.06 s / 0.88 GB;32³ 为 16 ms、12.46M、0.29 GB |
| Tulsiani et al. [8] | 训练多 RGB + silhouette + 可选 depth;测试 1 RGB;杂乱 | 体素 32³ | 2D multiview;encoder-decoder | (0.546, —, 0.536) @32³ | — | — |
| Wu et al. [6] | 训练 1 RGB + 3D GT;测试 1 RGB;杂乱 | 体素 128³ | 2D + 2.5D;TL + 3D-VAE + encoder-decoder | (0.570, —, 0.390) @128³ | — | — |
| Gwak et al. [97] | 1 或 5 RGB + silhouette + pose;可加未标注 3D;测试 1 RGB | 体素 | 2D / 2D+U3D;GAN | 1-view 0.257;+U3D 0.403;5-view 0.444;+U3D 0.4849,均 ShapeNet @32³ | — | — |
| Johnston et al. [12] | 训练 1 RGB + 3D GT;测试 1 RGB;杂乱 | 体素 128³ / 32³ | 3D;encoder + IDCT | 128³ (0.417, —, 0.4496);32³ (0.579, —, 0.5474) | — | 32 / 15 ms;2.2 / 1.7 GB |
| Yan et al. [4] | 训练多 RGB + silhouette + pose;测试 1 RGB;干净 | 体素 32³ | 2D;encoder-decoder | (0.570, —, —) @32³ | — | — |
| Choy et al. [7] | 训练 \(n\ge1\) RGB + 3D GT;测试 1 / 20 RGB;杂乱 | 体素 32³ | 3D;encoder-LSTM-decoder | 1-view (0.560, —, 0.537);20-view (0.636, —, —) @32³ | — | 73.35 ms;35.97M;超过 4.5 GB |
| Kato et al. [155] | 训练 1 或 20 RGB + silhouette + pose;测试 1 RGB;杂乱 | mesh + texture | 2D;encoder-decoder | 1-view (0.513, —, —);20-view (0.655, —, —) @32³ | 1-view (0.0378, —, —) | — |
| Mandikal et al. [81] | 训练 1 RGB + 3D GT;测试 1 RGB;干净 | point cloud 16,384 | 3D;Conv + FC,global-to-local | — | (8.63, —, —) | 13.3M 参数 |
| Jiang et al. [74] | 训练 1 RGB + 3D GT;测试 1 RGB;杂乱 | point cloud 1,024 | 3D;两组 encoder-decoder + GAN | (0.7116, —, —) @32³ | — | — |
| Zeng et al. [80] | 训练 RGB + silhouette + pose + 3D;测试 1 RGB;杂乱 | point cloud 1,024 | 3D + self;encoder-decoder + point autoencoder | (0.648, —, —) @32³ | (3.678, —, —) | — |
| Kato et al. [55] | 训练 1 RGB + silhouette;测试 1 RGB;杂乱 | mesh 642 | 2D;encoder + FC | (0.602, —, —) @32³ | — | — |
| Jack et al. [58] | 训练 RGB + FFD parameters;测试 1 RGB;干净 | mesh 16,384 | 3D;encoder + FC | (0.671, —, —) @32³ | — | — |
| Groueix et al. [54] | 训练 1 RGB + 3D GT;测试 1 RGB;干净 | mesh 1,024 | 3D;multibranch MLP | — | (1.51, —, —) | — |
| Wang et al. [56] | 训练 RGB + 3D GT;测试 1 RGB;干净 | mesh 2,466 | 3D;Pixel2Mesh 路线 | — | (0.591, —, —) | — |
| Mandikal et al. [21] | 训练 1 RGB + 3D GT;测试 1 RGB;杂乱 | point cloud 2,048 | 3D;3D-VAE + TL embedding | — | (5.4, —, —) | — |
| Soltani et al. [19] | 训练 20 silhouettes + poses 或 1 silhouette;测试 1 silhouette;干净 | 20 depth maps | 2D;3D-VAE | 20-view (0.835, —, —);1-view (0.679, —, —) @32³ | — | — |
| Fan et al. [72] | 训练 1 RGB + 3D GT;测试 1 RGB;杂乱 | point set 1,024 | 3D;point generation network | (0.640, —, —) @32³ | (5.62, —, —) | — |
| Pontes et al. [60] | 训练 1 RGB + GT FFD;测试 1 RGB;干净 | mesh | 3D;encoder + FC | (0.575, —, 0.299) @32³ | — | — |
| Kurenkov et al. [59] | 训练 1 RGB + 3D GT;测试 1 RGB;干净 | point cloud 1,024 | 3D;2D encoder + 3D encoder/decoder | — | (0.3, —, —) | — |
多视图信号有效
同一方法内,多视图通常提升结果:Choy et al. 从 0.560 到 0.636;Xie et al. 从 0.658 到 0.705;Kato et al. 从 0.513 到 0.655。
稀疏结构降低内存
综述给出的 32³ 内存对比中,OGN 为 0.29 GB,Johnston et al. 为 1.7 GB,Choy et al. 超过 4.5 GB。实现复杂度限制了八叉树方法的广泛采用。
协议差异限制排名
输入视图数、背景、类别、三维监督、输出分辨率和体素化阈值均不同。Soltani et al. 的 0.835 来自 silhouette 输入与 20-depth-map 表示,不能直接视作通用 RGB 单图重建胜者。
特殊对象与场景
人体
参数方法以 SCAPE、SMPL 等统计模型回归形状和姿态;体积方法直接预测占用场。SMPL 强先验提升单图稳定性,却限制可表达细节;BodyNet 通过 2D 姿态、2D 分割、3D 姿态和体积形状四级级联引入中间监督。
人脸
3DMM 路线从图像回归身份、纹理、表情、姿态和光照参数;FineNet、shape-from-shading 或高分辨率深度分支补充皱纹等细节。弱监督方法通过可微渲染或人脸识别特征训练。
完整场景
场景解析需要检测、布局、姿态、尺度与对象几何。早期系统常从 CAD 库检索后再变形;端到端方法可以在 ROI 中预测 32³ 体素和姿态,但通常依赖合成场景标注。
作者在 2019 年指出的开放问题
训练数据
扩大真实图像—三维配对数据,改进弱监督、无监督、域适配与逼真渲染,缩小合成域和真实域差距。
未见类别泛化
标准随机划分无法回答模型面对全新对象类别时的表现。作者建议结合传统几何和学习方法。
细尺度几何
现有方法擅长粗结构,仍难恢复植物、头发、毛发等细薄结构。
重建与识别的偏差
部分网络更像识别和检索器,依靠类别先验生成常见形状,像素证据对实例细节的约束不足。
多物体与遮挡
检测和重建经常串行独立运行;联合训练需要多对象三维数据、对象级分割与适合弱监督的损失。
3D 视频与完整场景
时间序列提供额外观测,也要求帧间平滑一致;完整场景进一步需要对象关系、部件关系与语义布局。
Reviewer Commentary
分类框架仍然清晰
- 将表示、编码、监督、训练程序和数据集放进同一体系。
- Table 3、4、5、6 连接实现选择、资源代价和性能。
- 明确讨论单图歧义、visual hull 上限、合成域偏差和识别偏差。
- 同时覆盖通用物体、人体、人脸与场景,边界说明充分。
比较仍受原论文协议制约
- 没有统一代码、统一数据划分与统一重算指标。
- Table 6 的 IoU 分辨率、CD 尺度、输入视图与监督量不同。
- 检索期截止于 2019 年,未覆盖 NeRF、3D Gaussian Splatting、大规模扩散先验等后续路线。
- 系统综述流程没有给出明确数据库、检索式、筛选流程与排除标准。
更可复验的综述协议
- 发布结构化方法表、统一 benchmark 脚本和版本化检索记录。
- 按 seen-instance、seen-category、unseen-category 分开报告泛化。
- 统一输出为表面采样点后计算尺度归一化 CD、F-score 与法线一致性。
- 同时报告显存峰值、推理延迟、三维监督量和相机先验。
对当前研究的可延伸问题
可将作者的“识别先验与几何证据结合”扩展为显式 test-time optimization:生成模型提供类别和外观先验,多视图或单图可微渲染误差提供实例证据,搜索过程同时优化相机、拓扑与表面参数。评测应把逼真度、几何一致性、未见类别泛化和计算成本分别报告,避免由单一感知指标掩盖几何失败。
训练数据、未见对象、细尺度重建、识别偏差、多物体、3D 视频与场景解析来自原论文 Section 11。生成先验结合 test-time optimization 的具体方案属于本页研究延伸。
来源与版本说明
- Han, Laga, Bennamoun. arXiv:1906.06543v3:2019-06-15 首次提交,2019-11-01 修订;本页方法、公式、图表与未来方向以 v3 PDF 为主。
- IEEE DOI 10.1109/TPAMI.2019.2954885:期刊在线发表记录对应 2019;卷期版本为 IEEE Transactions on Pattern Analysis and Machine Intelligence, 43(5), 1578–1604, 2021。
- arXiv HTML:用于核对章节、表格结构与官方托管 Figure 资源。