核相关滤波(Kernel Correlation Filter)


Kernel Correlation Filter(核相关滤波)

核相关滤波的基本原理也是非常的简单,难得地方在于怎么去应用它。

\[f\left(x_{i}\right)=W^{T} x_{i} \]

循环矩阵


定义:一个矩阵可以由一个向量可以通过不断的乘上排列矩阵得到n个循环移位向量,将这n个向量依序排列到一个矩阵中,就形成了x生成的循环矩阵

\[\begin{aligned}\begin{array}{l} x=\left[x_{1}, x_{2}, \cdots, x_{n}\right]^{T} \\ \qquad \begin{aligned}\\ P =\left[\begin {array}{ccccc} 0 & 0 & \ldots & 0 & 1 \\ 1 & 0 & \ldots & 0 & 0 \\ 0 & 1 & \ldots & 0 & 0 \\ & & \vdots & & \\ 0 & 0 & \cdots & 1 & 0 \end{array}\right] \end{aligned} \\ P x =\left[x_{n}, x_{1}, x_{2} \cdots, x_{n-1}\right]^{T} \end{array}\end{aligned}\]

\(P\)就是一个排列矩阵,乘一次\(P\)向量\(x\)就循环移位一次。下面就是一个循环矩阵,可以有第一个向量,乘以\(P\)来得到。

图片替换文本

二维循环矩阵


当然对于二维图像的话,可以通过x轴和y轴分别循环移动实现不同位置的移动。也就是在X,Y轴方向同时乘以排列矩阵。

只进行了Y方向的乘以排列矩阵。

图片替换文本

同时在X,Y方向乘以排列矩阵。

图片替换文本

核相关滤波具体应用


因为我们想要得到滤波后得结果,通过滤波我们可以这样理解,即便就是目标附近的滤波值尽可能的大,离目标越远滤波值可能的小,热力图显示就是,或者三维显示就是。

图片替换文本 图片替换文本

对于滤波器表达式\(f\left(x_{i}\right)=W^{T} x_{i}\),想要让目标附近的滤波值尽可能的大,离目标越远滤波值可能的小,我们就可以通过设置标签(通常我们设置的是标准高斯分布来作为标签),让滤波值越接近于我们设置的高斯分布,就越满足我们的目标。也就是说滤波器的值与标签的差值越小,那么越符合我们的目标。(类似于深度学习的训练过程)。

我们可以得到损失函数,

\[\text { loss }=\min_{w} \sum{}\left(f\left(x_{i}\right)-y_{i}\right)^{2}+\lambda\|w\|^{2} \]

同样我们加入正则项lamda,防止过拟合。对\(w\)求导有,

\[w=\left(X^{T} X+\lambda I\right)^{-1} X^{T} y \]

假设\(X\)中有n个样本,那么\(X=\left[x_{1}, x_{2}, \cdots, x_{n}\right]\)每一列就表示一个特征向量。\(y\)为列向量,标签。

因为一个定理(不懂,没有看证明),任何带有正则化L2的线性模型,其最优的\(w\)都可以表示为训练样本\(x_i\)的线性组合,

\[w=\sum_{i=1}^{n} \alpha_{i} x_{i} \]

所以滤波器就可以表示为:

\[f(z)=w^{T} z=\sum_{i=1}^{n} \alpha_{i} x_{i}^{\tau} \cdot z \]

\(x\)表示的是前一帧的图像输入,因为是训练样本,用上一帧的图像进行训练。

因为特征向量x,z跟y之间并不是线性的关系,所以需要对其进行线性化处理,加入一个非线性化映射。

\[x \rightarrow \phi(x), z \rightarrow \phi(z) \]

即便就有,

\[f(z)=\sum_{i=1}^{n} \alpha_{i} x_{i}^{T} \cdot z \Rightarrow f(z)=\sum_{i=1}^{n} \alpha_{i} \phi\left(x_{i}\right)^{T} \cdot \phi(z) \]

对于求和用矩阵进行代替,

\[f(z)=w^{T} \phi(z)=\sum_{i=1}^{n} \alpha_{i} \phi\left(x_{i}\right)^{T} \phi(z)=\alpha^{T} \phi(X) \phi(z) \]

这里的\(\alpha^{T}=\left[\alpha_{1}, \alpha_{2}, \cdots, \alpha_{n}\right], \phi(X)=\left[\phi\left(x_{1}\right)^{T}, \cdots, \phi\left(x_{n}\right)^{T}=\right]^{T}\),即便就有,

\[f(z)=\alpha^{T} \phi(X) \phi(z), w=\phi(X)^{T} \alpha \]

带入损失函数\(\text { loss }=\min_{w} \sum{i}\left(f\left(x_{i}\right)-y_{i}\right)^{2}+\lambda\|w\|^{2}\),得

\[\operatorname{loss}=\min _{\alpha} \sum_{i}\left(\alpha^{T} \phi(X) \phi\left(x_{i}\right)-y_{i}\right)^{2}+\lambda\left\|\phi(X)^{T} \alpha\right\|^{2} \]

矩阵表达式就是,

\[\operatorname{loss}=\min _{\alpha}|| \phi(X) \phi(X)^{T} \alpha-y\left\|^{2}+\lambda\right\| \phi(X)^{T} \alpha \|^{2} \]

\(\alpha\)求导就可以得到,

\[\alpha=\left(\phi(X) \phi(X)^{T}+\lambda I\right)^{-1} y=(K+\lambda I)^{-1} y \]

