天天看點

unsupervised leaning of visual representation using videos-特征表示方法 學習筆記特征表示方法 學習筆記

特征表示方法 學習筆記

unsupervised leaning of visual representation using videos

根本思想:

用一個圖檔(patch)三元組(a, b, c)來訓練網絡,

其中a和b是同一個視訊中内容相近的patch, c是從其他視訊中任意采樣得到的patch,

讓網絡能學習到a, b, c的特征并滿足a,b之間的距離盡量小,a,c之間的距離盡量大。

主要步驟:

第一個階段 用傳統的數字圖像處理算法來得到一組相同内容的patch(a, b)

  1. 用SURF算法在第一幀上尋找興趣點(需要檢測的、分類等的主要物體,主要是與背景區分)
  2. 用IDT算法來消除興趣點上的相機抖動,使得後續的追蹤能有更好的效果,此處結束後得到三元組中的第一個query patch,就是上述的a
  3. 用KCF追蹤器來追蹤之後30幀内與query patch相同内容的第二個patch,即上述b

用以上方法得到大量的pair of patch (a, b),下面就進入深度學習的階段,用這組patch來訓練cnn

第二個階段 用上述patch組合訓練cnn(siamese triplet network)學習到一種論文認為的較好的visual representation

4.用上述的大量pair of patch來訓練一個random initialization的AlexNet;

5.用Pascal VOC資料 fine-tune上述網絡;

6.為了實作transfer learning,将fine-tuned的網絡再次在步驟4中的方式中再訓練一次,即熱re-adapt the triplet task;

7.再次用 VOC資料 fine-tune上述網絡

(感覺相當于4,5重複了兩次,論文認為這樣能夠達到更好的效果吧,但個人認為這樣其實就相當與在用voc訓練網絡了吧,說完全是unsupervised感覺名不符實,不過後面也證明了沒有fined-tune的網絡也是有提升的,隻是沒有後面fine-tune之後的那麼明顯)

第三個階段 将這個網絡接上全連接配接層輸出一個特征向量,後面就可以用SVM等各種方法來利用這個representation進行其他的具體任務了

以上步驟中沒有說到三元組中的c patch,實際上是在步驟4中訓練過程中sample并通過一種類似hard negative mining的方法來得到這些negative sample的。

因為相對a和b,c是作為負樣本的

對于訓練過程中順便篩選副樣本的内涵,我是這樣了解的(且看看吧):

作者建構了一個ranking loss function:

unsupervised leaning of visual representation using videos-特征表示方法 學習筆記特征表示方法 學習筆記

其中第一項是正則化項,論文開頭就說很這個方法很容易過拟合

第二項就是用距離來表示hinge loss的部分,距離還特意采用了cosine distance(餘弦距離)

unsupervised leaning of visual representation using videos-特征表示方法 學習筆記特征表示方法 學習筆記

**餘弦距離相比于歐式距離的差别在于,對絕對距離不敏感,更适合表征方向上的距離,也就更适合表示這種圖像之間的距離吧

訓練中,采用mini batch SGD,對于每個pair of patch,在每個batch中随機抽樣K個patch,

分别都計算其loss,選擇loss最大的那個patch作為三元組中的負樣本c,這樣就得到了triplet

而所謂的siamese-triplet network的三個網絡是共享參數的,隻是分别用于計算三個patch而已

由于反正都要在網絡中forward propagation一次,是以在最後篩選K個patch時并沒有增加太多計算量,還是很劃算的。

其實相比現在的auto-encoder總覺得這樣的方法确實有些落後了,但是在有些任務中可能仍舊是有用武之地的,畢竟如何獲得好的representation将會一直是CV 中的重點。

繼續閱讀