本讲主题:3D 视觉。核心内容是 3D 形状的五种表示(深度图、体素、点云、网格、隐式表面)及对应的深度学习方法: - Depth Map:单目深度/法线预测 - Voxel Grid:3D 卷积、八叉树 - Point Cloud:PointNet、Chamfer 距离 - Mesh:Pixel2Mesh、Mesh R-CNN - Implicit Surface:DeepSDF、NeRF、3D Gaussian Splatting


$\large\star$ 回顾:2D 视觉与视频

2D 任务谱系(Lecture 9 内容):

任务 输出 空间范围 物体概念
分类 单个标签 CAT ❌ ❌
语义分割 逐像素标签 ✅ ❌
目标检测 边界框+类别 ✅ ✅
实例分割 实例级掩膜 ✅ ✅

视频 = 2D + 时间:视频是一序列图像,4D 张量 T × 3 × H × W(或 3 × T × H × W)。

3D 视觉的丰富主题:

1
2
3D 表示 · 对应点计算 · 多视图立体视觉 · 运动恢复结构(SfM)
3D 物体姿态估计 · 同步定位与建图(SLAM) · 可微渲染 · 3D 传感器 …

$\large\star$ 一、多视图 CNN(Multi-View CNN)

Su et al., ICCV 2015:从多张 2D 视图做 3D 形状分类

1
2
3
4
5
View 1 → CNN1 → ┐
View 2 → CNN1 → ┤
View 3 → CNN1 → ┼→ View pooling(逐元素 max) → CNN2 → softmax → 类别
⋮ ⋮ ┘
View N → CNN1 →
  • CNN1:提取图像特征的 ConvNet(每视图共享权重)
  • View pooling:跨所有视图做逐元素最大池化
  • CNN2:产生形状描述符的第二个 ConvNet

ModelNet40 实验结果(分类 Accuracy / 检索 mAP):

方法 分类 检索
SPH(非深度) 68.2% 33.3%
LFD(非深度) 75.5% 40.9%
3D ShapeNets 77.3% 49.2%
FV, 12 views 84.8% 43.9%
CNN, 12 views 88.6% 62.8%
MVCNN, 12 views 89.9% 70.1%
MVCNN+metric, 12 views 89.5% 80.2%

$\large\star$ 二、3D 形状的五种表示

1
2
3
┌──────────────┬──────────────┬────────────────┬──────────────┬─────────────────┐
│ Depth Map │ Voxel Grid │ Point Cloud │ Mesh │ Implicit Surface│
└──────────────┴──────────────┴────────────────┴──────────────┴─────────────────┘

$\large\star$ 三、深度图(Depth Map)

3.1 定义

  • RGB 图像:3 × H × W;深度图:H × W
  • 每个像素给出:相机到该像素对应世界点的距离
  • RGB 图像 + 深度图像 = RGB-D 图像(2.5D)
  • 可由某些 3D 传感器直接记录(如 Intel RealSense、Microsoft Kinect)

3.2 预测深度:全卷积网络

1
2
3
RGB 输入 3×H×W → 全卷积网络 → 预测深度 1×H×W
↓ 与真值做逐像素损失
真值深度 1×H×W

Eigen, Puhrsch & Fergus, NeurIPS 2014;Eigen & Fergus, ICCV 2015

3.3 ⚠️ 尺度/深度歧义(Scale Ambiguity)

小近物体和大远物体在图像上看起来完全一样!

单个图像中绝对尺度/深度是歧义的 → 使用尺度不变损失(scale invariant loss)。

3.4 现代深度预测:DepthAnything 系列

Yang et al., CVPR 2024:“Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data” 核心:利用大规模无标签数据提升单目深度估计。

3.5 表面法线(Surface Normals)

  • 法线:3 × H × W,每个像素给出垂直于该点表面的向量
  • 预测法线:全卷积网络 + 逐像素损失(余弦相似度) $$\text{loss} = \frac{x \cdot y}{|x|\,|y|} = \cos\theta \quad \text{(Recall: } x \cdot y = |x||y|\cos\theta\text{)}$$

$\large\star$ 四、体素网格(Voxel Grid)

4.1 定义与特点

用 V × V × V 的占用网格表示形状(类似 Mask R-CNN 的分割掩膜,但是 3D 的!)