重点思考\(K\),是他完成了对于训练数据得采集,因为我们可以证明K就是循环矩阵,而循环矩阵就可以通过第一个向量通过移位操作得到的,也可以认为是整个得训练数据集构成了循环矩阵。

\[K=\left[\begin{array}{llll} \phi\left(x_{1}\right)^{T} \phi\left(x_{1}\right) & \phi\left(x_{1}\right)^{T} \phi\left(x_{2}\right) & \cdots & \phi\left(x_{1}\right)^{T} \phi\left(x_{n}\right) \\ \phi\left(x_{2}\right)^{T} \phi\left(x_{1}\right) & \phi\left(x_{2}\right)^{T} \phi\left(x_{2}\right) & \cdots & \phi\left(x_{2}\right)^{T} \phi\left(x_{n}\right) \\ \ldots & \ldots & \cdots & \ldots \\ \phi\left(x_{n}\right)^{T} \phi\left(x_{1}\right) & \phi\left(x_{n}\right)^{T} \phi\left(x_{2}\right) & \cdots & \phi\left(x_{n}\right)^{T} \phi\left(x_{n}\right) \end{array}\right]\]

因为\(K\)是循环矩阵,对\(\alpha\)化简,

\[\begin{array}{c} \alpha=\left(F \operatorname{diag}(\hat{k}) F^{H}+F \operatorname{diag}(\lambda \delta) F^{H}\right)^{-1} y=\left(F \operatorname{diag}(\hat{k}+\lambda \delta) F^{H}\right)^{-1} y \\ =F \operatorname{diag}\left(\frac{1}{\hat{k}+\lambda \delta}\right) F^{H} y=C\left(\mathcal{F}^{-1}\left(\frac{1}{\hat{k}+\lambda \delta}\right)\right) y \end{array}\]

又因为\(\mathcal{F}(C(x) \cdot y)=\hat{x}^{*} \odot \hat{y}\)可以得到,即便就是同时对\(\alpha\)\(C\left(\mathcal{F}^{-1}\left(\frac{1}{\hat{k}+\lambda \delta}\right)\right) y\)做傅里叶变化,得到下面,

\[\hat{\alpha}=\left(\frac{1}{\hat{k}+\lambda \delta}\right)^{*} \odot \hat{y} \]

再把\(\alpha\)带入滤波器,\(f(z)=\sum_{i=1}^{n} \alpha_{i} \phi\left(x_{i}\right)^{T} \cdot \phi(z)\)

\[f(z)=\left[\alpha_{1}, \alpha_{2}, \cdots, \alpha_{n \times n}\right]\left[\begin{array}{c} \phi^{T}\left(x_{1}\right) \\ \phi^{T}\left(x_{2}\right) \\ \vdots \\ \phi^{T}\left(x_{n \times n}\right) \end{array}\right] \phi(z)\]

进一步,

\[f^{T}(Z)=\alpha^{T} \phi^{T}(X) \phi(Z)=\left[\alpha_{1}, \alpha_{2}, \cdots, \alpha_{n \times n}\right] K^{X Z} \]

\[K^{X Z}=\left[\begin{array}{cccc} \phi\left(x_{1}\right)^{T} \phi\left(z_{1}\right) & \phi\left(x_{1}\right)^{T} \phi\left(z_{2}\right) & \cdots & \phi\left(x_{1}\right)^{T} \phi\left(z_{n \times n}\right) \\ \phi\left(x_{2}\right)^{T} \phi\left(z_{1}\right) & \phi\left(x_{2}\right)^{T} \phi\left(z_{2}\right) & \cdots & \phi\left(x_{2}\right)^{T} \phi\left(z_{n \times n}\right) \\ \cdots & \cdots & \cdots & \cdots \\ \phi\left(x_{n \times n}\right)^{T} \phi\left(z_{1}\right) & \phi\left(x_{n \times n}\right)^{T} \phi\left(z_{2}\right) & \cdots & \phi\left(x_{n \times n}\right)^{T} \phi\left(z_{n \times n}\right) \end{array}\right]\]

\(K^{X Z}\)是循环矩阵(证明就不证明了),

\[f(Z)=\left(\alpha^{T} K^{X Z}\right)^{T}=K^{Z X} \alpha \]

同时对\(f(Z)\)\(K^{Z X} \alpha\)做傅里叶变换,因为\(\mathcal{F}(C(x) \cdot y)=\hat{x}^{*} \odot \hat{y}\)就有

\[\hat{f(Z)}=\hat{\left(k^{{xz} }\right)^{*} }\odot \hat{\alpha} \]

\(\hat{\alpha}=\left(\frac{1}{\hat{k}+\lambda \delta}\right)^{*} \odot \hat{y}\),故\(f(Z)\)的傅里叶变换为

\[f(\hat{Z})=\left(k^{\hat{x z}}\right)^{} \odot\left[\left(\frac{1}{k^{\hat{x} x}+\lambda \delta}\right)^{} \odot \hat{y}\right] \]

\(x,z\)分别表示的是训练样本和以为样本。

所以核相关滤波只是推导比较难一点,实际上用起来非常简单,就是上面的滤波器模型就可以了。

循环矩阵的的特点:

\[X^{T}=F \cdot \operatorname{diag}\left((\hat{x})^{*}\right) \cdot F^{H} \]

\[\mathbb{F}(X y)=\mathbb{F}(C(x) y)=\mathbb{F}^{*}(x) \odot \mathbb{F}(y) \]


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM