日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MOSSE算法推导

發布時間:2023/12/10 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MOSSE算法推导 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

??MOSSE是在Visual Object Tracking using Adaptive Correlation Filters這篇文章中提出來的,MOSSE的全稱是Minimum Output Sum of Squared Error,令平方誤差和最小來計算得到濾波器。

算法流程

??相關濾波很容易理解,一幀圖像經過相關運算(濾波器)之后得到的響應圖中,響應最大的位置就是目標所在的位置。這個相關計算的模板也就是濾波器,它濾除了和它不相關的內容。

相關運算和卷積運算

??相關Correlation和卷積Convolution有著緊密的聯系。以一維的情況考慮。f[n]f[n]f[n]是原始序列,h[n]h[n]h[n]是濾波器,在它們都是實數的情況下,相關運算結果g[n]g[n]g[n]可以表示為:
g[n]=∑τ=?∞∞f[τ]h[n+τ]g[n] = \sum^{\infty}_{\tau=-\infty}f[\tau]h[n+\tau]g[n]=τ=??f[τ]h[n+τ]
??兩者卷積的結果為:
f[n]?h[n]=∑τ=?∞∞f[τ]h[τ?n]f[n]\ast h [n] = \sum^{\infty}_{\tau=-\infty}f[\tau]h[\tau-n]f[n]?h[n]=τ=??f[τ]h[τ?n]
??可以觀察到,相關和卷積的計算非常相似,我們如果讓f[n]f[n]f[n]h[?n]h[-n]h[?n]卷積,那就能得到相關計算的結果了。有人可能會問了h[n]h[n]h[n]可以理解,但是h[?n]h[-n]h[?n]的話索引就小于0了,是什么呀?我們先不管這個,先定性地再理解一下卷積和相關運算的區別。在一維的情況下,相關運算就像是把一條線段在另一條線段上拖動,每次兩條線段重合區域的長度就是運算結果;卷積運算則是僅僅多了把一條線段反轉的步驟,同樣也是拖動然后看重合的長度。這樣我們就好理解了,這個h[?n]h[-n]h[?n]中的負號只是起到了序列前后反轉的作用。
g[n]=f[n]?h[?n]g[n] =f[n]\ast h [-n]g[n]=f[n]?h[?n]
??那么我們就可以把相關運算表示成上面的卷積運算。很多情況下,如果h[n]h[n]h[n]是一個對稱的序列,那么卷積和相關運算得到的結果就是一樣的。
??為了簡化計算,時域的卷積轉化為頻域的乘積,我們用DFT可以由f[n]f[n]f[n]計算得到F[k]F[k]F[k],下面是h[n]h[n]h[n]的DFT:
H[k]=∑n=0N?1h[n]e?j2πknNH[k]=\sum^{N-1}_{n=0}{h[n]e^{-j2\pi\frac{kn}{N}}}H[k]=n=0N?1?h[n]e?j2πNkn?
??而h[?n]h[-n]h[?n]經過DFT之后得到的是什么呢?因為一個序列就只有0到N-1的索引,這負的索引是什么呢?為此我又回顧了一遍DFT,我看的主要是奧本海姆的《離散時間信號處理》。書里講的DFT和DFS非常像,確實非常像!我自己的理解是:DFS和傳統意義的傅立葉變換更接近,它實現的是離散周期序列與離散周期序列之間的轉換(因為存在“周期對離散”,“非周期對連續”這樣的對應關系)。而DFT則是截取了DFS的一個周期的序列來表示,可以說只是一種表示方法,在處理的時候要注意它固有的周期性。