优点 缺点
✅ 概念简单:就是一个 3D 网格! ❌ 需要高空间分辨率才能捕捉精细结构
❌ 扩展到高分辨率非常困难

4.2 3D 卷积处理体素输入

Wu et al., “3D ShapeNets”, CVPR 2015;Choy et al., “3D-R2N2”, ECCV 2016

1
输入 1×30×30×30 → 6×6×6 conv → 48×13×13×13 → 5×5×5 conv → 160×5×5×5 → 4×4×4 conv → 512×2×2×2 → FC → 类别分数

与 2D 卷积完全类似,只是把卷积核换成 3D(如 6 × 6 × 6)。

4.3 ⚠️ 体素的内存问题

存储 V × V × V 个 float32:10243 体素网格需要 4GB 内存!

4.4 扩展方案:八叉树(Oct-Trees)

Tatarchenko et al., “Octree Generating Networks”, ICCV 2017

使用异构分辨率的体素网格(精细区域更密、平坦区域更稀)!


$\large\star$ 五、点云(Point Cloud)

5.1 定义与特点

用 3D 空间中的 P 个点表示形状。

优点 缺点
✅ 无需海量点即可表示精细结构 ⚠️ 需要新架构、新损失函数
❌ 不显式表示表面:渲染/应用需后处理提取网格

5.2 处理点云:PointNet

Qi et al., “PointNet”, CVPR 2017;“PointNet++”, NeurIPS 2017

核心需求:点云是集合——顺序无关!

1
输入点云 P×3 → 每个点跑 MLP → 逐点特征 P×D → Max-Pool → 池化向量 D → FC → 类别分数 C

💡 Max-Pool 是关键:跨所有点取最大值 → 天然与点的顺序/数量无关!

PointNet 应用: - 3D 物体分类:PointNet → airplane? - 点云语义分割:逐点分类 - 物体部件分割(Part Segmentation)

5.3 传感器融合:点云 + RGB(DenseFusion)

Wang et al., “DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion”, CVPR 2019

1
2
3
点云 (x,y,z) ──PointNet──> 逐点特征 ─┐
├─ 逐点特征融合 → 分类/分割/…
RGB ──CNN──> 逐像素特征 ─────────────┘

5.4 生成点云:PSGN

Fan et al., “A Point Set Generation Network for 3D Object Reconstruction from a Single Image”, CVPR 2017

1
2
3
4
输入图像 3×H×W → 2D CNN → 图像特征 C×H'×W'
├→ 全连接分支 → 点 (P1×3)
└→ 卷积分支 → 点 (P2×3)×H'×W'
最终点云: (P1 + H'·W'·P2) × 3

5.5 损失函数:Chamfer 距离

问题:需要(可微的)方式把点云当集合来比较!

Chamfer 距离 = 每个点到另一集合中最近邻的 L2 距离之和(双向):

dCD(S1, S2) = ∑x ∈ S1miny ∈ S2∥x − y∥22 + ∑y ∈ S2minx ∈ S1∥x − y∥22

💡 双向求和保证 S1 中每个点都在 S2 附近,反之亦然——即使点云没有对应关系也能度量!

5.6 现代点云模型:Point Transformer 系列

Zhao et al., “Point Transformer”, ICCV 2021:把 Transformer 引入点集处理。


$\large\star$ 六、三角网格(Triangle Mesh)

6.1 定义与特点

用一组三角形表示 3D 形状: - 顶点(Vertices):3D 空间中的 V 个点 - 面(Faces):顶点上的三角形集合

优点 缺点
✅ 图形学标准表示 ❌ 用神经网络处理不平凡
✅ 显式表示 3D 形状
✅ 自适应:平面用很少面,细节处分配更多面
✅ 可在顶点附加数据并插值到整个表面:RGB、纹理坐标、法线等

6.2 预测网格:Pixel2Mesh

Wang et al., “Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images”, ECCV 2018

输入单张 RGB 图像 → 输出物体的三角网格

关键思想: - 迭代细化(Iterative Refinement) - 图卷积(Graph Convolution) - 顶点对齐特征(Vertex Aligned Features) - Chamfer 损失(同点云)

6.3 预测网格:Mesh R-CNN

Gkioxari, Malik & Johnson, “Mesh R-CNN”, ICCV 2019

