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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LLC算法coding与pooling解析

發布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LLC算法coding与pooling解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這幾天看了Locality-constrained Linear Coding for Image Classification算法,里面涉及到coding與pooling過程,在此做一解析:

? ? ?

? ? ?1)Feature Extract

? ? ? 在代碼部分,作者用了Lazebnik's SIFT算法提取 Dense Sift特征

? ? ? CalculateSiftDescriptor(rt_img_dir, rt_data_dir, gridSpacing, patchSize, maxImSize, nrml_threshold)

? ? ? ?其中patchSize為提取Sift特征的patch大小,gridSpacing為patch移動的步長

? ?

? ? ? 2)coding

? ? ?coding過程其實是LLE (Locally Linear Embedding) 局部線性嵌入算法(鏈接)的前兩步

? ? ?LLC目的就是得到樣本點與相鄰樣本之間的權重,,,所以用LLE算法中的過程

? ? ?(1)尋找每個樣本點的k個近鄰點 ? ? ??

[plain]?view plaincopy
  • %?find?k?nearest?neighbors??
  • %???????B???????-M?x?d?codebook,?M?entries?in?a?d-dim?space??
  • %???????X???????-N?x?d?matrix,?N?data?points?in?a?d-dim?space??
  • XX?=?sum(X.*X,?2);??
  • BB?=?sum(B.*B,?2);??
  • D??=?repmat(XX,?1,?nbase)-2*X*B'+repmat(BB',?nframe,?1);??
  • IDX?=?zeros(nframe,?knn);??
  • %(1)尋找每個樣本點的k個近鄰點??
  • for?i?=?1:nframe,??
  • ????d?=?D(i,:);??
  • ????[dummy,?idx]?=?sort(d,?'ascend');??
  • ????IDX(i,?:)?=?idx(1:knn);??
  • end??


  • a)???????距離方陣


    ? ? ? ? 首先注意到這樣一個事實|Xi-Xj|^2=|Xi|^2+|Xj|^2-2<Xi, Xj>,其中< , >為內積。XX = sum(X.^2,1)是N行1列的矩陣,第j個元素為X第j行的平方和,也就是|Xj|^2。

    ? ? ? ?repmat是平鋪函數,repmat(XX,N,1)得到N×N方陣,每行都是XX,同理repmat(BB',nframe,1)每行都是BB','是轉置的意思。X'*X得到N×N方陣,(i,j)位置元素為<Xi, Xj>。因此distance就是我們要的距離方陣的平方。

    b)??????省去開平凡

    ? ? ? ? 因為我們只需要K近鄰,而不需要具體的距離值,而開平方是嚴格單調函數,保序,因此我們可以省去開平方,節省了計算量。

    c)??????反向索引

    ? ? ? ? sort給矩陣每列排序,并返回置換前后下標的映射關系index:index(i,j)是distance第j列第i小的元素的下標。我們要每列前K小的下標,也就是每個Xi的K近鄰。

    ???????任意兩個點至少做一次內積O(D),共O(N^2)個點對,故復雜度:O(DN^2)


    ? ? ?(2)由每個樣本點的近鄰點計算出該樣本點的局部重建權值矩陣

    ? ? ? 這些過程都是LLE的求解過程。

    [plain]?view plaincopy
  • II?=?eye(knn,?knn);??
  • Coeff?=?zeros(nframe,?nbase);??
  • for?i=1:nframe??
  • ???idx?=?IDX(i,:);??
  • ???z?=?B(idx,:)?-?repmat(X(i,:),?knn,?1);???????????%?shift?ith?pt?to?origin??
  • ???C?=?z*z';??????%?local?covariance??
  • ???C?=?C?+?II*beta*trace(C);????????????????????????%?regularlization?(K>D)或脊回歸,矩陣的對角線加上較小的數,防止C為奇異矩陣??
  • ???w?=?C\ones(knn,1);??
  • ???w?=?w/sum(w);????????????????????????????????????%?enforce?sum(w)=1??
  • ???Coeff(i,idx)?=?w';??
  • end??

  • ? ? ? ? 首先,因為對于任意i,Wij=0若j不屬于Si,故W只需要存K行N列即可。

    ? ? ? ? 其次,易見E(W)極小當且僅當每一求和項極小,因此我們依次計算W的每一列。固定列i,記x=Xi,w=W第i列,?j=Xj,極小化|x-

    ∑{j=1..K}{wjηj}|^2,滿足歸一化約束∑{ j=1..k }{wj}=1。用矩陣語言描述:記B=( ?1-x,…, ηk-x)為D×K矩陣,G=B'B為K×K方陣(講義中稱之為Gram方陣,半正定,在攝動意義下總可以假設它非奇異),e=(1,…,1)'為K維單位列向量,則問題化為——

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?min |Bw|^2也就是min w'Gw(二次型) ?s.t. e'w=1

    ? ? ? ? 用拉格朗日乘數法求此條件極值:做輔助函數F(w,λ)= w'Gw-λ(e'w -1)

    ? ? ? ? 對每個wj求偏導數令為0得Gw=λe,反解出w=G^{-1}λe,代入到歸一化約束e'w=1中得到:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?λ=(e'G^{-1}e)^{-1},即最優解w=(e'G^{-1}e)^{-1} G^{-1}e

    ? ? ? ? 實際操作時,我們先解線性方程組Gw=e,然后再將解向量w歸一化,易見得到的就是上述最優解。


    ? ?3)?pooling

    ? ? 作者采用max-pooliing方法,size(llc_codes)=[nBase,nFrame],每一行對應一個dictionary中的base,max(llc_codes(:, sidxBin), [], 2)取每一行的最大值。


    總結

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

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