KCF公式推導錯誤及驗證
直接上結論:KCF中4.4節的重要公式(12)是錯誤的,右邊分母上x沒有星號,不應該是共軛。
KCF論文原始推導:
最小二乘解:
但由於編程用了對偶空間這部分推導是正確,摘錄如下 附錄A.3:
實現是根據這部分推導,所以代碼是正確。
最後附上YuKi博士的Matlab驗證代碼和推導過程:
最早問題和回答在這裡目標跟蹤中KCF的推導問題? - 知乎(我已搬運過來,如果上面推導沒問題就不用看了)
%% 給定數據和參數,確認循環矩陣是成立的x = [1 2 4 5];F = 0.5*dftmtx(4);X =[1 2 4 5; 5 1 2 4; 4 5 1 2; 2 4 5 1 ]; %按照論文中的形式,生成循環矩陣hat_x = fft(x);diag_x = diag(hat_x)y = [0; 1; 1; 0];A = F*diag_x*F-X; %這一項都是零,所以應該是F在前,KCF中的是對的,SAMF那個不對;B = F*diag_x*F-X;lambda = 0.1;%% 論文中重要公式 推導W = inv(X*X+lambda*eye(4))*X*y %KCF—PAMI 論文中的公式(3)W = (X*X+lambda*eye(4))(X*y) %以上兩行的等價;w = F*(diag((conj(fft(x)).*fft(x)+lambda))diag(conj(fft(x))))*F*y %將F代入替換X,論文中的公式 54-55 %這個地方要實用右除法,表示inv求逆 w是和W相等的,證明代碼無誤;a1 = diag((conj(fft(x)).*fft(x)+lambda))diag(conj(fft(x)));a2 = diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x)))w1 = F*(diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x))))*F*y %w1是將w中的兩個diag合併; 論文中的公式56%% 轉化到 頻率域fft(w)F*w %也可以得到 Fw 和FFT(w)的關係,成信號的長度的根號比例 2倍關係 (diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x))))*conj(fft(y)) %此時等價於上面的那個式子,級FY = conj(fft(y))conj(fft(w)) %也就是左邊等價於這個式子,因為左邊乘以的是F 很像公式57,但是得到的分別是共軛%所以通過將兩者同時進行共軛操作,將conj(fft(w))轉化成 fft(w) fft(w) conj((diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x))))*conj(fft(y)));b1 = (diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x)))) % 拿出對角矩陣的那一部分,單獨操作conj(b1)b2 = (diag((conj(fft(x)).*fft(x)+lambda).(fft(x))))% conj(b1) 等價於b2 即相當於分母不變,分子去掉共軛fft(w) (diag((conj(fft(x)).*fft(x)+lambda).(fft(x)))) *fft(y)%上式左右兩邊相等,但是這個時候 diag裡面的分子是fft(x),外面是fft(y)%最後一步是將fft(y)放進對角矩陣裡面,但是分子上依然應該是x_hat和y_hat吧?%% 再次驗證 -- by YaqiLYU補充% clearx = [2 5 8 6 3];y = [0; 0; 1; 0; 0];X = [2 5 8 6 3; 3 2 5 8 6; 6 3 2 5 8 ; 8 6 3 2 5; 5 8 6 3 2];disp(正確結果:)W = inv(X*X+lambda*eye(5))*X*ydisp(按照KCF中公式(12)的結果:)w1 = (diag((conj(fft(x)).*fft(x)+lambda).conj(fft(x)))) *fft(y);W1 = ifft(w1)disp(重新推導的結果:)w2 = (diag((conj(fft(x)).*fft(x)+lambda).(fft(x)))) *(fft(y));W2 = ifft(w2)disp(W與W2相同,原推導錯誤)
歡迎探討和指正,如果推導正確,那KCF之後很多論文都引用了這個公式,都錯了。。。
推薦閱讀:
※[171102] 圖像處理背景介紹
※利用條件GANs的pix2pix進化版:高解析度圖像合成和語義操作 | PaperDaily #23
※1.6【OpenCV圖像處理】圖像混合
※Matlab圖像處理中的傅里葉變換