模式识别与计算机视觉 课堂笔记 / 期末冲刺

期末冲刺

二、数学基础 & NN

矩阵求导,pdf求解,多维高斯


最近邻算法

Voronoi Diagram

kNN:应对离群点

(一个测试样本的)计算代价:O(nd) + O(n) + O(k),但k太小,因此可以写为O(nd)

从n个数中选择k个最小的,使用最小堆的方法可以达到O(nlogk)的时间复杂度,比直接排序更高效。

存储代价:O(nd) 这个问题更严重

降低代价的方式:ANN近似最近邻、二值哈希(把\(\mathbb{R}^d\)分为\(2^m\)个区域,每个样本用m个bit表示)

三、评估 & PCA

记住ROC是TPR-FPR曲线,TPR=TP/(TP+FN),FPR=FP/(FP+TN)

理解:从左到右,FPR越来越大(FP↑),预测为True的阈值越来越小,TPR也会越来越大(FN↓,TP↑)

对角线是随机猜测的结果

要和PR曲线做好区分,PR曲线不单调

当阈值下调,跨越一个正例时,P 、R 都会升高,产生一条向右上方的线段;当阈值跨越一个负例时,R 不变,而 P 会减小,产生一条竖直向下的线段。


算法流程(包括重建过程)

PCA的两个角度:最小化拟合误差 / 方差最大化的推导

PCA是高斯分布数据的最优解

维数太大数据太少怎么办?

SVD!

假设我们有一组数据集 X,其中包含 n 个样本,每个样本有 p 维特征(n < p)。这意味着数据矩阵 X 的尺寸是 \(n \times p\)

  1. 在进行PCA之前,通常需要对数据进行标准化处理,即减去每列的均值并除以其标准差。
  2. 执行SVD:对数据矩阵 X 进行奇异值分解,\(X = U \Sigma V^T\)
  3. 计算主成分:在SVD中,V 的列(\(V^T\) 的行)实际上是对应于数据协方差矩阵 \(X^TX\) 的特征向量。因此,这些列可以被看作是我们的主成分方向。对于降维目的,我们可以选择前 k 个最大的奇异值对应的 V 矩阵的列作为主要成分。
  4. 降维:为了将数据投影到新的低维空间,我们可以简单地乘以$ V_k$,其中 \(V_k\) 包含了前 k 个主成分。这样,原始数据 X 就被投影到了一个 \(n \times k\) 的矩阵上,实现了从 p 维到 k 维的降维。

五、归一化 & FLD

  • 为什么分类不能用PCA,要用FLD?(感觉很可能考)

    PCA使数据投影后具有最大方差,但PCA不考虑类别,这些方向不一定能最好地区分不同的类别。FLD是一种监督学习方法,专门设计用于分类问题,能使得投影后的数据在不同类别之间尽可能分离,而在同一类别内部尽可能紧凑。

得到目标函数的过程

最优化过程

求w的捷径

不可逆呢?

多分类呢?

可能会考:证明\(S_T=S_B+S_W\)

扩展:正则化、kernel(非线性)、2D、稀疏、鲁棒、增量、PCA和FLD的合作

六、度量 & 稀疏

范数

\(l_p\)度量

距离度量学习 三元组损失

  • 可能会考:为什么引入马氏距离?

    如果数据服从高斯分布,那么白化变换后的平方欧氏距离和马氏距离是等价的。如果数据不服从高斯分布,就要从训练数据中学习一个好的矩阵。


稀疏机器学习

如果一个向量中许多维是0,我们称它是稀疏的。

0-范数:非0值个数

过完备字典(稀疏编码/压缩感知)

  • 可能会考:请描述稀疏编码如何应用于人脸识别?

其他应用:去噪恢复...

还可以推广到二维,稀疏向量->低秩矩阵

七、概率方法

参数估计

点估计和贝叶斯估计 会推!


非参数估计方法

问题:

  • 没有连续估计
  • 维数灾难
  • 需要确定容器宽度 / 数量(超参数)
  • 其他问题:非对称、有限的支撑(x超过直方图范围就会估计为0)、均匀的辐射

解决维数灾难:核密度估计 Kernel density estimation


决策 有可能出证明题?见作业


  • 可能会考:如何区分生成式模型和判别式模型?

    对p(X, Y)建模的是生成式,对p(Y|X)建模的是判别式

八、HMM

建模 符号记住!

假设1:马尔可夫性,即系统的下一个状态仅与当前状态有关,而与之前的状态无关。

假设2:观测独立性,即任意时刻的观测值仅依赖于该时刻的系统状态

问题1:Evaluation 估值【已知λ,求给定O序列的概率】

