☰
Deep Learning for Computer Vision——3D Vision
2026/9/30 2:50:09 网站建设 项目流程

第一篇:3D视觉基础与多视图几何

1.1 从2D到3D的回顾

  • 2D任务回顾:分类(CAT,无空间范围)、语义分割(GRASS, CAT等,不区分个体)、目标检测(边界框)、实例分割(区分不同个体,如DOG1, DOG2)。

  • 视频理解:视频是一个 4D 张量T x 3 x H x W(或3 x T x H x W)。

  • 3D视觉的核心任务:计算对应关系(Correspondences)、多视图立体(Multi-view Stereo)、运动恢复结构(Structure from Motion, SfM)、3D目标姿态估计、SLAM(同步定位与建图)、可微图形学、3D传感器。

1.2 多视图CNN (Multi-View CNN, MVCNN)

核心思想:如果只有2D图片,如何识别3D物体?从多个角度看它!

  • 流程:

    1. 从物体周围N个不同视角(如12个或80个视角)获取2D图像。

    2. 每个图像通过CNN1提取特征。

    3. View Pooling(视图池化):对所有视图的特征进行逐元素最大池化(Element-wise Max-Pooling)。

      • 💡 为什么要Max-Pooling?因为它是一个对称函数,具有置换不变性(Permutation Invariance)。视图输入的顺序不会影响结果。

    4. 池化后的特征通过CNN2生成最终形状描述符。

    5. 全连接层 + Softmax 输出分类。

  • 实验结果:MVCNN (12 views) 在分类上达到 89.9%,检索 mAP 达到 70.1%,远超传统方法(如SPH, LFD)。

第二篇:几何预测——深度图与表面法线

2.1 深度图(Depth Map)

  • 定义:对于每个像素,深度图给出相机到场景中该点物体的距离。RGB图像 (3 x H x W) + 深度图 (H x W) = RGB-D 图像(2.5D)。可以直接由 Intel RealSense, Microsoft Kinect 等传感器采集。

  • 预测任务:输入 RGB 图像,使用全卷积网络(Fully Convolutional Network)预测深度图。输出1 x H x W。

  • 💡 核心问题:尺度/深度模糊性(Scale/Depth Ambiguity)

    • 由于透视投影,一个小且近的物体,在图像平面上看起来和一个大且远的物体完全一样。从单张图片中,绝对尺度是模糊的。

  • 损失函数:尺度不变损失(Scale Invariant Loss)

    • 我们不能使用简单的逐像素 L2 损失(因为尺度不明)。

    • 公式:

    • 展开后等价于:。

    • 其中​。这迫使预测的深度相对差异与真实值一致,忽略绝对尺度。

  • 现代模型:DepthAnything 系列

    • 利用大规模未标注图像和教师模型生成伪标签,结合LiDAR、SfM等标注数据进行训练,通过语义保持机制,实现了极强的泛化深度预测。

2.2 表面法线(Surface Normals)

  • 定义:对于每个像素,表面法线给出一个垂直于该点表面的向量。RGB: 3 x H x W -> 法线: 3 x H x W。

  • 损失函数:Per-Pixel Loss。计算预测向量 x 和真实向量 y 之间的余弦相似度:

    (即让预测法线和真实法线方向越接近越好)。

  • 💡 课堂幽默:医生对病人说“You are normal(你法线正常/你是个正常人)”,双关语。

第三篇:显式3D表示——体素(Voxels)

3.1 体素表示

  • 定义:用 V×V×V 的3D网格表示形状(类似3D版的掩码Mask,1代表有物体,0代表空)。

  • 优点:概念简单,3D网格。

  • 缺点:需要极高分辨率来捕捉细节;扩展性差(内存消耗巨大)。

3.2 3D 卷积(3D Convolution)

  • 将2D卷积扩展到3D。输入1 x 30 x 30 x 30,使用6x6x6的3D卷积核,一步步提取特征,最后通过全连接层分类(如3D ShapeNets)。

  • 💡 内存灾难:存储一个 1024³ 的体素网格,如果每个体素用 float32(4字节)表示,需要1024*1024*1024*4 bytes ≈ 4GB!仅仅是存一个物体!

3.3 八叉树(Oct-Trees)

  • 解决方案:使用异构分辨率的体素网格。

  • 原理:在物体表面附近使用高分辨率(如 12831283),在平坦空旷区域使用低分辨率(如 32³)。像树枝一样分裂。

第四篇:显式3D表示——点云(Point Cloud)

4.1 点云基础

  • 定义:用 3D 空间中的 PP 个点表示形状。

  • 优点:可以表示精细结构,不需要大量点。

  • 缺点:需要新的网络架构和损失函数;没有显式表示表面(提取网格需要后处理)。

4.2 PointNet

  • 核心挑战:点云是一组无序集合(Set),改变点的顺序不应改变输出。

  • 架构:

    1. 输入P x 3的点云。

    2. 对每个点独立运行共享权重的 MLP(多层感知机)。得到P x D的特征。

    3. Max-Pooling:在 PP 个点上进行最大池化,得到全局的D维特征向量。(再次利用最大池化实现对称函数,保证顺序不变性)。

    4. 全连接层输出类别C。

  • 应用:3D物体分类(飞机?杯子?)、点云语义分割(给每个点分类)、物体部件分割(吉他琴弦、琴身等)。

4.3 传感器融合:DenseFusion

  • 思路:点云 + RGB 图像结合。输入为(x, y, z, r, g, b)。

  • 流程:

    • RGB 通过 CNN 提取Per-pixel feature(逐像素特征)。

    • 点云通过 PointNet 提取Per-point feature(逐点特征)。

    • 将点投影到图像平面,将对应的像素特征拼接到点特征上,实现逐点特征融合。用于6D物体姿态估计。

4.4 生成点云

  • 架构:输入2D图像 -> CNN 特征。

    • 分支1:全连接层,输出 P1×3(全局点坐标)。

    • 分支2:2D卷积,输出 P2×3 的点(密集预测)。

    • 拼接:(P1+H′W′P2)×3 的点云。

  • 💡 损失函数:Chamfer Distance(倒角距离)

    • 由于点云是无序的,L2损失不能直接比较。Chamfer距离衡量两个集合的相似度:

  • 直观理解:对于集合1中的每个点,找集合2中离它最近的点,计算距离平方;反过来再算一遍,求和。这个函数是可微的,可以反向传播。

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

  • 将 Transformer(自注意力机制)应用于点云,处理无序点集,效果超越了 PointNet。

第五篇:显式3D表示——网格(Mesh)

5.1 网格基础

  • 定义:由顶点(Vertices)和面(Faces,通常是三角形)组成的集合。

  • 优点:图形学标准表示;显式表示3D形状;自适应性强(平坦区域少用面,细节区域多用面);可以在顶点上附加数据(RGB、纹理坐标、法线)。

  • 缺点:很难用神经网络直接处理(拓扑结构不规则,连接关系复杂)。

5.2 Pixel2Mesh

  • 任务:单张RGB图像 -> 三角形网格。

  • 核心思想:迭代细化(Iterative Refinement)。

    • 从椭球体(Ellipsoid Mesh)开始。

    • 通过图卷积(Graph Convolution)逐步变形(Mesh Deformation)。

    • 同时,从图像中提取特征(Perceptual Feature Pooling),引导变形。

    • 图反池化(Graph Unpooling)增加顶点数(156 -> 628 -> 2466)。

  • 损失函数:Chamfer Loss(比较预测网格的顶点与真实网格的距离)。

5.3 Mesh R-CNN

  • 任务:2D图像 -> 检测物体(边界框、标签、实例分割)以及每个物体的3D三角网格。

  • 架构:Mask R-CNN + Mesh Head。

  • 💡 混合3D表示(Hybrid Representation):

    • Mesh Deformation 的拓扑结构由初始网格固定,限制了复杂形状。

    • Mesh R-CNN 先用体素预测(Voxel)生成初始网格,再进行变形(Mesh Deformation)。这结合了体素的灵活性和网格的精细度。

  • 流程:输入图像 -> 2D识别(Mask R-CNN) -> 3D体素预测 -> 生成初始网格 -> 迭代变形 -> 输出3D网格。

5.4 现代网格生成:MeshAnything 系列

  • 使用自回归 Transformer直接生成网格(类似于语言模型生成文本)。输入点云或图像,输出网格的顶点和面序列。

第六篇:隐式3D表示(Implicit Functions)