??舉個例子,x[n]x[n]x[n]是長度為4的序列,x~[n]\tilde x[n]x~[n]是周期延拓后的序列,x~[?n]\tilde x[-n]x~[?n]是翻轉后的序列,x[?n]x[-n]x[?n]是從翻轉后的序列中提取一個周期的序列。
∑n=0N?1h[?n]e?j2πknN=h[0]+∑n=1N?1h[N?n]e?j2πknN\sum^{N-1}_{n=0}{h[-n]e^{-j2\pi\frac{kn}{N}}}=h[0]+ \sum^{N-1}_{n=1}{h[N-n]e^{-j2\pi\frac{kn}{N}}}n=0N?1?h[?n]e?j2πNkn?=h[0]+n=1N?1?h[N?n]e?j2πNkn?
??令l=N?nl=N-nl=N?n,則n=N?ln=N-ln=N?l,代入上式得:
h[0]+∑l=1N?1h[l]e?j2πk(N?l)N=h[0]+∑l=1N?1h[l]ej2πklN=∑l=0N?1h[l]ej2πklN=H?[k]h[0]+ \sum^{N-1}_{l=1}{h[l]e^{-j2\pi\frac{k(N-l)}{N}}}=h[0]+ \sum^{N-1}_{l=1}{h[l]e^{j2\pi\frac{kl}{N}}}= \sum^{N-1}_{l=0}{h[l]e^{j2\pi\frac{kl}{N}}}=H^*[k]h[0]+l=1N?1?h[l]e?j2πNk(N?l)?=h[0]+l=1N?1?h[l]ej2πNkl?=l=0N?1?h[l]ej2πNkl?=H?[k]
??到這里我們就有了f[n]f[n]f[n]h[?n]h[-n]h[?n]的DFT,它們倆的卷積可以用乘積表示,我們把g[n]g[n]g[n]的DFT結果記為G[k]G[k]G[k],則:
G[k]=F[k]⊙H?[k]G[k] = F[k]\odot H^*[k]G[k]=F[k]H?[k]

MOSSE算法