前向和后向动态规划的算法流程要会。还有时间复杂度。

问题2:Decoding 解码【已知λ、O序列,求最可能的Q序列】

维特比解码算法要会

我自己的天才总结:对该步每个可能的隐态,求上一个最可能的隐态

问题3:Learning 学习【大量O作为训练集,求最可能的λ】

Baum-Welch:一个MLE算法,EM的特例

九/十、图像基本操作

  • Point processing 单个像素点到单个像素点的映射
  • Linear shift-invariant image filtering 区域映射 最简单的box filter
  • Convolution 卷积
    • Separable filters 这个还挺有意思
    • The Gaussian filter 是可分离的

为什么卷积核奇数边长:

  1. 中心像素的存在。有助于保持图像处理过程中的空间对称性。
  2. 方便填充(Padding)。当卷积核大小是奇数时,可以在图像的每一边均匀地添加相等数量的填充像素。
  • Image gradients 梯度检测边缘

    • The Sobel filter 妙啊 要能分清horizontal的和vertical的
  • Image down-sampling 下采样

  • Aliasing 混叠现象

    • 如何处理该现象?Anti-aliasing:上采样、平滑

      Nyquist limit?为了避免混叠,采样速率必须不低于信号的奈奎斯特速率(即信号最大频率的两倍)

      The Nyquist-Shannon sampling theorem

  • Gaussian image pyramid

    向下采样过程是: 1) 高斯平滑处理,也就是使用卷积核对图像进行卷积操作 2) 对图像采样,去除图像中的偶数行和偶数列

    向上采样过程是: 1) 将图像在每个方向扩大为原来的两倍,新增的行和列以0填充 2) 使用先前同样的核(不要忘了乘以4)与放大后的图像卷积

  • Laplacian image pyramid

    减去自己高斯下采样后再上采样后的图像,提取到高频残差

  • 可能会考的问题:讲讲图像金字塔是做什么用的?

    图像压缩、多尺度检测、去噪、multi-scale texture mapping、image blending、multi-scaleregistration

  • FS 傅里叶级数 【连续周期信号->离散信号】

  • FT 傅里叶变换 【连续非周期信号->连续信号】

回忆:

DTFT 普通离散信号的傅里叶变换 【离散非周期信号->连续信号】
计算、性质和连续信号的傅里叶变换基本一致(对t积分变对n求和)

DFS 离散周期信号的傅里叶级数 【离散周期信号->离散信号】

DFT 普通离散信号的傅里叶变换 【离散信号->离散信号】最重要!!!

时域卷积<=>频域乘积 引申出各种filters

十一、Harris角点检测

感觉是最好考的

corner-detecting的用处

  • 图像对齐 Image Alignment (homography, fundamental matrix)
  • 三维重建
  • ...

一些应用例子:

  • Planar object instance recognition 平面实例分割

  • 3D object recognition

  • ...

思路:滑动窗口

简单思路:PCA+image gradient

  1. 计算小区域内的图像梯度

  2. 从每个图像梯度中减去均值

  3. 计算协方差矩阵

    \(\begin{bmatrix} \sum_{p \in P} I_x I_x & \sum_{p \in P} I_x I_y \\ \sum_{p \in P} I_y I_x & \sum_{p \in P} I_y I_y \end{bmatrix}\)

  4. 计算特征向量和特征值

  5. 设定一个关于特征值的阈值

实际算法:Harris corners

  1. 计算图像的x和y方向导数:

    $I_x = G_{\sigma}^x * I \( \)I_y = G_{\sigma}^y * I $

  2. 计算每个像素处导数的乘积:

    $I_{x^2} = I_x \cdot I_x \( \)I_{y^2} = I_y \cdot I_y \( \)I_{xy} = I_x \cdot I_y $

  3. 计算每个像素处导数乘积的和:

    $S_{x^2} = G_{\sigma'} * I_{x^2} \( \)S_{y^2} = G_{\sigma'} * I_{y^2} \( \)S_{xy} = G_{\sigma'} * I_{xy} $

  4. 在每个像素处定义矩阵:

    $M(x,y) = \begin{bmatrix} S_{x^2}(x,y) & S_{xy}(x,y) \ S_{xy}(x,y) & S_{y^2}(x,y) \end{bmatrix} $

  5. 计算检测器在每个像素处的响应:

    $R = \text{det } M - k(\text{trace } M)^2 $

    k 通常取值在0.04到0.06之间。

“结构张量 M 是从误差函数的一阶泰勒展开(近似)得到的”

Harris 角点检测背后的思想是:

如果你在图像上选一个小窗口,然后将它往某个方向平移,如果这个窗口内的图像灰度变化非常大,那么这个点很可能是一个角点。

这种“变化”可以用如下误差函数来表示:

\[E(u, v) = \sum_{x, y \in W} w(x, y) \left[ I(x+u, y+v) - I(x, y) \right]^2 \]

其中w(x, y) 是窗口权重(比如高斯权重)

将 I(x+u, y+v) 在 (x, y) 处做一阶泰勒展开:

\[I(x+u, y+v) \approx I(x, y) + I_x(x, y) u + I_y(x, y) v \]

代入 E(u, v) 得:

\[E(u, v) \approx \sum_{x, y \in W} w(x, y) \left[ I_x(x, y) u + I_y(x, y) v \right]^2 \]

用高斯核平滑的方式实现时就成了你在 Harris 算法中看到的那样:

\[M(x, y) = \begin{bmatrix} S_{x^2}(x,y) & S_{xy}(x,y)\\ S_{xy}(x,y) & S_{y^2}(x,y) \end{bmatrix} \]

scale的选取问题

说明这个问题:使用different Laplacian filters,寻找peak

回顾拉普拉斯算子:

\(\nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2}\)

