深度估计与3D视觉
深度估计和 3D 视觉是让机器从二维图像”看到”三维世界的关键技术。从单目深度估计到 NeRF 神经辐射场,再到 3D Gaussian Splatting,这些技术正在重塑 AR/VR、自动驾驶和影视特效。前置阅读:CNN 卷积网络、Transformer 架构。
想象你闭上一只眼睛看世界:
- 单目深度估计 = 只用一只眼睛判断距离。大脑利用透视、阴影、遮挡等线索推断远近——近的东西大、远的山小。深度学习模型做的就是从单张图片中学会这些线索。
- 双目深度估计 = 两只眼睛配合。左右眼看到的画面略有差异(视差,即同一个物体在左右眼中的水平位置偏移量),物体越近差异越大——大脑通过这种差异直接计算距离,这就是立体匹配。
- NeRF = 绕着雕塑拍一圈照片,然后训练一个神经网络”记住”这个场景的 3D 结构。之后可以从任意新角度渲染出照片级的画面——像在游戏里自由穿梭。
- 3D Gaussian Splatting = 用无数个彩色半透明椭球(高斯滴)拼搭出整个 3D 场景,渲染速度极快——NeRF 的”实时版”。
单目深度估计
Section titled “单目深度估计”单目深度估计是一个本质不适定的问题(ill-posed problem,即给定输入存在多个甚至无穷多个合理输出)——同一张 2D 图像可以对应无限种 3D 场景。例如,一张看起来像”近处的小杯子”的图像,也可能对应”远处的大桌子”。深度网络通过从大量数据中学习统计先验(statistical prior,即从训练数据中总结出的常见规律)来解决:
-
MiDaS(Intel, 2020):用混合数据集训练,输出相对深度(近大远小的排序),不给出绝对距离值。采用 DenseNet/ResNet encoder + decoder,多尺度特征融合。其核心创新是”零样本泛化”——通过同时混合多个数据集(如 Matterport、Make3D、KITTI)的不同深度范围,用比例不变损失函数统一训练:
其中 是真实深度, 是预测深度。这个损失对深度的整体缩放不敏感,使模型学到的是”相对深度的正确排序”而非绝对值。
-
DPT(Dense Prediction Transformer, 2021):用 Vision Transformer(ViT,一种用自注意力机制处理图像全局关系的架构)做编码器,比 CNN 更擅长捕捉全局上下文。ViT 将图像切分为 patch(图块),每个 patch 作为一个 token 输入 Transformer,再通过 decoder 恢复到像素级深度图。
-
Depth Anything V1(2024 年 1 月):用大规模无标注图像(6200 万张)做自监督预训练,核心思想是”教师-学生”蒸馏——先用 150 万张标注数据训练一个教师模型,再让教师模型为 6200 万张无标注图像生成伪标签(pseudo-label,即模型自动生成的标签),学生模型同时学习真实标签和伪标签。泛化能力极强,成为单目深度的新 SOTA。
-
Depth Anything V2(2024 年 6 月):在 V1 基础上的重大升级。关键改进:
- 用精确教师替代噪声教师:V2 先用大规模合成数据(来自精确渲染的虚拟场景)训练一个高精度教师模型,再蒸馏到学生模型——合成数据的深度标签是像素级精确的,消除了 V1 中真实数据伪标签的噪声。
- 学生模型处理更多数据:用 60 万张合成图像训练教师,再向 6200 万张无标注真实图像蒸馏,最终模型在真实场景上的细粒度细节(如树枝、发丝)远优于 V1。
- 提供从 Small(24M 参数)到 Large(335M 参数)的完整模型族,覆盖从手机端到服务器端的部署需求。
-
Metric3D / Metric3D v2(2023-2024):解决了单目深度无法给出绝对尺度的难题。通过引入”规范相机空间”(canonical camera space)变换,将不同焦距的相机图像归一化,使模型能输出具有真实物理单位(米)的绝对深度,无需额外传感器。
单目深度的局限:尽管 Metric3D 等方法已能在已知相机内参时恢复绝对尺度,但通用场景下仍难以保证精度。实际应用中常需已知参照物(如地面、车辆大小)来恢复尺度。
双目深度估计(立体匹配)
Section titled “双目深度估计(立体匹配)”双目相机的左右镜头有固定基线距离 B(baseline,两个镜头中心之间的物理间距),同一物点在左右图中的水平偏移量(视差,disparity)d 与深度 Z 成反比。这个关系可从针孔相机模型严格推导:
设焦距为 f(focal length,相机镜头中心到成像平面的距离,单位为像素),一个 3D 点 P 在深度 Z 处,它在左右相机成像平面上的水平坐标分别为 和 。由相似三角形关系:
两式相减消去 X:
因此:
视差越大物体越近,视差为零物体在无穷远。注意: 和 的乘积称为”深度常数”,决定了系统的测距范围——基线越长或焦距越大,同一深度对应的视差越大,测量精度越高,但可测的最大深度也相应减小。
传统方法(SGM = Semi-Global Matching,半全局匹配;BM = Block Matching,块匹配)逐像素匹配代价昂贵,且在弱纹理区域(如白墙)容易失败。深度学习方法:
-
PSMNet(Pyramid Stereo Matching Network, 2018):用 3D 卷积做代价聚合。首先构建 4D 代价体(cost volume,即对于每个像素和每个可能视差值,存储左右图特征的匹配代价),然后用 3D 卷积层在这个代价体上聚合上下文信息。空间金字塔模块(SPP)捕捉多尺度信息。相比 2D 方法,3D 卷积能更好地建模视差维度的连续性。
-
RAFT-Stereo(Recurrent All-Pairs Field Transforms for Stereo, 2021):把光流(optical flow,像素级运动估计)领域的循环优化思想迁移到立体匹配。核心是维护一个循环更新的视差场(disparity field),每一步从相关性体(correlation volume,左右图所有特征对的相关性矩阵)中查找信息并经 GRU(Gated Recurrent Unit,门控循环单元)更新视差。高精度实时,在 KITTI、Middlebury 等基准上刷新纪录。
-
IGEV-Stereo(Iterative Geometry Encoding Volume, CVPR 2023):构建几何编码体,结合视差和几何先验,进一步提升了 RAFT-Stereo 的精度,特别是在细节边界和遮挡区域。
NeRF(神经辐射场)
Section titled “NeRF(神经辐射场)”NeRF(Neural Radiance Field,神经辐射场)是 2020 年提出的革命性 3D 重建方法。核心思想:用一个 MLP(Multi-Layer Perceptron,多层感知机,即由多个全连接层堆叠而成的神经网络)隐式表示一个 3D 场景——输入一个 3D 坐标 (x, y, z) 和观察方向 (θ, φ),输出该点的颜色 (r, g, b) 和体密度 σ(volume density,表示光线在该点被吸收或散射的程度)。
为什么用 MLP 表示场景? 传统 3D 表示(如网格、点云)是离散的,分辨率有限。MLP 将场景编码为连续函数,理论上可以无限分辨率查询任意 3D 点的属性——这就是”隐式神经表示”(Implicit Neural Representation, INR)的核心。
位置编码(Positional Encoding):原始 3D 坐标直接输入 MLP 会导致网络只能学到低频变化(模糊),因为 MLP 倾向于拟合低频函数。NeRF 引入位置编码将低维坐标映射到高维空间:
其中 通常取 10(位置)或 4(方向)。这使网络能学到高频细节(如纹理、锐利边缘)。
渲染流程(体渲染,Volume Rendering):
- 射线采样:从虚拟相机每个像素发射一条射线穿过场景。射线上任意一点可参数化为 ,其中 是相机原点, 是射线方向。
- 点采样:在射线的近界 到远界 之间采样 个点。NeRF 采用分层采样(stratified sampling),即在每个等分区间内均匀随机取点,保证梯度可传播。
- MLP 查询:对每个采样点,查询 MLP 得到颜色 和密度 。
- 体渲染积分:沿射线对颜色做加权积分,得到该像素的最终颜色。
体渲染的物理意义是:光线穿过有吸收和发光的介质(类比有色烟雾),最终到达相机的颜色是沿光路上所有点的颜色按”可见度”加权积分的结果。连续形式的渲染方程为:
其中累积透射率 表示光线从 到 没有被遮挡的概率(即剩余的”光强度比例”)。 是在微小段 内光线被吸收的概率。
NeRF 将这个连续积分离散化为数值求和:
其中 是前 个采样点的累积透射率, 是相邻采样点间距。 可理解为”第 个采样点的 alpha(不透明度)”。
NeRF 的训练目标:让渲染出来的图像和真实拍摄的照片尽可能一致。损失函数为渲染像素颜色的 MSE(均方误差):
其中 是真实颜色, 和 分别是粗采样(coarse)和细采样(fine)的渲染结果。训练好后可以从任意角度渲染出照片级画面。
缺点:训练慢(每个场景需数小时)、渲染慢(每帧需秒级)、存储大(每个场景的 MLP 权重数十 MB)。这些问题催生了大量后续工作。
NeRF 的后续发展(2021-2025):
- Instant-NGP(NVIDIA, 2022):引入多分辨率哈希网格(multi-resolution hash grid),将训练时间从数小时压缩到数秒。核心是用可学习的哈希表替代大 MLP 查询特征。
- Plenoxels(2022):证明不需要神经网络也能做辐射场——纯体素网格 + 三线性插值即可达到 NeRF 质量,“无 MLP 的 NeRF”。
- Mip-NeRF 360(2022):解决无界场景(unbounded scene,即同时包含近景和远景的大场景)的混叠问题,质量远超原始 NeRF。
- Zip-NeRF(2023):将 Mip-NeRF 的抗锯齿思想与 Instant-NGP 的哈希网格结合,成为 2023 年 NeRF 质量最高的方法之一。
- 2024-2025 趋势:NeRF 研究逐渐转向更大规模和更通用化——从单场景重建走向前馈式通用 NeRF(如 PixelNeRF、MVSNeRF),以及与 3DGS 融合的混合表示。NeRF 的隐式表示思想已被广泛吸收进通用 3D 基础模型的研究中。
3D Gaussian Splatting
Section titled “3D Gaussian Splatting”3D Gaussian Splatting(3DGS, 2023)解决了 NeRF 的速度问题。核心改变:用一组显式的 3D 高斯椭球(通常数十万到数百万个)代替隐式 MLP 来表示场景。
每个高斯由以下属性参数化:
- 位置 :高斯椭球的中心坐标。
- 协方差矩阵 :控制椭球的形状、大小和旋转方向。为保证半正定性(高斯必须有界),实际存储为 ,其中 是旋转矩阵(用四元数表示), 是对角缩放矩阵。
- 不透明度 :椭球的整体透明程度。
- 球谐系数(Spherical Harmonics, SH):用球谐函数(一组定义在球面上的正交基函数,类似 2D 的傅里叶基但扩展到球面)来表示与视角相关的颜色。通常使用 3 阶球谐(16 个系数 × 3 通道 = 48 维),使物体在不同观察角度下呈现不同颜色(如镜面反射效果)。
3D 高斯在 3D 空间中的概率密度函数为:
渲染方式——基于 Tile 的 Splatting + Alpha 混合:
- 3D 到 2D 投影:将每个 3D 高斯投影到 2D 屏幕。投影后的 2D 高斯协方差为 ,其中 是视图变换矩阵, 是投影变换的雅可比矩阵。
- 分块(Tiling):将屏幕划分为 16×16 的图块,每个高斯分配到其覆盖的图块。
- 按深度排序:在每个图块内,将高斯按深度(离相机的距离)从近到远排序。
- Alpha 混合:对每个像素,从前到后依次混合各高斯的颜色:
其中 是第 个高斯投影到该像素的最终不透明度(由高斯在该像素位置的值乘以全局不透明度得到), 是前 个高斯的累积透射率。这个公式与 NeRF 的体渲染离散求和形式完全一致——区别仅在于 3DGS 的”采样点”是显式的高斯椭球,而 NeRF 是沿射线采样。
整个渲染过程完全可微(differentiable,即梯度可以通过渲染过程反向传播到高斯参数),因此可以用梯度下降优化高斯参数。训练中还采用自适应密度控制(adaptive density control):定期删除不透明度过低的高斯(opacity < 0.005)、克隆梯度大的高斯(欠重建区域)、分裂尺寸过大的高斯(过重建区域),动态调整高斯数量。
GPU 友好的分块渲染使其训练后可达实时渲染(100+ fps),质量与 NeRF 持平甚至更优。训练时间从小时级降到分钟级(通常 5-10 分钟)。
3DGS 的快速发展(2024-2025):
- 压缩与存储优化:原始 3DGS 每场景需数百 MB 磁盘空间。SOG(Self-Organizing Gaussians)、Compressed 3DGS、Mini-Splatting 等方法将存储压缩 10-50 倍,同时保持渲染质量。
- 动态场景 3DGS:Deformable 3DGS、4DGS、Spacetime Gaussians 等将 3DGS 扩展到动态场景(如人物运动),用形变网络或 4D 高斯建模时间维度。
- 大规模场景:Hierarchical 3DGS、Block-NeRF 思想的 3DGS 版本支持街区级甚至城市级的大场景重建。
- 前馈式 3DGS:像素 Splatting(PixelSplat, CVPR 2024)、MVSplat 等方法不再需要逐场景优化,而是用网络一次性前馈预测高斯参数,实现实时多视角重建——一张图片输入即可秒级生成 3DGS 场景。
- 3DGS 作为通用 3D 表示:2025 年的趋势是将 3DGS 与大规模预训练结合,探索 3DGS 作为 4D 世界模型(world model)的场景表示——自动驾驶仿真、具身智能等场景中,3DGS 正在成为连接感知与仿真的桥梁。
- 物理仿真集成:Spring-Gaus、PhysGaussian 等将弹性体物理模拟嵌入 3DGS,使其可以模拟软体变形和碰撞。
点云是 3D 扫描仪/LiDAR(Light Detection and Ranging,激光雷达,用激光脉冲测量距离的传感器)直接输出的数据格式——一组无序的 3D 坐标点集合。传统 CNN 无法直接处理(点云无规则网格结构,且点数不固定),这催生了专门针对点云的深度学习架构:
-
PointNet(Qi et al., CVPR 2017):开创性地用共享 MLP + max pooling 直接处理无序点集。其数学描述如下:给定输入点云 ( 通常是坐标 加上法向量或颜色等特征),对每个点独立过一个共享的 MLP ,得到局部特征 ,然后做逐元素的 max pooling 得到全局特征向量 :
max pooling 保证输出与点的输入顺序无关(置换不变性,permutation invariance——即打乱点的输入顺序,输出不变),这是处理无序集合的关键。数学上, 运算满足交换律:。全局特征 可接分类头预测类别;将 与各点局部特征拼接后可做逐点分割。
PointNet 的理论局限:每个点独立处理,缺乏对局部几何结构(如平面的法向量、曲率)的建模能力。
-
PointNet++(2017):在 PointNet 基础上加入层次化采样和分组(set abstraction),捕捉局部几何结构——类似 CNN 的层次化感受野。通过最远点采样(FPS, Farthest Point Sampling——贪心选取彼此距离最远的点集,保证空间均匀覆盖)选取中心点,在球邻域(以中心点为圆心、半径 的球)内做 PointNet,逐层提取从局部到全局的特征。每层降采样点数,类似 CNN 的 pooling。
-
后续发展:PointCNN(学习 变换重排点序后做卷积)、DGCNN(动态图卷积——在特征空间动态构建 k 近邻图,EdgeConv 操作在图边上)、Point Transformer(用注意力机制做点间信息传递)等进一步改进局部特征提取,在 ScanNet 等基准上刷新纪录。
-
点云基础模型(2024-2025):PointGPT、Point-MAE(用掩码自编码做自监督预训练)等开始将大模型范式引入点云,使单模型在多个下游任务上泛化。
自动驾驶 3D 感知
Section titled “自动驾驶 3D 感知”点云深度学习最大的落地场景是自动驾驶 3D 感知:LiDAR 每秒产生数十万个 3D 点,需要实时检测周围的车辆、行人和骑行者,输出它们的 3D 边界框和速度。
| 方法路线 | 代表方法 | 思路 |
|---|---|---|
| 点云体素化 | VoxelNet、SECOND、CenterPoint | 将点云划分为 3D 体素网格,用 3D 稀疏卷积处理 |
| 鸟瞰图(BEV) | PointPillars、BEVFusion | 将点云投影为 2D 鸟瞰图,用 2D CNN 检测 |
| 点-体素融合 | PV-RCNN、SAFDNet | 同时利用原始点和体素特征,精度最高 |
| 多模态融合 | BEVFusion、TransFusion | LiDAR 点云 + 敄像头图像融合,取长补短 |
自动驾驶的感知系统通常采用多传感器融合策略:摄像头提供丰富的语义信息(车道线、交通标志颜色),LiDAR 提供精确的 3D 距离和形状,毫米波雷达补充恶劣天气下的检测能力。详见点云处理。
BEV 感知的最新发展(2023-2025):
BEV(Bird’s Eye View,鸟瞰图——从正上方俯视的 2D 平面表示)已成为自动驾驶感知的主流范式。核心技术是视角转换(View Transformation):将多个摄像头的 2D 图像特征”提升”到统一的 3D/BEV 空间。
- BEVFormer(2022):用空间交叉注意力(Spatial Cross Attention)和时间自注意力从多视角图像构建 BEV 特征,融合时序信息提升检测稳定性。
- LSS(Lift, Splat, Shoot, 2020):奠定了”先 Lift(预测每个像素的深度分布)再 Splat(投影到 BEV 网格)“的范式。显式预测深度是连接 2D 和 3D 的关键。
- BEVDepth(2022):在 LSS 基础上引入显式深度监督(用 LiDAR 作为深度监督信号训练视角转换模块),大幅提升了 BEV 检测精度。
- 2024-2025 趋势:
- Occupancy Prediction(占用预测):不再输出 3D 边界框,而是直接预测每个 3D 体素是否被占据——更精细地处理不规则形状物体(如施工路障、散落货物)。代表方法 OCCNet、SurroundOcc。
- 端到端自动驾驶:UniAD、PARA-Drive 等将感知、预测、规划整合到单一网络中端到端训练,BEV 特征作为中间表示贯穿全流程。
- 大模型驱动感知:基于 Vision-Language Model(如 LLaVA 架构的 3D 扩展)实现可解释的 3D 场景理解——不仅能检测障碍物,还能用自然语言解释”前方有施工区域,建议减速”。
使用 Transformers 做单目深度估计
Section titled “使用 Transformers 做单目深度估计”from transformers import pipeline # pip install transformers torchfrom PIL import Image
# 加载 Depth Anything V2 单目深度模型depth_pipe = pipeline(task="depth-estimation", model="depth-anything/Depth-Anything-V2-Small-hf")
img = Image.open("street.jpg") # 任意场景照片result = depth_pipe(img)result["depth"].save("depth_map.png") # 保存深度图# 亮=近、暗=远;单目模型输出相对深度# V2 相比 V1 在细节边界(树枝、人物轮廓)上有显著提升双目视差概念计算
Section titled “双目视差概念计算”import numpy as np
# 简化公式:深度 Z = f * B / disparityf = 700.0 # 焦距(像素单位,需通过相机标定获得)B = 0.12 # 基线(双目间距,米)disparity = 30 # 左右图视差(像素,由立体匹配算法计算)
Z = f * B / disparity # 深度print(f"距离约 {Z:.2f} 米") # → 2.80 米# 视差越大 → 距离越近;视差为零 → 无穷远
# 视差测距的精度与深度的平方成正比衰减:# dZ = -f*B / d^2 * d_disp,远处物体测距误差急剧增大disparity_noise = 1.0 # 视差测量噪声(1 像素)dZ = abs(f * B / disparity**2 * disparity_noise)print(f"深度估计误差约 ±{dZ:.2f} 米") # → ±0.09 米用 nerfstudio 快速上手 3DGS
Section titled “用 nerfstudio 快速上手 3DGS”# 安装 nerfstudio(建议在 conda 环境中)pip install nerfstudio
# 用你拍摄的一组照片训练 3D Gaussian Splatting# 先用 COLMAP 估计相机位姿ns-process-data images --input-dir ./my_photos --output-dir ./processed
# 训练 3DGS(通常 5-10 分钟即可收敛)ns-train splatfacto --data ./processed
# 训练完成后启动实时渲染查看器ns-viewer --load-config ./processed/config.yml# splatfacto 是 nerfstudio 中 3DGS 的实现名称- 单目 vs 双目 vs LiDAR:单目便宜但无绝对尺度;双目能算绝对距离但需要精确标定(标定 = 估计相机内外参数的过程)且对无纹理区域(如白墙、光滑表面)效果差;LiDAR 精度最高但成本高且在雨雪天气性能下降。自动驾驶通常多传感器融合。
- NeRF 的数据要求:需要数十到数百张多角度照片,且需要已知相机位姿(通常用 COLMAP 做 SfM 重建获得)。大场景 NeRF 训练成本极高。拍摄时注意:环绕物体拍摄、覆盖角度尽量完整、保持光照一致。
- 3DGS 是 NeRF 的实用替代:如果需要实时渲染或部署,优先选 3D Gaussian Splatting。训练时间从小时级降到分钟级。但需注意存储——原始 3DGS 每场景数百 MB,生产环境需配合压缩方法。
- Depth Anything V2 的选择建议:Small(24M)适合移动端实时推理;Base(97M)平衡精度和速度;Large(335M)适合离线高精度场景。V2 在处理细粒度细节(发丝、栅栏)上远优于 V1。
- 深度图的评估指标:常用 AbsRel(绝对相对误差,)、RMSE(均方根误差)、 准确率阈值(预测深度与真实深度比值在 内的像素占比)。对比不同方法时注意是相对深度还是绝对深度。
- 点云预处理:LiDAR 点云通常需要下采样(体素滤波——将空间划分为小立方体,每个立方体内只保留一个点)、去噪(统计滤波——删除离邻居过远的孤立点)和配准(ICP 对齐多帧——Iterative Closest Point 迭代最近点算法)才能送入网络。
- AR/VR:Apple Vision Pro 用深度估计做虚拟物体与现实场景的遮挡和碰撞——虚拟球能落到真实地板上。
- 自动驾驶 3D 感知:特斯拉纯视觉方案用单目深度估计构建 BEV(鸟瞰图);Waymo 用 LiDAR 点云做 3D 目标检测。2024-2025 年趋势是 Occupancy Network 和端到端方案。
- 室内导航与机器人:扫地机器人、配送机器人用深度相机(RGB-D,同时输出彩色图和深度图的相机,如 Intel RealSense)避障和建图。
- 影视特效:NeRF/3DGS 用于虚拟场景重建,演员可以在”重建的”真实环境中表演——大量节省搭建实景的成本。迪士尼、工业光魔已在生产流程中试用 3DGS。
- 建筑与房地产:用手机扫描房间生成 3D 模型,Matterport 等公司提供 3D 看房服务。
- 文物数字化:用多视角重建技术为文物建立 3D 数字档案。故宫、敦煌等已大量采用。
- 机器人抓取:机械臂利用深度估计判断物体距离和形状,规划抓取路径——仓储物流、农业采摘等场景。
- 医学成像:3D 重建技术用于 CT/MRI 数据的可视化,以及内窥镜的 3D 表面重建。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| Depth Anything V2 | Python | 2024 年单目深度 SOTA,HuggingFace 可直接调用,提供 Small/Base/Large 多种尺寸 |
| Metric3D v2 | Python | 可输出绝对度量深度的单目模型(已知相机内参时) |
| MiDaS | Python | Intel 开源,支持相对深度估计,模型尺寸灵活 |
| nerfstudio | Python | NeRF/3DGS 一站式训练渲染框架,NVIDIA 出品,支持 splatfacto(3DGS)等多种方法 |
| 3D Gaussian Splatting | Python/CUDA | 原版 3DGS 实现,实时渲染;社区有 gsplat、gaussian-splatting 等优化版本 |
| Open3D | Python/C++ | 3D 数据处理库:点云、网格、RGB-D,含可视化和 ICP 配准 |
| PCL | C++ | 点云处理经典库,LiDAR 数据处理标准工具 |
| COLMAP | C++/Python | SfM/MVS 重建工具,NeRF/3DGS 前置位姿估计 |
| MMDetection3D | Python | 基于 PyTorch 的 3D 目标检测框架,含 PointPillars、CenterPoint 等 |
| gsplat | Python/CUDA | 3DGS 的高性能开源实现,支持可微渲染和前馈式训练 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 深度估计 | Depth Estimation | 从图像推断每个像素到相机的距离 |
| 单目深度 | Monocular Depth | 从单张图像推断深度,通常无法得到绝对尺度 |
| 视差 | Disparity | 同一物点在左右双目图像中的水平位置差 |
| 基线 | Baseline | 双目相机两个镜头中心之间的物理间距 |
| 焦距 | Focal Length | 镜头中心到成像平面的距离,决定视场角和放大倍率 |
| 立体匹配 | Stereo Matching | 双目深度估计的核心步骤,逐像素寻找左右图对应点 |
| 代价体 | Cost Volume | 对每个像素和每个可能视差值存储的匹配代价矩阵 |
| 神经辐射场 | NeRF | 用 MLP 隐式表示 3D 场景的颜色和密度场 |
| 体渲染 | Volume Rendering | 沿射线对 3D 场景做积分得到 2D 像素颜色的过程 |
| 累积透射率 | Transmittance | 光线从起点到某点未被遮挡的概率, |
| 位置编码 | Positional Encoding | 将低维坐标映射到高维正弦/余弦空间,使网络能学习高频细节 |
| MLP | Multi-Layer Perceptron | 多层全连接网络,NeRF 用它作为场景的隐式存储 |
| 3D Gaussian Splatting | 3DGS | 用显式高斯椭球表示场景,实时渲染的 3D 重建方法 |
| Alpha 混合 | Alpha Blending | 按不透明度从前到后依次叠加各层颜色的合成方法 |
| 球谐函数 | Spherical Harmonics | 定义在球面上的正交基函数,用于表示与视角相关的颜色 |
| 协方差矩阵 | Covariance Matrix | 描述高斯椭球形状和旋转方向的 3×3 矩阵 |
| 点云 | Point Cloud | 一组无序 3D 坐标点,LiDAR/深度相机的直接输出 |
| PointNet | PointNet | 直接处理无序点集的开创性网络架构,基于共享 MLP + max pooling |
| 置换不变性 | Permutation Invariance | 函数输出与输入元素的排列顺序无关的性质 |
| 鸟瞰图 | BEV (Bird’s Eye View) | 从正上方俯视的 2D 平面表示,自动驾驶感知的主流范式 |
| 占用预测 | Occupancy Prediction | 预测每个 3D 体素是否被占据,替代 3D 边界框的更精细表示 |
| Structure from Motion | SfM | 从多视角 2D 图像恢复 3D 结构和相机位姿的经典方法 |
| 视角转换 | View Transformation | 将多视角 2D 图像特征转换到统一 3D/BEV 空间的方法 |
- Mildenhall et al.,「NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis」(ECCV 2020):NeRF 原始论文,3D 视觉领域的里程碑,开创了隐式神经表示方向。
- Kerbl et al.,「3D Gaussian Splatting for Real-Time Radiance Field Rendering」(SIGGRAPH 2023):3DGS 论文,将 NeRF 渲染速度从秒级提升到实时。
- Müller et al.,「Instant Neural Graphics Primitives with a Multiresolution Hash Encoding」(SIGGRAPH 2022):Instant-NGP,用哈希网格将 NeRF 训练压缩到秒级。
- Ranftl et al.,「Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer」(TPAMI 2020):MiDaS 论文,混合数据集训练提升单目深度泛化能力。
- Yang et al.,「Depth Anything V2」(2024):Depth Anything V2 论文,用精确合成数据教师蒸馏,在细粒度细节上大幅提升。项目页:
https://depth-anything-v2.github.io/。 - Yin et al.,「Metric3D v2」(2024):实现零样本单目绝对深度估计,已知相机内参即可输出真实物理距离。
- Qi et al.,「PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation」(CVPR 2017):PointNet 论文,点云深度学习的开创性工作。
- Li et al.,「BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection」(AAAI 2023):BEVDepth 论文,显式深度监督的 BEV 感知方法。
- nerfstudio:
https://github.com/nerfstudio-project/nerfstudio——最流行的 NeRF/3DGS 工具框架,适合上手实践。 - gsplat:
https://github.com/nerfstudio-project/gsplat——高性能 3DGS 开源实现,支持前馈式训练和可微渲染。