【論文閱讀】Triplet-Center Loss for Multi-View 3D Object

Triplet-Center Loss for Multi-View 3D Object Retrieval

原文(cvpr18接受):https://arxiv.org/abs/1803.06189

摘要

  • 任務
    • 3D object retrieval
  • 目標
    • 利用深度度量學習(deep metric learning)學習3D物體的差異特徵(discriminative features)
  • 本文貢獻
    • 介紹了三元損失(triplet loss)和中心損失(center loss), 並整合提出了新的triplet-center loss(TCL),通過loss來學習每一類的中心點,並使得類內距離(intra-class distance)儘可能小,類間距離(inter-class distance)儘可能大。 提高了特徵的區分度(discriminative power)

相關工作

  • 針對3D object retrieval,現階段深度學習領域主要分兩種解決方法:

    • View-based methods
      對3D物體的不同視角採集(渲染)一系列視角圖(view projections)。 然後轉化爲2D圖像問題,用CNN來解決
      • 代表方法:
        • MVCNN(multi-view cnn)
          (也是文章用的基礎網絡結構)
        • GIFT
    • Model-based methods
      得到3D形狀特徵(polygan meshes, surfaces, voxel grid, point clouds et. al),然後利用3D CNN來解決。但是3D特徵不論是獲取還是計算都比較複雜。
      • 代表方法:
        • 3D CNN
        • Kd network

    現階段,view-based 要比 model-based 效果要好很多,並且 view-based methods比較方便,可以做到實時應用,並且隨着gpu和數據量的增加,這種方法用的也越來越多。

  • 針對3d object retrieval裏用到的loss function:

    • triplet loss
      優勢在於增加特徵區分度,適合於細粒度分類。
      多數用在face recognition 和person re-identification(re-ID)上
    • center loss
      主要是與softmax loss結合,減小類內距離
      • 相關基礎知識:
        https://blog.csdn.net/u014380165/article/details/76946339
      • 不足之處
        只關注於減小類內變化(intra-class variations),沒有對類間距離進行處理,因而可能導致不同類之間出現重疊,並且在訓練的時候中心是每個mini-batch一更新,所以很不穩定,必須與softmax loss結合來維持穩定性。

本文工作

普通的深度學習網絡大多專注於找到不同類之間的邊界,沒有過多考慮類內的距離和不同類之間的關係(比如空間關係),因此在3D object retieval任務中找到robust and discriminative features是提高性能的重要環節。
image1

上圖從左到右依次爲softmax loss, center loss + softmax loss, TCL。
可以看出普通分類只是在找類間邊界而沒有考慮類內變化,而center loss減小了類內變化,但是因爲沒有考慮latter one(不是很清楚怎麼解釋,可能是沒有考慮類間邊界樣本的距離)容易造成類間重疊。而TCL解決了這些問題。
###TCL(triplet-center loss)
先寫一下triplet loss 和 center loss的公式:

  • triplet loss

    Ltpl=i=1Nmax(1,m+D(f(xai),f(x+i))D(f(xai),f(xi))L_{tpl} = \sum_{i=1}^Nmax(1,m+D(f(x_a^i),f(x_+^i))-D(f(x_a^i),f(x_-^i))

    • xa,x+,xx_a,x_+,x_-分別表示樣本a、與a同類的樣本、與a不同類的樣本,f()f()表示網絡的特徵embedding output, D()D()表示向量之間的距離,m是類間margin。
  • center loss

Lc=12i=1ND(f(xi),cyi)L_{c} = \frac{1}{2}\sum_{i=1}^ND(f(x^i),c_y^i)

cyic_y^i分別class yiy_i的中心,D()D()是squared Euclidean distance。

之前提過triplet loss的優勢是考慮了類間關係,主要不足是費時、center loss的優勢是減少了類內變化,主要不足是沒有考慮類間關係,所以爲了同時改進這兩點並且結合優勢,作者把兩種loss結合起來,提出了TCL:

Ltc=i=1Mmax(D(f(xi),cyi)+mminjyiD(f(xi),cj),0)L_tc = \sum_{i=1}^Mmax(D(f(x^i),c_{y^i}) + m - min_{j\neq{y^i}}D(f(x^i),c_j),0)

D(f(xi),cyi=12f(xi)cyi22D(f(x_i),c_{y^i} = \frac{1}{2}\left|\left|f(x^i) - c_{y^i}\right|\right|_2^2

TCL只計算樣本與同類中心之間的距離,減少了計算複雜度,並考慮到了離樣本最近的不同類之間的距離,使得不同類之間可以保持一定的距離。
(還有一部分反向傳播的過程,不太好寫,感興趣的可以去看論文)

同時論文結合了softmax loss,可以作爲監督使得訓練過程中可以找到更好的class centers也就將metric learning和classfication task結合起來,並且TCL和softmax loss互相獨立,可以直接相加。
最後論文裏用到的損失函數是

Ltotal=λtc+LsoftmaxL_{total} = \lambda_{tc} + L_{softmax}

λ\lambda是調整TCL對訓練過程影響的超參數。最後的實驗有如何選擇和調整λ\lambda的實驗和驗證。

本文用MVCNN做基本框架,大體流程爲
這裏寫圖片描述

與triplet loss和center loss的比較

  • triplet loss
    • TCL的三元數只考慮樣本、所屬類中心、最近鄰類的中心。對於N個樣本的數據集,只需要建立N個triplets,而triplet loss的複雜度達到O(N3)O(N^3),避免了建立triplets的複雜度和mining hard samples的難度
  • center loss
    • TCL同時增加了類內數據的緊實度(compactness)和類間的分離度(separability),避免了類間重疊,並且可以和softmax loss分離,更加易於訓練。

這裏寫圖片描述
通過實驗的可視化效果,可以看到TCL和softmax loss結合效果要明顯好一些,類間距離更遠,類內距離更近。

實驗

作者用ModelNet40 和ShapeNet Core 55數據集做的實驗,實驗做的很全,包括λ\lambda的選取、不同損失函數的比較,不同數據集的比較、不同域間的比較、還和model-based 方法比較了一下。具體實驗設置和配置參數建議看論文,寫起來太多了。

總結

實驗結果看起來還是很好的,並且有可視化效果,但是用到的數據集都是CAD模型渲染出來的虛擬數據,背景單一,特徵也都比較好提取,所以訓練過程會簡單點,如果加入噪聲過多可能可視化效果就不會這麼好了(猜測)
如果知道數據集的類間空間關係的話,也許可以把空間關係作爲center的一個監督信息,使得類間關係和真實的空間關係一致,也許對於視角估計之類的任務有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章