让人联想到那个肘部法,非常适合实验(

实际实现:

For each level of the Gaussian pyramid
	compute feature response(e.g. Harris, Laplacian)
For each level of the Gaussian pyramid
	if local maximum and cross-scale
		save scale and location of feature(x, y, s)

十二、transformations

2D transformation

核心内容见CVAA

记一下不同变换的那个表格


已知变换前后状态,如何求解该transformation?

(重点讨论仿射变换)

转化为线性回归问题的过程

十三、单应性变换

panorama 全景照片

如何获得?

  • 广角镜头
  • 找到seam直接stitch。效果不好。

进而引入image homographies

如何确定单应性变换矩阵?

The direct linear transform (DLT)

感觉会考啊

该算法通过一组点对应关系 ${x_i, x'_i} $,找到满足 \(x' = Hx\) 的 $3 \times 3 $ 矩阵 H 。以下是算法的逐步解析:

  1. 为每个点对应构建约束矩阵

    \( \begin{bmatrix} x'_i \\ y'_i \\ 1 \end{bmatrix} \approx H \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix} \)

    展开后得到两个线性方程

    \( \begin{cases} x'_i (h_{31}x_i + h_{32}y_i + h_{33}) = h_{11}x_i + h_{12}y_i + h_{13}, \\ y'_i (h_{31}x_i + h_{32}y_i + h_{33}) = h_{21}x_i + h_{22}y_i + h_{23}. \end{cases} \)

    将方程重写为关于 H 的线性方程组

    \( A_i = \begin{bmatrix} -x_i & -y_i & -1 & 0 & 0 & 0 & x'_i x_i & x'_i y_i & x'_i \\ 0 & 0 & 0 & -x_i & -y_i & -1 & y'_i x_i & y'_i y_i & y'_i \end{bmatrix} \)

  2. 拼接

  • 将 n 个点对应的$ A_i $ 垂直堆叠,形成 \(2n \times 9\) 的矩阵 A :
    \( A = \begin{bmatrix} A_1 \\ A_2 \\ \vdots \\ A_n \end{bmatrix} \)

    矩阵 A 的每一行对应一个点的一个方程

  1. 对 A 进行奇异值分解(SVD)
  • 计算 A 的SVD:
    \( A = U \Sigma V^T \)
    • U : \(2n \times 2n\) 的正交矩阵。
    • \(\Sigma\)\(2n \times 9\) 的对角矩阵,对角元为奇异值 $ \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_9 \geq 0$ 。
    • V : \(9 \times 9\) 的正交矩阵,列向量为右奇异向量 \(v_1, v_2, \ldots, v_9\)
  1. 取最小奇异值对应的右奇异向量 h
  • 最小奇异值 $ \sigma_9 \(对应的右奇异向量\) v_9 \(是方程\) Ah = 0 $的最小二乘解(在约束 |h|=1 下)。
  • 这是因为 A 的零空间对应最小奇异值的右奇异向量,而 H 的解是 A 的零空间方向。
  1. 重构 H
  • 将向量 \(h = v_9\) 重塑为 \(3 \times 3\) 矩阵 H :
    \( H = \begin{bmatrix} h_1 & h_2 & h_3 \\ h_4 & h_5 & h_6 \\ h_7 & h_8 & h_9 \end{bmatrix} \)
    • 归一化?
  1. 最小二乘解的意义:

    • 当点对应关系存在噪声时, Ah = 0 无精确解,SVD通过最小化 |Ah| 找到最优解。
  2. 归一化的重要性:

    • 实际应用中需先对输入点坐标归一化(平移和缩放至均值为0、方差为1),避免数值不稳定。
  3. 超定方程与鲁棒性:

    • 至少需要4组非共面的点对应($n \geq 4 $)来唯一确定 H 。
    • 若存在误匹配,需结合RANSAC等鲁棒方法剔除异常点。
  4. 与仿射变换的区别:

    • 仿射变换假设 h_{31} = h_{32} = 0 ,而单应性允许更复杂的投影形变。

