核相關濾波(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