6.1 隐式函数基础

  • 定义:学习一个函数,判断任意3D点是在形状内部还是外部:o:R3→{0,1}。

  • 表面(Surface):3D物体的表面是水平集(Level Set) {x:o(x)=1/2}。

  • 代数曲面(Algebraic Surfaces):球体x²+y²+z²=1,环面,心形。对于牛(Cow)这样复杂的形状,无法用简单多项式表示。

  • 构造实体几何(CSG):通过布尔运算(并集 Union、交集 Intersection、差集 Difference)组合隐式几何。

6.2 DeepSDF

  • 核心:学习有符号距离函数(Signed Distance Function, SDF)。

  • SDF定义:对于空间中的点,输出它到物体表面的距离。表面外为正,表面内为负。

  • 网络:输入3D坐标 (x,y,z),输出SDF值。

  • 优点:可以表示任意复杂的拓扑结构,分辨率无限(连续表示)。缺点是提取网格需要 marching cubes 算法。

第七篇:神经渲染——NeRF与3D高斯泼溅

7.1 NeRF (Neural Radiance Fields, 幻灯片68-75)

  • 核心思想:将场景表示为一个连续的神经辐射场。

  • MLP输入:3D位置 (x,y,z) + 视角方向 (θ,ϕ)。

  • MLP输出:颜色 (r,g,b) + 密度 (σ)。

  • 渲染(Volume Rendering):沿着相机射线(Ray)采样,通过体渲染公式积分计算出像素颜色。

  • 成果:能合成极其逼真的新视角(View Synthesis)。

  • 💡 现代变体:Nerfies(动态可变形场景)、RawNeRF(高动态范围HDR)、BlockNeRF(旧金山街区大场景)。

  • ⚠️ 致命缺陷:

    • 训练极慢:V100 GPU 训练单个场景需 1-2 天。

    • 推理极慢:生成一张 256x256 图像,每像素224个采样点,需要1460万次 MLP 前向传播!

7.2 3D Gaussian Splatting (3D GS)

  • 核心思想:不再使用隐式MLP,而是用显式的3D高斯分布(3D Gaussians)来表示场景。

  • 渲染:沿着射线,将这些高斯分布混合(Blend)在一起。类似于“泼溅”(Splatting)。

  • 💡 优缺点对比:

    • NeRF:拟合慢、渲染慢、隐式建模。

    • 3D GS:拟合快(几分钟)、实时渲染(Real-time)、显式建模。

  • 动态3D高斯(Dynamic 3D Gaussians):通过追踪高斯分布的运动,实现动态场景重建和追踪。

第八篇:现代前沿与高级应用案例

8.1 现代SLAM模型:VGGT 系列

  • 任务:从多帧图像中直接预测相机参数(Camera Token)、深度图(Depth maps)、点云图。

  • 架构:使用 DINOv2 特征 +全局注意力(Global Attention)+ 帧注意力(Frame Attention)的 Transformer。

  • 训练损失:匹配损失(Matching Loss)+ 点损失(Point Loss)。

8.2 现代3D物体生成:TRELLIS 系列

  • 输入文本或图像 -> 生成3D资产。

  • 架构:结构化潜在表示学习(Structured Latent Representation Learning)。

    • 使用 DINOv2 提取视觉特征。

    • 使用稀疏 VAE 编码器/解码器处理体素。

    • 使用Flow Transformer进行结构生成和潜在生成。

    • 最终解码为 3DGS、RF 或 Meshes。

8.3 现代3D世界生成:Marble (World Labs)

  • 通过文本或图像,直接生成完整的、可交互的 3D 世界场景(例如:一个带瀑布、木桥和植被的森林场景)。

🎁 复习要点总结

表示方法数据结构优点缺点代表模型
深度图2.5D 像素直接获取仅单一视角,尺度模糊DepthAnything
体素3D 网格概念简单,可3D卷积内存爆炸3D ShapeNets
点云无序点集精细结构,内存友好无表面,需特定架构PointNet, Point Transformer
网格顶点+面图形学标准,自适应难以用NN处理Pixel2Mesh, Mesh R-CNN
隐式曲面连续函数无限分辨率,拓扑灵活渲染需后处理DeepSDF
NeRF连续MLP照片级真实极慢NeRF, BlockNeRF
3D GS显式高斯实时渲染,快显存占用较大3D Gaussian Splatting

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询