类比:Mask R-CNN 做 2D 图像 → 2D 形状;Mesh R-CNN 做 2D 图像 → 三角网格!

任务:输入单张 RGB 图像,输出: - 一组检测到的物体,每个物体包含: - 边界框 - 类别标签 - 实例分割 - 3D 三角网格

混合 3D 形状表示: - 纯网格变形效果好,但拓扑(顶点、面、亏格、连通分量)被初始网格固定 - ✅ 解决方案:先用体素预测创建初始网格,再变形细化!

1
输入图像 → 2D 物体识别 → 3D 物体体素 → 3D 物体网格

6.4 现代网格预测:Mesh Anything 系列

Chen et al., “MeshAnything: Artist-created mesh generation with autoregressive transformers”, ICLR 2025


$\large\star$ 七、隐式表面(Implicit Functions)

7.1 核心思想

学习一个函数把任意 3D 点分类为形状内部/外部:

  • 3D 物体的表面是水平集:$\{x : o(x) = \frac{1}{2}\}$
1
隐式函数(判定内外)⇄ 显式形状(表面)

7.2 构造实体几何(CSG,Implicit)

Slide credit: Ren Ng (CS184/284A)

通过布尔运算组合隐式几何:并(Union)、交(Intersection)、差(Difference)。

7.3 DeepSDF

Park et al., “DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation”, CVPR 2019

学习连续有符号距离函数(SDF):每个 3D 点输出到表面的带符号距离(符号表示内外)。

7.4 NeRF(神经辐射场)

Mildenhall et al., “Representing Scenes as Neural Radiance Fields for View Synthesis”, ECCV 2020

新视角合成(Novel View Synthesis):

$$(x, y, z, \theta, \phi) \xrightarrow{\text{MLP}} (r, g, b, \sigma)$$

输入 输出
场景位置 (x, y, z) + 观察方向 (θ, ϕ) 颜色 (r, g, b) + 密度 σ

一个 MLP 编码整个 3D 场景!沿光线采样点、查询 MLP、体渲染得到图像。

NeRF 家族: - Nerfies (ICCV 2021):动态/可变形场景 - RawNeRF (CVPR 2022):高动态范围(HDR)图像 - Block-NeRF (CVPR 2022):大规模场景(旧金山街区)

⚠️ 主要问题:非常慢! - 训练:单个场景在 V100 上要 1–2 天! - 推理:256 × 256 像素 × 每像素 224 个采样点 = 1460 万次 MLP 前向!

7.5 3D 高斯泼溅(3D Gaussian Splatting)

Kerbl & Kopanas et al., 2023

NeRF 3D Gaussian Splatting
渲染方式 沿光线查询连续 MLP 沿光线混合离散高斯集合
场景拟合 慢(最好 GPU 也要几小时) 快(几分钟)
渲染 慢(中等分辨率约 10 秒/帧) 实时
建模 隐式 显式

💡 动态 3D 高斯(Luiten et al., 3DV 2024):跟踪 + 动态视角合成。


$\large\star$ 八、现代 3D 应用

方向 代表模型
现代 SLAM VGGT 系列(Wang et al., 2026)
3D 物体生成 TRELLIS 系列(Xiang et al., 2025):原生紧凑结构化 3D 潜变量
3D 世界生成 Marble(World Labs, 2025)

$\large\star$ 九、总结

表示 核心 代表方法 优点/缺点
深度图 逐像素距离(2.5D) Eigen 2014/2015、DepthAnything 传感器可直接获取;单目有尺度歧义
体素 3D 占用网格 3D ShapeNets、3D-R2N2、Octree 概念简单;内存爆炸(10243=4GB)
点云 点的集合 PointNet/++、DenseFusion、Point Transformer 精细结构高效;需新架构(集合处理)+ Chamfer 损失
网格 顶点+三角形 Pixel2Mesh、Mesh R-CNN、MeshAnything 图形学标准、自适应;神经网络处理难
隐式表面 内外判定函数 DeepSDF、NeRF、3DGS NeRF 连续高质量但慢;3DGS 显式快速实时

核心损失/技巧: - 深度:尺度不变损失 - 点云/网格:Chamfer 距离(集合间双向最近邻 L2) - 点云处理:逐点 MLP + Max-Pool(顺序无关) - 多视图:跨视图最大池化聚合

下一讲:CS231n(拾陆)——视觉与语言