2023-11-06 20:02:29
之前导论课程上学的基本都是思想和原理,到这里就开始接触真正数学和工程的方法了。
这门课的研究思路很清晰,就是围绕标题,自底向上,借助数学工具,一步一步实现各种复杂的功能以及算法,最终一步步接近让计算机拥有“视觉”的目标。
首先是数据的表示,概念的抽象,如何用离散的数据去近似抽象的视觉这个概念。这个过程通过直观理解和数学工具,以及建模方法,为计算机视觉提供了一种可行的数学上的表示和运算方法:像素,以及基于像素的一系列运算,比如滤波,仿射变换,更高自由度的变换,基于像素颜色值的变换等等,以及由这一系列变换得到的图像特征。
其次,是研究在图像的像素模型下,利用数学方法去研究分析以及利用图像特征的方法。这其中,就有诸如角点检测,边缘检测,全景图拼接以及处理等命题。
通俗来说就是让两个网络作为对抗组,比如说生成图片的NN和鉴别图片的NN,两方轮流作为输入输出(也就是交替训练),在循环中不断提升两个网络的效果,最终达到生成内容以假乱真的效果。NN炼丹的关键是其中的loss函数设计,不过他们的做法是直接用另一个NN作为这个NN的loss函数来回馈训练效果。
目前比较突出的成果一个就是近几年的Stable Diffusion,算是这里边比较突出的一个了。这东西在图像的有损压缩里边用的也多,至于有损压缩的应用嘛,一般在一些需要使用算力去换带宽的场合很适用,比如卫星数据传输。其他应用就是图像的填充和补全,比如合理推测图像的缺失部分内容。另外就是,网络的输入不一定是噪声,输出也不一定是真假。改变其输入和输出的类型,可以赋予NN以不少是实用场景。
GAN的优点是效果好,比以前用的高斯模糊的效果都很好。但是问题也很突出,就是GAN很难训练。GAN的两方是生成器和判别器,训练的结果很大程度上与两方的能力是否足够接近有很大关系。
另外就是GAN的思想重点在对抗,并没有要求其他的条件。所以比如说可以有多个判别方,有多个生成方等。
注意力机制一开始是应用于机器翻译领域,通过一个合适的重点词语权重标注机制,让算法更有重点地提取概要。如今的GPT也很大程度上受到注意力机制的启发才产生了不断预测下一个词向量概率的朴素思想。
注意力机制可以理解成给分词加上权重。将一个句子进行分词作为一个向量,将这个词语向量通过Softmax这样的激活函数进行处理之后,再借助矩阵进行变换,从而得到处理后的,带有权重的词向量。处理后的词向量,权重总和为1。加权后的句子,再进行翻译,效果就会好很多了。
至于将Attention思想迁移到CV领域进行应用的方法,关键是将图像”语义化“。一个常用的方法是将图像分割,分割成小块,对每个小块采用相同的思想。这就是VIT(Vision Transformer)的思想。
Softmax函数是一种常用的激活函数,主要用于将多分类问题中的输出值转换为概率分布。在神经网络中,输出层通常使用softmax函数,将输出值转换为每个类别概率。
Softmax函数的定义如下: \[ Softmax(x) = e^(x_i) / (e^(x_1) + e^(x_2) + ... + e^(x_n)) \] 其中,x是一个K维向量,Softmax函数的输出也是一个K维向量,并且每个元素的范围都在0到1之间,并且所有元素的和为1。
在多分类问题中,假设输出层有K个神经元,每个神经元代表一个类别。Softmax函数的作用是将输出层的输出转换为每个类别对应的概率。例如,如果输出层输出为[1.2, 2.3, 3.1],则对应的概率为[0.21, 0.34, 0.45]。
Softmax函数可以解决输出值非常大的问题,因为它可以防止输出值过大而导致的梯度消失或梯度爆炸。此外,Softmax函数还可以进行归一化,使得概率和为1,使得概率分布更加合理。
sudo 老师给我分
有个压缩包,里边画红钩的都是重点
占比大概NN和传统方法4-6开
找到一个学长的复习笔记如下
什么是滤波
形成一个新的图像,其像素是原始像素的组合
什么时候利用滤波
滤波的种类:
线性滤波:用相邻的线性组合 (加权和)替换每个像素
卷积:(权重核反转(水平和垂直)) \[ G [ i , j ] = \sum _ { u = - k } ^ { k } \sum _ { v = - k } ^ { k } H [ u , v ] F [ i - u , j - v ] \] 记为 \[ G=H*F \] 相关: \[ G [ i , j ] = \sum _ { u = - k } ^ { k } \sum _ { v = - k } ^ { k } H [ u , v ] F [ i + u , j + v ] \] 记为: \[ G = H \otimes F \]
高斯滤波
==从图像中删除 「高频」分量 (低通滤波器)==
==高斯核函数==: \[ G _ { \sigma } = \frac { 1 } { 2 \pi \sigma ^ { 2 } } e ^ { - \frac { \left( x ^ { 2 } + y ^ { 2 } \right) } { 2 \sigma ^ { 2 } } } \]
滤波的应用
锐化滤波器: \[ F + \alpha (F-F*H) \]
阈值滤波器 \[ g ( m , n ) = \left\{ \begin{array} { c c } { 255 , } & { f ( m , n ) > A } \\ { 0 } & { \text { otherwise } } \end{array} \right. \] ==阈值滤波器不是线性滤波==
相关和卷积的定义和关系
高斯核
什么是线性滤波器
去燥使用什么滤波
怎样通过导数来反映边缘
如何计算数字图像的导数?
重建连续图像,然后计算导数
采用离散导数(有限差分): ==图像的梯度相当于两个相邻像素之间的差值== \[ \frac { \partial f } { \partial x } [ x , y ] \approx F [ x + 1 , y ] - F [ x , y ] \] 可以使用线性滤波器实现
==梯度的方向 垂直于边缘的方向==,梯度的方向是 图像函数 f(x,y) 变化最快的方向,当图像中存在边缘时,一定有较大的梯度
图像梯度是图像函数在 x ,y 两个方向的导数,
幅值: \[ \| \nabla f \| = \sqrt { \left( \frac { \partial f } { \partial x } \right) ^ { 2 } + \left( \frac { \partial f } { \partial y } \right) ^ { 2 } } \] 方向: \[ \theta = \tan ^ { - 1 } \left( \frac { \partial f } { \partial y } / \frac { \partial f } { \partial x } \right) \] ==要计算图像梯度,首先要图像去噪,使用高斯核在图像上卷积,平滑图像==
可以将两次滤波 (高斯滤波、差分滤波)合成一步实现
Sobel 算子
检查像素是否为沿梯度方向的局部最大值 (需要进行像素差值?)
==Canny 边缘检测器==
Canny 边缘检测器的参数:
采样率
==奈奎斯特采样率: 采样率 >= 2*图像中的最大频率==
若原始图像的频率过高,先对图像滤波,然后子采样,构建高斯金字塔
Harris 角点检测:将窗口平移,比较平移前后 w 内每个像素的差异平方和(SSD) \[ E ( u , v ) = \sum _ { ( x , y ) \in W } [ I ( x + u , y + v ) - I ( x , y ) ] ^ { 2 } \]
\[ \begin{aligned} E ( u , v ) = & \sum _ { ( x , y ) \in W } [ I ( x + u , y + v ) - I ( x , y ) ] ^ { 2 } \\ \approx & \sum _ { ( x , y ) \in W } \left[ I ( x , y ) + I _ { x } u + I _ { y } v - I ( x , y ) \right] ^ { 2 } \\ \approx & \sum _ { ( x , y ) \in W } \left[ I _ { x } u + I _ { y } v \right] ^ { 2 }\\ \approx Au^2+2Buv +Cv^2\\ \end{aligned} \]
\[ A = \sum _ { ( x , y ) \in W } I _ { x } ^ { 2 } \quad B = \sum _ { ( x , y ) \in W } I _ { x } I _ { y } \quad C = \sum _ { ( x , y ) \in W } I _ { y } ^ { 2 } \]
算法实现:
计算图像在 X, Y 两个方向的梯度
计算两个方向上梯度的乘积
使用高斯函数对 \(I_x^2,I_y^2,I_xI_y\) 进行高斯加权,生成矩阵的元素 A,B,C
计算每个像素的 Harris 响应值 R, 并对小于某个阈值的 R 置 0 \[ R = \left\{ R : \operatorname { det } M - \alpha ( \operatorname { trace } M ) ^ { 2 } < t \right\} \]
在邻域内进行非最大抑制,局部最大值即为图像的角点
我们希望角点的位置对光度变换具有不变性 (图像变换之后,角点位置不变),对几何变换具有协变性 (相应位置检测到同一特征)
不变性:
自动尺度选择:
斑点检测:
斑点是指二维图像中和周围颜色有颜色差异和灰度差异的区域,因为斑点代表的是一个区域,所以其相对于单纯的角点,具有更好的稳定性和更好的抗干扰能力.
核函数:
高斯拉普拉斯: \[ \nabla ^ { 2 } g = \frac { \partial ^ { 2 } g } { \partial x ^ { 2 } } + \frac { \partial ^ { 2 } g } { \partial y ^ { 2 } } \]
高斯差分函数 \[ D o G = G ( x , y , k \sigma ) - G ( x , y , \sigma ) \]
当 \[\sigma = r/\sqrt{2}\] 时,响应最大,图像黑白反向时,响应最小,因此将高斯拉普拉斯算子响应达到峰值的 \(\sigma\) 值,称为特征尺度
怎么实现特征的不变
Harris 检测的步骤
MOPS:
SIFT:尺度不变特征转换
特征距离
更好的方法:距离比
\(f_2\) 是 \(f_1\) 在 \(I_2\) 中最好的 SSD 匹配,\(f_2^\prime\) 次之 \[ 距离比 = \frac{||f_1-f_2||}{||f_1-f_2^\prime||} \]
测量特征匹配的性能
什么是图像卷绕:更改图像的定义域
常见的变换
线性变换的性质
原点到原点
直线到直线
平行线保持平行
比率被保持
线性变换的组合是线性变换
平移不是 2D 坐标上的线性变换,我们需要 添加一个坐标 -> 齐次坐标
任何最后一行 为 [0,0,1] 的 3·3 矩阵表示的转换称为仿射变换,仿射变换是线性变换和平移的组合
变换完成后,平面位置不变
基本的仿射变换:
平移、缩放、2D 平面旋转、剪切
仿射变换是线性变换 + 平移
性质
最后一元素固定为1 ,共有8个参数, 是成像平面的变换,仿射变换是特例
卷绕有两种:
变换后的像素位置如果不是整数: 将像素值分配给四个最近邻,记录每个点的权重并在最后归一化
效果:混叠与模糊
反向卷绕
先获取每个像素在原图像中对应的位置处的像素值 (逆变换)
如果像素位置不是整数,利用原来相邻像素值插值
变换有哪几种
卷绕有两种
卷绕之后产生了非整数值怎么办
常见的变换
配准算法的流程,怎么实现
优化方式
最小二乘法
给定图像 A 和 B
定义残差: \[ \begin{array} { l } { r _ { \mathbf { x } _ { i } } \left( \mathbf { x } _ { t } \right) = \left( \mathbf { x } _ { i } + \mathbf { x } _ { t } \right) - \mathbf { x } _ { i } ^ { \prime } } \\ { r _ { \mathbf { y } _ { i } } \left( \mathbf { y } _ { t } \right) = \left( \mathbf { y } _ { i } + \mathbf { y } _ { t } \right) - \mathbf { y } _ { i } ^ { \prime } } \end{array} \] 将 n 个点形成的 2n 个方程写成矩阵方程: \[ \left[ \begin{array} { l l } { 1 } & { 0 } \\ { 0 } & { 1 } \\ { 1 } & { 0 } \\ { 0 } & { 1 } \\ { 0 } & { 1 } \\ { \vdots } \\ { 1 } & { 0 } \\ { 0 } & { 1 } \end{array} \right] \left[ \begin{array} { l } { x _ { t } } \\ { y _ { t } } \end{array} \right] = \left[ \begin{array} { c } { x _ { 1 } ^ { \prime } - x _ { 1 } } \\ { y _ { 1 } ^ { \prime } - y _ { 1 } } \\ { x _ { 1 } ^ { \prime } - x _ { 2 } } \\ { y _ { 2 } ^ { \prime } - y _ { 2 } } \\ { \vdots } \\ { x _ { n } ^ { \prime } - x _ { n } } \\ { y _ { n } ^ { \prime } - y _ { n } } \end{array} \right] \]
\[ At =b \]
找到 t ,最大限度的减少 \[ \| \mathbf { A } \mathbf { t } - \mathbf { b } \| ^ { 2 } \]
\[ \begin{array} { c } { \mathbf { A } ^ { \mathrm { T } } \mathbf { A } \mathbf { t } = \mathbf { A } ^ { \mathrm { T } } \mathbf { b } } \\ { \mathbf { t } = \left( \mathbf { A } ^ { \mathrm { T } } \mathbf { A } \right) ^ { - 1 } \mathbf { A } ^ { \mathrm { T } } \mathbf { b } } \end{array} \]
对于仿射变换: \[ \left[ \begin{array} { l } { x ^ { \prime } } \\ { y ^ { \prime } } \\ { 1 } \end{array} \right] = \left[ \begin{array} { l l l } { a } & { b } & { c } \\ { d } & { e } & { f } \\ { 0 } & { 0 } & { 1 } \end{array} \right] \left[ \begin{array} { l } { x } \\ { y } \\ { 1 } \end{array} \right] \] 有六个未知数,每个匹配有两个方程,我们需要三个匹配
残差: \[ \begin{aligned} r _ { x _ { i } } ( a , b , c , d , e , f ) & = \left( a x _ { i } + b y _ { i } + c \right) - x _ { i } ^ { \prime } \\ r _ { y _ { i } } ( a , b , c , d , e , f ) & = \left( d x _ { i } + e y _ { i } + f \right) - y _ { i } ^ { \prime } \end{aligned} \] 对于同态映射(透视变换) \[ \left[ \begin{array} { c } { x _ { i } ^ { \prime } } \\ { y _ { i } ^ { \prime } } \\ { 1 } \end{array} \right] \cong \left[ \begin{array} { l l l } { h _ { 00 } } & { h _ { 01 } } & { h _ { 02 } } \\ { h _ { 10 } } & { h _ { 11 } } & { h _ { 12 } } \\ { h _ { 20 } } & { h _ { 21 } } & { h _ { 22 } } \end{array} \right] \left[ \begin{array} { c } { x _ { i } } \\ { y _ { i } } \\ { 1 } \end{array} \right] \]
\[ \begin{aligned} x _ { i } ^ { \prime } \left( h _ { 20 } x _ { i } + h _ { 21 } y _ { i } + h _ { 22 } \right) & = h _ { 00 } x _ { i } + h _ { 01 } y _ { i } + h _ { 02 } \\ y _ { i } ^ { \prime } \left( h _ { 20 } x _ { i } + h _ { 21 } y _ { i } + h _ { 22 } \right) & = h _ { 10 } x _ { i } + h _ { 11 } y _ { i } + h _ { 12 } \end{aligned} \]
Ah = 0 的非平凡最小二乘解,即为 \(A^TA\) 具有最小特征值的特征向量
如何计算
\[ \begin{array} { l } {{ 1 } - { P } = \left( { 1 } - { p } ^ { s } \right) ^ { { R } } } \\ { { R } = \frac { \log ( 1 - \boldsymbol { P } ) } { \log \left( \mathbf { 1 } - \boldsymbol { p } ^ { s } \right) } } \end{array} \]
哪些是内参,哪些是外餐
坐标系
照相机由几个参数描述:
从世界坐标到像素坐标
\[ \boldsymbol { \Pi } = \mathbf { K } [ \mathbf { R } | - \mathbf { R } \mathbf { c } ] \]
实现全景图的流程
围绕光心旋转相机,从同一位置拍摄一系列图像
计算第二个图像与第一个图像之间的变换
图像坐标系 -> 相机2坐标系 -> 相机 1 坐标系 (乘以旋转矩阵)-> 图像坐标系
变换使得两个图像部分重合
将两者融合在一起创建拼图
什么时候用柱面投影,什么时候用球面投影
什么是无穷远点(消失点)
消失点是无穷远处一个点的投影,投影到图像中的一个有限点
怎么用消失点
==估计相机的参数==
极线
基础矩阵(本质矩阵):用于已标定
基本矩阵:用于未标定
相机标定的步骤
最小化重投影误差平方和
\[ I = k_dN*L \]
图像强度 = 反照率*表面法线方向*光源方向
对每一个像素可以求解此式获得表面法线方向
通过相邻两个像素点 xyz 做差 ,可以获得一个表面向量,这个表面向量和法线垂直,每条法线可以给出 z 的两个线性约束 \(z_{x+1,y}, z_{x,y}\) ,通过求解矩阵方程计算 z 的值
有哪些分类的方式
损失函数
用来评判评分函数好还是不好,定义一个损失函数,在训练集上评估我们对分类分数的不满意程度