如何解决误匹配?

Random Sample Consensus (RANSAC)

Algorithm:

  1. Sample (randomly) the number of points required to fit the model

  2. Solve for model parameters using samples

  3. Score by the fraction of inliers within a preset threshold of the model

Repeat 1-3 until the best model is found with high confidence

参数:

  • 样本数量 N

    选择 N,使得以概率 p 至少有一个随机样本不含异常值

    目标:选择样本数量N,使得以概率p至少有一个随机样本不含异常值。

    \[N = \frac{\log(1 - p)}{\log\left(1 - (1 - e)^s\right)} \]

    • p :希望至少有一个无异常值样本的概率,例如0.99。
    • e :异常值比例,即数据集中异常值占总数据的比例。
    • s :每次采样的点数,即拟合模型所需的最小点数。对此处单应性变换求解为4。

    通过这个公式,可以根据给定的 p 、 e 和 s ,计算出需要的样本数量 N 。

  • 采样点数 s

    拟合模型所需的最小点数

  • 距离阈值 δ

    使得一个带有噪声的好点很可能(例如0.95)在阈值范围内

对于单应性变换的求解,RANSAC算法流程为:

  • RANSAC loop
    1. Get four point correspondences (randomly)
    2. Compute H using DLT
    3. Count inliers
    4. Keep H if largest number of inliers
  • Recompute H using all inliers【这一步不要忘了!】

图像对应流程

  1. 特征点检测
    • Harris
  2. 特征点描述
    • 使用多尺度定向patch描述子(multi-scaled oriented patch descriptor)来描述特征。
  3. 特征匹配和单应性估计
    • 使用 RANSAC 进行特征匹配和单应性估计。

十四/五、相机模型

相机模型

世界坐标系、相机坐标系、图像坐标系

内参、外参


Perspective distortion 透视造成的,如近大远小、希区柯克变焦

Weak perspective camera:远处物体正交投影,\(Z\to Z_0\) 整体来看是仿射变换

\(Z_0=1\)就成了Orthographic camera,正交相机只需要一个透镜+一个小孔就可以实现


相机标定 camera calibration

求解P矩阵

标定方法

  • 场景中放一个参考物体(通常是棋盘格、圆点阵列),直接拍它

  • 几何相机标定

    优点:

    • 非常容易公式化。
    • 有解析解。

    缺点:

    • 不建模径向畸变 radial distortion
    • 很难施加约束(例如,已知焦距f)
    • 不最小化正确的误差函数。

    radial distortion model

  • Multi-plane calibration

    优点:只需要一个平面,不需要知道位置/方向。网上有很多优秀的代码可用。

    缺点:需要解决非线性优化问题。

作业

第一次 2.3

感觉还挺有总结价值

第一次 3.2

FLD相关数学问题

最后一问挺有实用价值的

第二次 9.1

这是个错题,参考模式识别P168

第二次 11.2

感觉软阈值解还挺容易出题的

第二次 12.2

右随机矩阵:每个元素非负,每一行和为1

基本信息

PRCV 国内会议名字 & 本课程简称

助教:郭俊文 博士生、周智勤 硕士生(单老师的)

概念 步骤 方法【能应用、使用条件、原理和推导】

参考书目

  • DHS Pattern Classificator
  • PRML
  • 《模式识别》吴建鑫 PR部分主要教材

10%平时+40%作业+50%考试

一些例子

  • internVL
  • Tesla:AP(Autopilot), FSD(Full Self-Driving Compute)

From data to pattern

PPT来源

TODO

  • 高斯分布极大似然那里 涉及到一些矩阵求导【不记了】

  • 维数比较大的时候,如何用SVD进行PCA【√,归一化后对数据矩阵直接SVD,取最大奇异值对应的右奇异向量】

  • 贝叶斯估计 正态分布的乘积【不记了】

  • M=KR RQ分解怎么做【不记了】

  • Baum-Welch 算法【不记了】

  • 软阈值解

  • 作业:12.6

  • 稀疏编码如何应用于人脸识别

  • 作业:4.9【√】

posted @ 2025-07-01 17:43  藤君  阅读(38)  评论(0)    收藏  举报