#ICCV2019論文閱讀#Fully_convolutional_Features

一 知識背景算法

3D scan&cloud points(點雲)patch-based features,fully convolutional network, deep metric learning, sparse tensors,sparse convolutions, hard negetive-mining, contrastive loss, triplet loss, batch normalization...網絡

1.cloud points(點雲)架構

  「在逆向工程中經過測量儀器獲得的產品外觀表面的點數據集合也稱之爲點雲,一般使用三維座標測量機所獲得的點數量比較少,點與點的間距也比較大,叫稀疏點雲;而使用三維激光掃描儀或照相式掃描儀獲得的點雲,點數量比較大而且比較密集,叫密集點雲,框架

點雲是在和目標表面特性的海量點集合。根據激光測量原理獲得的點雲,包括三維座標(XYZ)和激光反射強度(Intensity)。根據攝影測量原理獲得的點雲,包括三維座標(XYZ)和顏色信息(RGB)。
結合激光測量和攝影測量原理獲得點雲,包括三維座標(XYZ)、激光反射強度(Intensity)和顏色信息(RGB)。在獲取物體表面每一個採樣點的空間座標後,獲得的是一個點的集合,稱之爲「點雲」(Point Cloud)。點雲的格式:; *.pts; *.asc ; *.dat; *.stl ;*.imw;*.xyz;。」
-----from 百度百科。
2.patch-based features
即基於一塊數據的特徵。
3.fully convolutional networks
具體可參見Long[2014]年的論文 FCN,還可參見這篇博客 CSDN_Blog。簡單的說,Long等人將傳統CNN網絡如AlexNet, VGGNet的後幾個全鏈接層所有改裝成卷積層,由於Long提到全鏈接層能夠看做卷積核覆蓋整個輸入的卷積(」these fully connected layers can also be viewed as convolutions with kernels that cover their entire input regions."),這種轉換很是有效的提高了計算效率,由於它沒必要重複的計算重疊的patch上的卷積。
4 deep metric learning(深度度量學習
如何有效的度量物體間的類似性?若是經過使用深度學習的方法去學習到這種度量的策略便是deep metric learning。現有的依賴對比(contrastive loss)和三元組損失(triplet loss),因爲正負樣本可組合的數量極多,所以人們多采用僅對訓練有意義的正負樣本採樣,也被稱爲「難例挖掘」(hard negative mining)。可參考 這篇綜述。綜述裏包括了對 hard negetive-mining, contrastive loss, triplet loss的解釋說明。
5.hard negative mining(難例挖掘)
參見此知乎回答。大量的簡單負例會使真正的對訓練有意義的難例的梯度被「淹沒」。難例挖掘就是在訓練時,儘可能多挖掘其難負例加入負樣本集,這樣比easy negative組成的負樣本集更好。[具體的R-CNN中的hard negative mining]。
6.sparse tensors和做者定義的generalized(廣義)sparse convolution
在做者的工做中的3D data是對物體表面的3D掃描。在這樣的3D空間中,大部分的空間是empty的。爲了解決這種高維的稀疏矩陣,論文做者用sparse tensor,一個sparse tensor能夠用一個矩陣Matrix去表示其座標,另外一個矩陣'向量'表明其特徵(Features):

 

 

接着做者定義了廣義的稀疏卷積。係數卷積不是第一次出現,做者在這裏只是描述。不過做者這種定義方法確實不容易理解,個人意思是所用的數學公式。如圖所示。

 

 

 在稀疏的卷積中和權值${W}$相乘的${x}$必須在${C}$中,這樣的係數卷積獲得的也是一個稀疏的結果。文中的${V^(3){-1,0,1}}$我以爲其中的元素沒必要是固定的${{-1,0,1}}$,若是非要是這樣,卷積(相關)就沒法計算了(這也是我在閱讀時遇到的困惑)。固然最主要的仍是要在code中去實現這個係數卷積。[接下來的時間我會探索一下]。ide

文章正文:函數

從3D掃描或者是點雲上提取幾何特徵是許多工做的第一步。例如註冊(registration),重建(reconstruction)和跟蹤(tracking)。現今的(state of art)方法須要將低階(low-level)的特徵做爲輸入來計算。性能

「低層次特徵提取算法基於興趣點所在表面及臨近點的空間分佈,提取基本的二維、三維幾何屬性做爲興趣點特徵信息,如線性、平面性等。低層次特徵提取算法複雜度低、運算效率高、內存消耗少,但領域尺寸的選擇對識別效果影響較大。」學習

 「高層次特徵提取算法基於低層次幾何特徵及臨近點空間分佈,定義並計算更復雜的幾何屬性做爲特徵信息。根據幾何屬性的定義又可細分爲基於顯著性、基於直方圖、基於顯著性直方圖與基於其餘特徵的四大類提取算法[1][2]。」spa

 或者是基於有限感知域的塊特徵。在該文章中做者提出了有3D全卷積網絡計算得來的一種全卷積的幾何特徵。同時做者提出了一個metric learning 的損失函數,這個損失函數極大的提升了算法的性能。
接着做者吹捧了一波本身的全卷積幾何特徵,說這種特徵是很緊湊(compact),而後能結合很大的空間的上下文的信息,並且可以拓展到很大的場景(scenes)。接着說這種特徵不須要預處理(preprocessing),在室內和室外的數據集上比以前最精確的方法快290倍,並且本身的特徵維數只有32維哦~
給張圖感覺下全卷積特徵的「統治力」:

 

 這裏說明下指標:recall 中文叫查全率又叫召回率,其計算公式以下:.net

$recal{l_c} = \frac{{T{P_c}}}{{T{P_c} + F{N_c}}}$

意思是某一類判斷正確佔到該類總數的百分比。理所固然的想要提高recall能夠遵循「寧肯錯殺一百,不可放過一人」的思想。嘿嘿~

接着咱們給出做者用的網絡框架:

 

 這是一個ResUNet的架構,兩個白框是輸入輸出層,每一個塊用三個參數來描述:kernel size, stride, channel dimensionality.(核大小,步幅,和通道維度)除了最後一層其餘的卷積層後面都有Batch normalization而後跟一個非線性(Relu).

那說了半天啥是全卷積特徵啊?

 

 全卷積特徵做者說了:

 

 我給你翻譯翻譯:

全卷積網絡純粹的由具備平移不變性的操做組成,像卷積和元素級別的非線性。(我不懂啥是元素級別的非線性啊?)一樣,咱們吧稀疏卷積網絡(注這裏是由於他用的稀疏卷積因此將這個網絡將spase convolution network)給一個稀疏的tensor用上,咱們獲得的也是個稀疏的tensor,咱們把這個稀疏的tensor輸出叫作全卷積特徵。

OK。

重頭戲來了,嘿嘿~

做者本身說本身搞了個新的Metric learning的新的損失函數。在看他的新傢伙式兒以前,咱們不妨回顧下他站在誰的肩膀上搞了個大新聞。。

在前面的背景知識裏有提到,就是negative mining 和標準的metric learning 的損失函數。這個做者說本身用全卷積網絡了搞了個metric learning,並且還把negative mining整合到對比損失函數和三元組損失函數裏了,他本身把整合後的這個新的損失函數叫作「Hardest contrastive"和」hardest-triplet"

網絡:「我太難了(哭腔)"。

好言歸正傳,想要搞metric learning必須遵循兩個約束,一個是相似的特徵必須和彼此之間挨的足夠近,對於分類來講,確定是越近越好,那麼有

$D({{f}_{i}},{{f}_{j}})\to 0\forall (i,j)\in P$

啥意思?${P}$是正確配對feature-match成功的特徵,${(i,j)}$是其中的一個組合。相反的不類似的特徵必然挨的越遠越好,那咱們就給他一個警惕線稱之爲margin(注:margin在英語裏由差距,差額之意)用數學來講就是

$D({{f}_{i}},{{f}_{j}})>m\forall (i,j)\in N$

這裏的${D}$是一種距離的衡量手段,原文沒說啥距離,我以爲應該能夠用歐氏距離。

文章說Lin等人說這些對於正例的約束會致使網絡過擬合,而後搞出個針對正例的基於margin的損失函數。式子裏右下角的+號表明着大於0時就取這個值,不然就取0。說實話,我由於一直吧這裏邊的${I_{ij}}$當是個示性函數,覺得根據後邊中括號裏邊的東西來取值,一直沒搞懂,後來偶來見發現tm這兩貨是分開的。我真想吐槽這做者。。

做者的對正例加了個margin的約束後,能夠解決網絡過擬合的現像。

接着又弄個三元組(triplet loss)損失,我一併給出原文,瞅瞅:

 在許多的文獻了這篇文章後邊也用了,這(4)裏邊的這個${f}$叫作anchor(中文名叫錨)而${f_+}$表明正例裏邊的元素。帶負號的就不難說了。

在negative mining裏邊就說了,網絡的性能會被小部分」人"左右,是誰呢?就是那些對於網絡來講很是難啃的硬骨頭——「hardest negatives"

接着做者討論一個容易被人忽視,但卻相當重要的存在:全卷積特徵的特性

傳統的Metric learning 認爲特徵是獨立同分布的(iid),爲啥?做者說了:

 

由於batch是隨機採樣來的。

這裏須要和你們回顧下啥是epoch,batch,iteration???

  • epoch:表明在整個數據集上的一次迭代(全部一切都包含在訓練模型中);
  • batch:是指當咱們沒法一次性將整個數據集輸入神經網絡時,將數據集分割成的一些更小的數據集批次;
  • iteration:是指運行一個 epoch 所需的 batch 數。舉個例子,若是咱們的數據集包含 10000 張圖像,批大小(batch_size)是 200,則一個 epoch 就包含 50 次迭代(10000 除以 200)。

雖然說基礎,但也要溫故而知新嘛~

然而,然而...

在全卷積特徵的提取過程當中,相鄰特徵的位置是相關的。(我也不懂...)

相關文章
相關標籤/搜索