模式识别与计算机视觉 课堂笔记 / 期末冲刺
期末冲刺
二、数学基础 & 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\)
- 在进行PCA之前,通常需要对数据进行标准化处理,即减去每列的均值并除以其标准差。
- 执行SVD:对数据矩阵 X 进行奇异值分解,\(X = U \Sigma V^T\)
- 计算主成分:在SVD中,V 的列(\(V^T\) 的行)实际上是对应于数据协方差矩阵 \(X^TX\) 的特征向量。因此,这些列可以被看作是我们的主成分方向。对于降维目的,我们可以选择前 k 个最大的奇异值对应的 V 矩阵的列作为主要成分。
- 降维:为了将数据投影到新的低维空间,我们可以简单地乘以$ 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 是可分离的
为什么卷积核奇数边长:
- 中心像素的存在。有助于保持图像处理过程中的空间对称性。
- 方便填充(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
-
计算小区域内的图像梯度
-
从每个图像梯度中减去均值
-
计算协方差矩阵
\(\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}\)
-
计算特征向量和特征值
-
设定一个关于特征值的阈值
实际算法:Harris corners
-
计算图像的x和y方向导数:
$I_x = G_{\sigma}^x * I \( \)I_y = G_{\sigma}^y * I $
-
计算每个像素处导数的乘积:
$I_{x^2} = I_x \cdot I_x \( \)I_{y^2} = I_y \cdot I_y \( \)I_{xy} = I_x \cdot I_y $
-
计算每个像素处导数乘积的和:
$S_{x^2} = G_{\sigma'} * I_{x^2} \( \)S_{y^2} = G_{\sigma'} * I_{y^2} \( \)S_{xy} = G_{\sigma'} * I_{xy} $
-
在每个像素处定义矩阵:
$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} $
-
计算检测器在每个像素处的响应:
$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 。以下是算法的逐步解析:
-
为每个点对应构建约束矩阵
\( \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} \)
-
拼接
-
将 n 个点对应的$ A_i $ 垂直堆叠,形成 \(2n \times 9\) 的矩阵 A :
\( A = \begin{bmatrix} A_1 \\ A_2 \\ \vdots \\ A_n \end{bmatrix} \)矩阵 A 的每一行对应一个点的一个方程
- 对 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\)
- 取最小奇异值对应的右奇异向量 h
- 最小奇异值 $ \sigma_9 \(对应的右奇异向量\) v_9 \(是方程\) Ah = 0 $的最小二乘解(在约束 |h|=1 下)。
- 这是因为 A 的零空间对应最小奇异值的右奇异向量,而 H 的解是 A 的零空间方向。
- 重构 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} \)- 归一化?
-
最小二乘解的意义:
- 当点对应关系存在噪声时, Ah = 0 无精确解,SVD通过最小化 |Ah| 找到最优解。
-
归一化的重要性:
- 实际应用中需先对输入点坐标归一化(平移和缩放至均值为0、方差为1),避免数值不稳定。
-
超定方程与鲁棒性:
- 至少需要4组非共面的点对应($n \geq 4 $)来唯一确定 H 。
- 若存在误匹配,需结合RANSAC等鲁棒方法剔除异常点。
-
与仿射变换的区别:
- 仿射变换假设 h_{31} = h_{32} = 0 ,而单应性允许更复杂的投影形变。
如何解决误匹配?
Random Sample Consensus (RANSAC)
Algorithm:
-
Sample (randomly) the number of points required to fit the model
-
Solve for model parameters using samples
-
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
- Get four point correspondences (randomly)
- Compute H using DLT
- Count inliers
- Keep H if largest number of inliers
- Recompute H using all inliers【这一步不要忘了!】
图像对应流程
- 特征点检测
- Harris
- 特征点描述
- 使用多尺度定向patch描述子(multi-scaled oriented patch descriptor)来描述特征。
- 特征匹配和单应性估计
- 使用 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来源
- 吴建鑫 模式识别课程
- 卡内基梅隆大学 计算机视觉课程 https://www.cs.cmu.edu/~16385
TODO
-
高斯分布极大似然那里 涉及到一些矩阵求导【不记了】
-
维数比较大的时候,如何用SVD进行PCA【√,归一化后对数据矩阵直接SVD,取最大奇异值对应的右奇异向量】
-
贝叶斯估计 正态分布的乘积【不记了】
-
M=KR RQ分解怎么做【不记了】
-
Baum-Welch 算法【不记了】
-
软阈值解
-
作业:12.6
-
稀疏编码如何应用于人脸识别
-
作业:4.9【√】

浙公网安备 33010602011771号