??上面的式子再推廣到二維的情況也一樣是成立的,⊙\odot表示二維矩陣FFFH?H^*H?的對應元素相乘。
G=F⊙H?G = F\odot H^*G=FH?
??我們的目標是求H?H^*H?FFF是輸入的圖像,GGG是輸出的響應。這個響應需要我們自己設計。目標經過濾波器后,目標所在位置的響應最大,當目標在圖像中央時,我們可以把這個響應設定為峰值位置在圖像中央的二維高斯函數。
??如果只有一幅訓練圖片的話,這就已經能算出來了,H?=GFH^*=\frac{G}{F}H?=FG?(這里的除法指的是對應元素相除),但是一般不只一幅圖,所以要求一個最優的H?H^*H?。為此論文中提出的準則是使每幅圖計算的結果和高斯模板之間的平方誤差之和最小,用公式表示就是:
min?H?∑i∣Fi⊙H??Gi∣2\mathop {\min }\limits_{{H^*}} \sum\limits_i {{{\left| {{F_i} \odot {H^*} - {G_i}} \right|}^2}} H?min?i?Fi?H??Gi?2
??接下來就是想辦法求這個最優化問題了,可以看到它類似一個一元二次函數,但這里又都是復數運算,所以還是有點不同。求解H?H^*H?可以分解為求解它的每一個元素。對于www行,vvv列的元素,有:
min?H?∑i∣Fiwv⊙Hwv??Giwv∣2\mathop {\min }\limits_{{H^*}} \sum\limits_i {{{\left| {{F_{iwv}} \odot {H^*_{wv}} - {G_{iwv}}} \right|}^2}} H?min?i?Fiwv?Hwv???Giwv?2
??這就是標量運算了,我們先看i=1i=1i=1的情況。
min?H?∣FwvH?wv?Gwv∣=min?H?(FwvH?wv?Gwv)(FwvH?wv?Gwv)?=min?H?FwvFwv?HwvH?wv?GwvFwv?Hwv?Gwv?FwvH?wv?GwvG?wv\begin{array}{l} \mathop {\min }\limits_{{H^*}} \left| {{F_{wv}}{H^*}_{wv} - {G_{wv}}} \right|\\ = \mathop {\min }\limits_{{H^*}} \left( {{F_{wv}}{H^*}_{wv} - {G_{wv}}} \right){\left( {{F_{wv}}{H^*}_{wv} - {G_{wv}}} \right)^*}\\ = \mathop {\min }\limits_{{H^*}} {F_{wv}}{F_{wv}}^*{H_{wv}}{H^*}_{wv} - {G_{wv}}{F_{wv}}^*{H_{wv}} - {G_{wv}}^*{F_{wv}}{H^*}_{wv} - {G_{wv}}{G^*}_{wv} \end{array}H?min?Fwv?H?wv??Gwv?=H?min?(Fwv?H?wv??Gwv?)(Fwv?H?wv??Gwv?)?=H?min?Fwv?Fwv??Hwv?H?wv??Gwv?Fwv??Hwv??Gwv??Fwv?H?wv??Gwv?G?wv??
??求極值要涉及對復數的變量求導,有人提出了Wirtinger導數,其中z=x+jyz=x+jyz=x+jy
??z=12[??x?j??y]??z?=12[??x+j??y]\frac{\partial }{{\partial z}} = \frac{1}{2}\left[ {\frac{\partial }{{\partial x}} - j\frac{\partial }{{\partial y}}} \right]\\ \frac{\partial }{{\partial {z^*}}} = \frac{1}{2}\left[ {\frac{\partial }{{\partial x}} + j\frac{\partial }{{\partial y}}} \right] ?z??=21?[?x???j?y??]?z???=21?[?x??+j?y??]
??根據上面的式子可以計算得到:
??zz?=??z?z=0\frac{\partial }{{\partial z}}{z^*} = \frac{\partial }{{\partial {z^*}}}z = 0?z??z?=?z???z=0
??據此可以知道HwvH_{wv}Hwv?在對Hwv?H_{wv}^*Hwv??求導的時候可以看作常數。因此對目標函數求導,并令導數為0可得:
??Hwv?(FwvFwv?HwvH?wv?GwvFwv?Hwv?Gwv?FwvH?wv?GwvG?wv)=FwvFwv?Hwv?Gwv?Fwv=0\begin{array}{l} \frac{\partial }{{\partial {H^*_{wv}}}}\left( {{F_{wv}}{F_{wv}}^*{H_{wv}}{H^*}_{wv} - {G_{wv}}{F_{wv}}^*{H_{wv}} - {G_{wv}}^*{F_{wv}}{H^*}_{wv} - {G_{wv}}{G^*}_{wv}} \right)\\ = {F_{wv}}{F_{wv}}^*{H_{wv}} - {G_{wv}}^*{F_{wv}} = 0 \end{array}?Hwv????(Fwv?Fwv??Hwv?H?wv??Gwv?Fwv??Hwv??Gwv??Fwv?H?wv??Gwv?G?wv?)=Fwv?Fwv??Hwv??Gwv??Fwv?=0?
Hwv=Gwv?FwvFwvFwv?,Hwv?=GwvFwv?FwvFwv?{H_{wv}} = \frac{{{G_{wv}}^*{F_{wv}}}}{{{F_{wv}}{F_{wv}}^*}}, {H_{wv}}^* = \frac{{{G_{wv}}{F_{wv}}^*}}{{{F_{wv}}{F_{wv}}^*}} Hwv?=Fwv?Fwv??Gwv??Fwv??,Hwv??=Fwv?Fwv??Gwv?Fwv???
??再推廣到i>1i>1i>1的情況:
H?=∑iGi⊙Fi?∑iFi⊙Fi?{H^*} = \frac{{\sum\nolimits_i {{G_i} \odot {F_i}^*} }}{{\sum\nolimits_i {{F_i} \odot {F_i}^*} }}H?=i?Fi?Fi??i?Gi?Fi???
??最后引入了學習率η\etaη來更新H?H^*H?
Hn?=AnBnAn=ηGn⊙Fn?+(1?η)An?1Bn=ηFn⊙Fn?+(1?η)Bn?1\begin{array}{l} {H_n}^* = \frac{{{A_n}}}{{{B_n}}}\\ {A_n} = \eta {G_n} \odot {F_n}^* + (1 - \eta ){A_{n - 1}}\\ {B_n} = \eta {F_n} \odot {F_n}^* + (1 - \eta ){B_{n - 1}} \end{array}Hn??=Bn?An??An?=ηGn?Fn??+(1?η)An?1?Bn?=ηFn?Fn??+(1?η)Bn?1??
??其中n=1,2,3...n=1,2,3...n=1,2,3...代表測試圖片的幀數。A0=∑iGi⊙Fi?A_0=\sum\nolimits_i {{G_i} \odot {F_i}^*}A0?=i?Gi?Fi??,B0=∑iFi⊙Fi?B_0=\sum\nolimits_i {{F_i} \odot {F_i}^*}B0?=i?Fi?Fi??,實踐中發現,η=0.125\eta=0.125η=0.125效果較好。

總結

以上是生活随笔為你收集整理的MOSSE算法推导的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。