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
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
? ? ? ? 首先,因為對于任意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解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Reverse Linked List
- 下一篇: Excel Sheet Column N