CVDL 期末复习笔记(精炼版)
0 复习策略与知识主线¶
0.1 先抓主线,再记细节¶
本课程可压缩成三条主线:
- 识别主线:局部特征(Harris / SIFT) → 量化聚合(BoW) → 加入空间(SPM) → 深度学习识别(AlexNet / VGG / ResNet)。
- 检测主线:滑窗 + 手工特征(HOG + SVM) → 两阶段深度检测(R-CNN / Fast / Faster) → 单阶段(YOLO / SSD / RetinaNet) → 多尺度(FPN)。
- 像素 / 3D 主线:像素聚类 / 图割 → 交互式分割 / Matting → 语义 / 实例分割 → 相机模型 → 双视图几何 → 重建与 Stereo。
考试 12 题基本覆盖这三条线,答题时先讲“任务 / 动机”,再讲“核心公式 / 流程”,最后讲“优缺点 / 与别的方法关系”。
0.2 名词缩写速查¶
| 缩写 | 含义 | 缩写 | 含义 |
|---|---|---|---|
| BoW | Bag-of-Words | SPM | Spatial Pyramid Matching |
| SIFT | Scale-Invariant Feature Transform | DoG | Difference of Gaussians |
| R-CNN | Regions with CNN features | RPN | Region Proposal Network |
| FPN | Feature Pyramid Network | IoU | Intersection over Union |
| GAN | Generative Adversarial Network | VAE | Variational AutoEncoder |
| Diffusion | 扩散模型 | LSTM | Long Short-Term Memory |
| Transformer | 自注意力架构 | ViT | Vision Transformer |
| DETR | Detection Transformer | Swin | Swin Transformer |
| F | Fundamental Matrix | E | Essential Matrix |
| DLT | Direct Linear Transform | SVD | Singular Value Decomposition |
1 题目精答¶
题目 1:深度神经网络中梯度后向传播的原理¶
一句话:反向传播(Back Propagation, BP)是用链式法则把损失函数对输出层的梯度逐层向前传递,从而计算每一层参数梯度的算法。
详细过程:
- 前向传播:输入 \(x\) 经过各层计算得到预测 \(\hat y\) 和损失 \(L\)。
- 计算输出层梯度:\(\partial L / \partial \hat y\)。
-
链式法则回传:对第 \(l\) 层,已知 \(\partial L / \partial z^{(l)}\),则
\[ \frac{\partial L}{\partial W^{(l)}} = \frac{\partial L}{\partial z^{(l)}} \cdot \frac{\partial z^{(l)}}{\partial W^{(l)}} = \delta^{(l)} \, a^{(l-1)\top}, \]\[ \frac{\partial L}{\partial b^{(l)}} = \delta^{(l)}, \]其中 \(z^{(l)} = W^{(l)} a^{(l-1)} + b^{(l)}\),\(a^{(l)} = \sigma(z^{(l)})\)。 4. 误差向下一层传递:
\[ \delta^{(l-1)} = \left(W^{(l)\top} \delta^{(l)}\right) \odot \sigma'(z^{(l-1)}). \]
关键要点:
- 本质是 链式法则 + 动态规划,避免重复计算。
- 对 RNN 同样适用,把时间展开后沿展开图反向传播,称为 BPTT(BackPropagation Through Time)。
- 深层网络容易出现梯度消失 / 爆炸,是 ResNet、LSTM 等结构出现的动机之一。
关联:
- LeNet-5 确立 CNN 基本结构;AlexNet 让深度网络实用化;ResNet 用残差连接缓解梯度消失。
题目 2:Visual Bag-of-Words 模型的基本思路¶
一句话:把图像看成一组局部特征描述子的集合,通过“视觉词典”量化成词频直方图,再用分类器(如 SVM)做识别。
完整流程:
- 兴趣点检测:在图像中找到稳定局部位置(如 Harris / SIFT / DoG 极值点)。
- 局部特征提取:每个兴趣点周围计算描述子(典型为 SIFT 128 维)。
- 视觉词典学习:用 K-means 对所有训练图像的描述子聚类,得到 \(K\) 个视觉词中心 \(c_1,\dots,c_K\)。
-
特征量化:对每个描述子 \(x_i\),找最近的视觉词
$$ q(x_i) = \arg\min_k |x_i - c_k|_2. $$ 5. 直方图聚合:统计每张图像中每个视觉词出现的频率
$$ h_k = \frac{1}{N}\sum_{i=1}^{N} \mathbf{1}[q(x_i)=k]. $$ 6. 分类:用 \(h = [h_1,\dots,h_K]^\top\) 训练 SVM 等分类器。
为什么有效:
- 局部性假设:图像整体相似是因为局部模式统计分布相似。
- 对几何变化、遮挡、光照变化有一定鲁棒性。
局限:
- 丢失空间信息:相同局部特征不同布局的图像会得到相同直方图。
- 量化误差:硬分配导致边界信息损失。
关联:
- SPM 用空间金字塔解决空间信息丢失;VLAD / Fisher Vector 用高阶统计量缓解量化损失;深度网络用端到端卷积替代手工特征 + 词典。
题目 3:Harris Corner 的基本原理¶
一句话:Harris 角点检测器通过结构张量分析局部窗口向各方向移动时的强度变化,两个方向变化都大且接近的点被判定为角点。
数学推导:
-
窗口向 \((u,v)\) 偏移时的强度变化:
\[ E(u,v) = \sum_{(x,y)\in W} w(x,y)[I(x+u,y+v)-I(x,y)]^2. \] -
一阶泰勒展开:
\[ E(u,v) \approx \begin{bmatrix} u & v \end{bmatrix} M \begin{bmatrix} u \\ v \end{bmatrix}, \]其中结构张量为
\[ M = \sum_{(x,y)\in W} w(x,y) \begin{bmatrix} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{bmatrix}. \] -
Harris 响应函数(避免显式求特征值):
\[ R = \det(M) - k \cdot \mathrm{tr}(M)^2. \] -
通过 \(R\) 的阈值和非极大值抑制(NMS)得到角点。
特征值解释:
| 区域类型 | 特征值条件 | 说明 |
|---|---|---|
| 平坦区 | \(\lambda_1 \approx \lambda_2 \approx 0\) | 各方向变化都小 |
| 边缘 | \(\lambda_1 \gg \lambda_2 \approx 0\) | 仅垂直边缘方向变化大 |
| 角点 | \(\lambda_1 \approx \lambda_2 \gg 0\) | 两个正交方向变化都大 |
Shi-Tomasi 改进:直接用 \(R = \min(\lambda_1, \lambda_2)\),两个特征值都大于阈值才认为是好角点。
局限:
- 对尺度敏感:固定窗口大小无法适应图像缩放,这是 SIFT 引入尺度空间的原因。
关联:
- Harris / Shi-Tomasi 是 KLT 跟踪中“好特征选择”的理论基础;SIFT 用 DoG + 尺度空间解决尺度敏感问题。
题目 4:Spatial Pyramid Matching 的基本原理¶
一句话:SPM 在 BoW 基础上把图像划分成多分辨率空间网格,在每个网格单元内独立统计 BoW 直方图,再拼接成固定长度向量,从而引入粗到细的空间布局信息。
过程:
- 在 \(L\) 个层次上划分图像:
- Level 0:\(1\times 1\)(整幅图,等价于 BoW)
- Level 1:\(2\times 2\)
- Level 2:\(4\times 4\)
- ...
- 每个网格单元内独立做 BoW 量化并统计直方图。
- 把所有层所有单元的直方图按固定顺序拼接。
总维度:
例如 \(K=200, L=2\) 时,维度为 \(200 \times 21 = 4200\)。
为什么比 BoW 好:
- 保留了粗到细的空间布局信息,能区分“相同局部特征但空间排布不同”的图像。
权重:
- 细层通常给更高权重(如 \(w_l = 1/2^{L-l}\)),因为定位更精确。
关联:
- PMK(Pyramid Match Kernel)是 SPM 的理论基础,用多分辨率直方图交集近似最优部分匹配;深度学习中的 SPP-Net 继承了空间金字塔池化思想。
题目 5:ResNet 的基本原理¶
一句话:ResNet 通过残差连接让网络学习“残差映射” \(\mathcal{F}(x) = H(x) - x\),而不是直接学习完整映射 \(H(x)\),从而缓解深层网络的梯度消失与退化问题。
核心公式:
为什么有效:
- 梯度传播更顺畅:残差连接提供 shortcut,梯度可以直接沿恒等映射回传,不易消失。
- 不会比浅层网络差:如果深层某层学不到更好特征,可以让 \(\mathcal{F}(x) \approx 0\),等价于恒等映射,不会比浅层更差。
- 可以训练非常深的网络:从几十层到上百层都能训练。
残差块结构:
- 两个 / 三个卷积层 + BatchNorm + ReLU
- 输入 \(x\) 通过 shortcut 与卷积输出相加
- 最后再过一次 ReLU
关联:
- VGG:深度串行堆叠;GoogLeNet / Inception:多分支并行;DenseNet:进一步用密集连接复用特征。
- ResNet 成为现代检测 / 分割 backbone(Faster R-CNN、FPN、RetinaNet 等)的标准选择。
题目 6:目标检测中 Cascade 方法的基本原理¶
一句话:Cascade 把多个分类器按复杂度逐级排列,前几级用极少计算快速拒绝大量简单负样本,后几级逐步加强对难分样本的判别,从而在保持高检测率的同时把误检率压到极低。
典型代表:Viola-Jones 人脸检测中的 Attentional Cascade。
核心思想:
- 大多数窗口是负样本,应尽早被简单分类器淘汰。
- 每级追求高召回(不错杀正样本),允许一定误检率;因为正样本稀少,所以整体误检率会乘法级下降。
整体指标(乘法效应):
其中 \(d_i\) 是第 \(i\) 级检测率,\(f_i\) 是第 \(i\) 级误检率。
例子:10 级级联,每级 \(d_i \approx 0.99, f_i \approx 0.30\),则
- 整体检测率 \(\approx 0.99^{10} \approx 0.9\)
- 整体误检率 \(\approx 0.3^{10} \approx 6 \times 10^{-6}\)
为什么快:
- Haar-like 矩形特征计算简单。
- 积分图让任意矩形和 O(1) 计算。
- AdaBoost 从海量特征中挑选有效少数。
- Cascade 让大部分窗口在前几级就被拒绝,平均每个窗口只评估约 10 个特征。
关联:
- Cascade 是“如何在保证精度的前提下提速”的经典工程思想;现代 two-stage 检测器(Faster R-CNN)的 RPN + detection head 也有类似“先粗筛再精修”的级联精神。
题目 7:Faster R-CNN 的基本设计¶
一句话:Faster R-CNN = Fast R-CNN + RPN,把候选区域生成也交给神经网络,并与检测头共享 backbone 特征,形成端到端的两阶段检测框架。
演进脉络:
| 方法 | proposal 来源 | 卷积共享 | 训练方式 |
|---|---|---|---|
| R-CNN | Selective Search(外部) | 否(每个 proposal 单独 CNN) | 多阶段 |
| Fast R-CNN | Selective Search(外部) | 是(整图一次卷积) | 端到端检测头 |
| Faster R-CNN | RPN(网络内部) | 是 | 四步交替 / 近似联合训练 |
核心组件:
- Backbone:提取整张图像的 feature map。
- RPN(Region Proposal Network):
- 在共享 feature map 上滑动 3x3 小网络。
- 每个位置预设 \(k\) 个 anchors(典型 3 尺度 × 3 长宽比 = 9)。
- 对每个 anchor 预测:
- objectness:前景 / 背景二分类
- bbox 偏移 \((t_x, t_y, t_w, t_h)\)
- 经 NMS 筛选后输出约 2000 个 proposals。
- RoI Pooling:把不同大小的 proposal 映射成固定尺寸特征。
- Detection Head:对每个 RoI 做类别分类和 bounding box 回归。
Anchor 到预测框的参数化:
RPN 损失:
优势:
- proposal 生成几乎“免费”(共享 backbone)。
- 精度高,成为两阶段检测的经典基线。
关联:
- YOLO / SSD:单阶段直接回归,速度更快但精度通常略低。
- FPN:解决多尺度问题,常与 Faster R-CNN 结合。
- Mask R-CNN:在 Faster R-CNN 上加 mask 分支做实例分割,并用 RoIAlign 替代 RoIPool 解决量化误差。
题目 8:Mean Shift 算法求解图像分割问题的基本原理和过程¶
一句话:Mean Shift 是一种基于密度峰值的 mode-seeking 算法,通过把每个样本点反复移动到其局部邻域的加权均值位置,最终收敛到密度模态,落入同一模态吸引域的点归为一类。
核心公式:
局部加权均值:
Mean Shift 向量:
与 KDE 的关系:
- Mean Shift 向量的方向与核密度估计(KDE)的梯度方向一致,因此它本质上是 带自适应步长的梯度上升,在找概率密度函数的局部极大值。
分割流程:
- 把每个像素表示成特征空间中的点(常用 \((r,g,b,x,y)\) 或 \((L,a,b,x,y)\))。
- 对每个点,在当前位置放置核窗口(带宽 \(h\))。
- 计算窗口内样本的加权均值 \(m(x)\),把中心移到 \(m(x)\)。
- 重复直到收敛到某个 mode。
- 收敛到同一 mode 的点归为同一区域。
关键参数:
- 带宽 \(h\):决定分割粒度。
- \(h\) 小:mode 多,分割细,易碎片化。
- \(h\) 大:mode 少,分割粗,易过合并。
优缺点:
- 优点:不需要预设类别数 \(K\);能处理非球形簇。
- 缺点:对 \(h\) 敏感;大数据集计算开销高。
关联:
- Mean Shift 也用于目标跟踪(Mean-Shift Tracking),在下一帧中找与目标描述子分布最相似的候选区域;K-means 分割需要预设 \(K\),且偏好球形簇。
题目 9:Graph Cut 算法求解交互式图像分割问题的过程¶
一句话:Graph Cut 把交互式分割建模为图上的二值 MRF 能量最小化问题,数据项来自用户标注的前 / 背景颜色模型,平滑项鼓励相邻相似像素标签一致,最后用 s-t min-cut / max-flow 求解最优标签。
能量函数:
其中 \(L_i \in \{0,1\}\)(背景 / 前景)。
两项含义:
- 数据项 \(D_i(L_i)\):像素 \(i\) 属于标签 \(L_i\) 的代价,通常用前景 / 背景颜色模型(如直方图或 GMM)的负对数似然。
-
平滑项 \(V_{ij}(L_i, L_j)\):相邻像素标签不一致时的惩罚,常用
\[ V_{ij}(L_i, L_j) = \lambda \, [L_i \neq L_j] \exp\!\left(-\beta \|I_i - I_j\|^2\right). \]颜色越接近,惩罚越大;强边缘处惩罚小,允许切割沿边界通过。
交互方式:
- 用户用 strokes 标注部分前景和背景像素。
- 被标注像素的标签硬约束到图中(连向 source / sink 的无穷大 / 大权重边)。
求解:
- 把 MRF 能量转化为 s-t 图的最小割问题。
- 用 max-flow / min-cut 算法在多项式时间内求解全局最优。
GrabCut 扩展:
- 用 bounding box 初始化,减少用户交互。
- 用 GMM 建模前景 / 背景颜色分布。
- 迭代:GMM 估计 → Graph Cut 分割 → 重新估计 GMM,直到收敛。
关联:
- Graph Cut 是二值标签优化;Matting 是连续 \(\alpha\) 估计;Ncut 是无监督图分割,用特征向量求解。
题目 10:GAN 的基本模型图、目标函数和优化方法¶
一句话:GAN 由生成器 \(G\) 和判别器 \(D\) 组成对抗博弈,\(G\) 从噪声 \(z\) 生成样本并试图骗过 \(D\),\(D\) 试图区分真实样本与生成样本。
基本结构:
z ~ p(z) x ~ p_data(x)
| |
v v
[Generator G] [Real Data]
| |
v v
G(z) = fake real sample
\ /
\ /
v v
[Discriminator D] ──→ output: 1 (real) or 0 (fake)
目标函数(Minimax):
优化过程:
- 固定 \(G\),更新 \(D\):最大化判别真实与生成样本的能力。
- 固定 \(D\),更新 \(G\):最小化 \(\log(1-D(G(z)))\)(工程上常用 \(-\log D(G(z))\) 避免早期梯度消失)。
- 交替迭代。
典型问题:
- 梯度消失:\(D\) 太强时 \(G\) 梯度很小。
- Mode Collapse:\(G\) 只生成少数几类样本。
关联:
- VAE:显式建模概率分布,通过 KL 正则化学习可采样 latent space;Diffusion:逐步去噪生成,训练更稳定。
题目 11:八点法求解 Fundamental Matrix \(F\) 的过程¶
一句话:八点法利用 8 对(或更多)对应点在两张未标定图像上的坐标,通过线性约束 \(x'^\top F x = 0\) 构造线性方程组,再用 SVD 求解 Fundamental Matrix。
完整推导:
-
极线约束:
对于一对对应点 \(x = [u, v, 1]^\top\) 和 \(x' = [u', v', 1]^\top\),满足
\[ x'^\top F x = 0. \] -
Kronecker 展开:
设 \(F\) 的 9 个元素为向量 \(f = [F_{11}, F_{12}, F_{13}, F_{21}, F_{22}, F_{23}, F_{31}, F_{32}, F_{33}]^\top\),则每对点提供一条线性方程:
\[ [u'u,\ u'v,\ u',\ v'u,\ v'v,\ v',\ u,\ v,\ 1] \, f = 0. \] -
构造 \(A\) 矩阵:
对 \(N\) 对点, stacking 得到
\[ A = \begin{bmatrix} u_1' u_1 & u_1' v_1 & u_1' & v_1' u_1 & v_1' v_1 & v_1' & u_1 & v_1 & 1 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ u_N' u_N & u_N' v_N & u_N' & v_N' u_N & v_N' v_N & v_N' & u_N & v_N & 1 \end{bmatrix} \in \mathbb{R}^{N \times 9}, \]求解 \(A f = 0\)。
-
SVD 求解:
对 \(A\) 做 SVD:\(A = U \Sigma V^\top\)。最小奇异值对应的右奇异向量 \(v_9\) 即为 \(f\) 的解,重排成 \(3 \times 3\) 矩阵 \(\hat F\)。
-
强制秩 2 约束:
真实的 \(F\) 秩为 2。对 \(\hat F\) 再做 SVD:\(\hat F = U \Sigma V^\top\),然后把最小奇异值置 0:
\[ F = U \, \mathrm{diag}(\sigma_1, \sigma_2, 0) \, V^\top. \]
为什么叫“八点法”:
- \(F\) 有 7 个自由度(\(3\times 3\) 齐次矩阵,秩 2 约束再减 1)。
- 理论上 7 对点即可求解,但 8 点法把问题线性化,更稳定实用。
- 实际中通常用 8 对以上点 + RANSAC 抗外点。
与 Essential Matrix 的关系:
- Essential Matrix \(E\) 用于已标定相机(归一化相机坐标),\(E = [t]_\times R\)。
- Fundamental Matrix \(F\) 用于未标定相机(像素坐标),二者关系为 \(E = K'^\top F K\)。
3D Vision 计算题专题见第 3 节。
题目 12:扩散模型的基本模型图、目标函数和优化方法¶
一句话:扩散模型通过前向过程逐步给数据加噪,再学习反向过程逐步去噪,从纯噪声中恢复数据;训练目标通常是预测噪声或预测 \(x_0\) 的变分下界。
基本结构:
x_0 ──→ x_1 ──→ x_2 ──→ ... ──→ x_T (forward: 加噪,固定)
↑
│
纯噪声 ~ N(0,I)
│
x_0 ←── x_1 ←── x_2 ←── ... ←── x_T (reverse: 去噪,学习)
前向过程(Fixed):
通过重参数化,可以直接采样任意时刻 \(t\):
其中 \(\alpha_t = 1 - \beta_t\),\(\bar\alpha_t = \prod_{s=1}^t \alpha_s\)。
反向过程(Learned):
模型学习条件分布
训练目标(简化版):
常见做法是训练网络 \(\\epsilon_\theta\) 预测前向过程中加入的噪声:
采样过程:
- 从 \(x_T \sim \mathcal{N}(0,I)\) 开始。
-
对 \(t = T, T-1, \dots, 1\),迭代
\[ x_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}} \epsilon_\theta(x_t, t) \right) + \sigma_t z, \]其中 \(z \sim \mathcal{N}(0,I)\)(当 \(t>1\))。
Latent Diffusion:
- 先在 autoencoder / VAE 压缩后的 latent space 做 diffusion,降低计算量。
- Stable Diffusion、Sora 等现代系统多采用此路线。
与 GAN / VAE 对比:
| 模型 | 生成方式 | 优势 | 劣势 |
|---|---|---|---|
| VAE | 从 prior 采样 → decoder | 可解释、可插值 | 样本质量中等 |
| GAN | 一次性从噪声生成 | 样本锐利 | 训练不稳定、mode collapse |
| Diffusion | 多步去噪 | 质量高、训练稳定 | 采样步数多 |
2 高频知识点串联¶
2.1 识别:从 Harris / SIFT 到 ResNet¶
演进链:
- Harris:用结构张量找角点,尺度敏感。
- SIFT:在尺度空间用 DoG 找关键点,分配主方向,构造 128 维描述子,具备 尺度、旋转、光照不变性。
- BoW:把 SIFT 描述子量化成视觉词直方图,丢失空间信息。
- SPM:在金字塔网格中统计 BoW,加入空间布局。
- 深度识别:AlexNet → VGG → ResNet,端到端学习特征、量化和分类。
经典流水线:SIFT 提特征 → K-means 学视觉词典 → SPM 编码 → SVM 分类。
2.2 检测:从 HOG + SVM 到 Faster R-CNN / YOLO¶
演进链:
- Viola-Jones:矩形特征 + 积分图 + AdaBoost + Cascade,实现实时人脸检测。
- HOG + SVM:滑窗 + 梯度方向直方图 + 线性 SVM + hard negative mining + NMS。
- DPM:root + parts + deformation penalty,用 Latent SVM 训练。
- R-CNN:Selective Search + 每个 proposal 单独 CNN + SVM + bbox 回归(慢、非端到端)。
- Fast R-CNN:整图一次卷积 + RoI Pooling + 多任务损失。
- Faster R-CNN:RPN 内生 proposals + 共享 backbone + anchor 机制。
- YOLO / SSD:单阶段直接回归,更快但早期精度较低。
- FPN + Focal Loss(RetinaNet):多尺度特征 + 解决类别不平衡,让单阶段达到两阶段精度。
2.3 像素级理解:从聚类到分割网络¶
演进链:
- K-means / Mean Shift:无监督聚类分割,前者需预设 \(K\),后者由 bandwidth 控制粒度。
- Ncut:把分割看作图划分,解广义特征值问题 \((D-W)y = \lambda Dy\)。
- GraphCut / GrabCut:交互式二值分割,能量 = 数据项 + 平滑项,用 max-flow 求解。
- Matting:\(I = \alpha F + (1-\alpha)B\),从二值 mask 升级到连续透明度,Poisson Matting 在梯度域求解。
- FCN / SegNet / DeepLab / Mask R-CNN:深度网络端到端像素级预测,分别解决上采样、编码器-解码器、大感受野、实例分割等问题。
2.4 3D Vision:从相机模型到重建¶
主线:
- 相机模型:\(x \sim PX\),\(P = K[R \mid t]\)。
- Epipolar Geometry:对应点落在极线上,匹配从一维搜索。
- Essential / Fundamental Matrix:\(x'^\top E x = 0\)(已标定),\(x'^\top F x = 0\)(未标定),\(E = K'^\top F K\)。
- 两视图重建:\(F \to E \to (R,t) \to \text{triangulation}\),用 cheirality(正深度)筛选四组候选位姿。
- Stereo:rectification 把极线拉水平,\(Z = bf/d\),再用 block matching 或全局能量最小化求 disparity map。
2.5 序列与生成模型¶
演进链:
- RNN:用隐状态压缩历史,BPTT 训练,长程依赖难。
- LSTM:cell state + 门控机制,更稳定保留长期记忆。
- Seq2Seq + Attention:动态选择相关上下文,不再压缩成固定向量。
- Transformer:Self-Attention \(= \mathrm{softmax}(QK^\top/\sqrt{d_k})V\),并行性强、全局依赖短。
- ViT / DETR / Swin:把 Transformer 扩展到图像分类、检测和通用视觉 backbone。
- VAE / GAN / Diffusion:三种主流生成范式,分别走概率编码、对抗博弈、逐步去噪路线。
3 3D Vision 计算题专题¶
3.1 八点法计算题:给定对应点求 Fundamental Matrix¶
题目:给定 8 对对应点(像素坐标):
| 点 | 左图 \((u, v)\) | 右图 \((u', v')\) |
|---|---|---|
| 1 | \((100, 200)\) | \((120, 205)\) |
| 2 | \((300, 150)\) | \((310, 155)\) |
| 3 | \((150, 400)\) | \((165, 405)\) |
| 4 | \((500, 300)\) | \((515, 310)\) |
| 5 | \((200, 100)\) | \((215, 105)\) |
| 6 | \((400, 450)\) | \((420, 460)\) |
| 7 | \((600, 200)\) | \((620, 210)\) |
| 8 | \((50, 350)\) | \((60, 355)\) |
不考虑 \(F\) 的尺度与矩阵秩问题,简述求解过程。
解法:
Step 1:写出每对点的线性约束
对每一对 \((u_i, v_i)\) 和 \((u_i', v_i')\),展开 \(x'^\top F x = 0\):
Step 2:构造 \(A\) 矩阵
把 8 个方程 stacking 成 \(A \in \mathbb{R}^{8 \times 9}\):
代入第一对点 \((100, 200), (120, 205)\):
其余各行同理。
Step 3:SVD 求解齐次线性方程组
对 \(A\) 做 SVD:
取最小奇异值对应的右奇异向量 \(f = v_9\),重排成 \(3 \times 3\) 矩阵:
Step 4(若题目要求真实 \(F\)):强制秩 2
对 \(\hat F\) 再做 SVD:\(\hat F = U \Sigma V^\top\),令
此时 \(F\) 满足真实 Fundamental Matrix 的秩 2 约束。
Step 5:验证
任取一对点,例如第 1 对,计算 \(x'^\top F x\),结果应接近 0(在数值误差范围内)。
3.2 八点法计算题解法总结¶
核心步骤口诀:
一对一点一条线,九点未知八对解; SVD 取最小奇异,再压秩二得真 \(F\)。
详细 checklist:
- 坐标必须用齐次坐标:\(x = [u, v, 1]^\top\),\(x' = [u', v', 1]^\top\)。
-
每对点展开成一行 9 维向量:
\[ [u'u,\ u'v,\ u',\ v'u,\ v'v,\ v',\ u,\ v,\ 1]. \] -
\(A\) 矩阵维度:\(N \times 9\),\(N\) 为点数;八点法 \(N=8\),实际常用 \(N \ge 8\) 并用 RANSAC。
- 求解 \(Af = 0\):
- SVD 取最小奇异值对应的右奇异向量。
- 等价于最小化 \(\|Af\|^2\),约束 \(\|f\|=1\)。
- 强制秩 2:真实 \(F\) 秩为 2,所以再做一次 SVD 并把最小奇异值置 0。
- 尺度不定:\(F\) 只能确定到尺度,乘以非零常数仍是合法解。
易错点:
- 不要把 \(x\) 和 \(x'\) 的位置写反。公式是 \(x'^\top F x = 0\),所以 \(A\) 的每一行是先 \(x'\) 坐标再 \(x\) 坐标。
- 如果题目说“不考虑 \(F\) 的尺度和矩阵秩的问题”,则做到 Step 3 即可;若要求真实 \(F\),必须做秩 2 投影。
- 如果相机已标定,则应先归一化坐标 \(x_K = K^{-1} x\),再求 Essential Matrix \(E\)。
3.3 Essential Matrix 与相机位姿分解(计算题补充)¶
若已知 \(E\) 或 \(F\) 且内参已知,如何求相对位姿 \((R, t)\)?
-
由 \(F\) 求 \(E\):
\[ E = K'^\top F K. \] -
对 \(E\) 做 SVD:
\[ E = U \Sigma V^\top. \] -
构造两个候选旋转:
\[ R_1 = U \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} V^\top, \qquad R_2 = U \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} V^\top. \] -
平移方向为 \(t = \pm u_3\)(\(U\) 的第三列)。
-
共得到 4 组 \((R, t)\) 候选解,用 cheirality constraint(三角化后点在两相机前方)筛选唯一正确解。
三角化公式:
已知 \(P = K[I \mid 0]\),\(P' = K'[R \mid t]\),对对应点 \(x, x'\),解
再用 SVD 求 \(X\)。
3.4 Stereo 深度计算题¶
题目:平行双目系统,基线 \(b = 10\,\text{cm}\),焦距 \(f = 500\,\text{pixels}\),某点在左右图中的水平坐标分别为 \(u_L = 320\),\(u_R = 290\),求该点深度 \(Z\)。
解法:
视差
深度
注意单位统一:若 \(b\) 用 cm,\(f\) 用 pixels,则 \(Z\) 的单位为 cm(因为 \(d\) 无量纲比例,其实更准确是 \(b\) 和 \(Z\) 同单位,\(f\) 和 \(d\) 同单位)。
4 高频公式速查¶
4.1 识别与特征¶
Harris 响应:
SIFT 描述子维度:
BoW 直方图:
SPM 维度:
4.2 检测¶
IoU:
Faster R-CNN bbox 回归:
Focal Loss:
4.3 像素级理解¶
GraphCut 能量:
Ncut:
广义特征值问题:
Matting 方程:
语义分割 IoU:
4.4 生成模型¶
VAE 损失:
重参数化技巧:
GAN 目标函数:
Diffusion 前向采样:
4.5 3D Vision¶
相机矩阵:
极线约束:
Essential Matrix:
Fundamental 与 Essential 关系:
Stereo 深度:
八点法 \(A\) 矩阵每行:
5 易混点总结¶
| 对比项 | A | B | 关键区别 |
|---|---|---|---|
| Harris | SIFT | Harris 尺度敏感,SIFT 尺度不变 | 是否在尺度空间检测 |
| BoW | SPM | BoW 无空间信息,SPM 有空间金字塔 | 是否保留空间布局 |
| Homography | Essential/Fundamental | H 点到点,E/F 点到线 | 应用场景不同 |
| Essential | Fundamental | E 用于归一化相机坐标,F 用于像素坐标 | 是否已知内参 |
| GraphCut | Matting | GraphCut 二值标签,Matting 连续 \(\alpha\) | 输出类型 |
| R-CNN | Fast R-CNN | Fast 共享卷积 + RoI Pooling | 是否每个 proposal 单独 CNN |
| Fast R-CNN | Faster R-CNN | Faster 用 RPN 替代 Selective Search | proposal 来源 |
| YOLO | Faster R-CNN | YOLO 单阶段回归,Faster 两阶段 | 速度与精度权衡 |
| RoIPool | RoIAlign | RoIPool 有量化误差,RoIAlign 双线性插值 | 空间对齐精度 |
| VAE | GAN | VAE 概率重构 + KL,GAN 对抗博弈 | 训练目标 |
| GAN | Diffusion | GAN 一次生成,Diffusion 多步去噪 | 生成过程 |
| RNN | Transformer | RNN 顺序递推,Transformer 自注意力并行 | 依赖路径与并行性 |
| FCN | Mask R-CNN | FCN 语义分割,Mask R-CNN 实例分割 | 是否区分同类不同实例 |
6 最后冲刺:建议背诵顺序¶
- 先背 12 道题的框架:每道题用“是什么 → 核心公式 / 流程 → 优缺点 / 关联”三段式回答。
- 再背高频公式:Harris、SPM 维度、IoU、GraphCut 能量、GAN 目标、八点法 \(A\) 矩阵、\(Z=bf/d\)、Diffusion 前向采样。
- 3D Vision 计算题:默写八点法完整流程,并自己构造一组 8 对点练一次矩阵构造。
- 易混点过一遍:特别区分 E/F、RoIPool/Align、GraphCut/Matting、one-stage/two-stage。
祝考试顺利!