EC-Net: a Edge-aware Point set Consolidation Network
Brief Introduction
關于EC-Net 網絡的實現,以及相關技術,解決的問題,以及為解決的問題
論文鏈接:Lequan Yu EC-Net: an Edge-aware ECCV 2018 paper
視頻鏈接:GAMES Webinar 120期李賢芝(關于PU-Net,EC-Net 和 PU-GAN)
Detail
這個EC-Net是在基礎上提出來的改進網絡,目的是為了解決PU-Net在規則物體點云上采樣上無法檢測邊緣,導致物體棱角不平滑,呈現出不規則起伏的缺點。因此,李賢芝她們在這個網絡的基礎上,加上了一些額外的部分,并且在訓練數據上進行了改進,使得網絡不僅具有上采樣的能力,還可以在這個過程中將規則物體表面上缺失的邊緣點進行補充,使得在三維重建的時候可以得到更好的邊緣效果,以及更好的表面。
Point Consolidation 是一個對于增強3D重建最終輸出的質量來說非常重要的一個過程,可以提高點云表面點集包含的信息量,也就是說,通過point conoslidation我們可以得到一個更加rich的表面,這樣有助于我們生成一個具有更多sharp features的重建結果。
EC-Net是在PU-Net的基礎上進行的改進,在網絡設計上類似,但在特征提取方面都是采用和PU-Net相同的方式來進行提取的,不同的地方在于:
- 訓練數據的準備(Training Data Preparation)
- 點的擬合方法(Point Regression)
- 損失函數的設計
網絡的架構如下:
Figure.1 EC-Net 網絡架構圖
Training Data Preparation
使用Virtual Scan來產生訓練數據,可以產生類似real scan的線狀的點云效果,這是使用隨機降采樣的方式來得到訓練數據所不能做到的,可以更加貼合實際應用的upsampling,如下圖是論文給出的一個Virtual Scan 產生的一個瓶子,可以明顯地看到線狀的點的分布:
Figure.2 Virtual Scan 方法得到的礦泉水瓶
具體的方法是:
- 采用多個攝像機,來得到point cloud的depth map
- 然后在depth map上面加噪音
- back projection 回原來的 point cloud
最終得到論文所使用的訓練數據集
Point Regression
EC-Net 采用了不同于PU-Net的點的擬合方式,不是直接將得到的feature去到全連接層中來擬合出上采樣之后得到的點的坐標,而是通過這些特征來得到相對于原來點云位置的擾動,論文中稱為residual coordinate,然后將得到的擾動加到原來的坐標(復制了r份,因為是上采樣來得到的)。作者提到,比其直接擬合出點的坐標來說,擬合出相對于原來位置的擾動更加簡單。
Loss Function Design
損失函數的設計上,保留了原來的reconstruction loss,在這里稱為 surface loss,即保持了對點的約束,使得最后擬合出來的坐標保持在原來的表面上;另外一個是repulsion loss,懲罰那些堆積在一起的點,保證上采樣得到的點云盡可能的均勻。
此外,為了實現edge-aware的效果,EC-Net增加了幾個和邊緣檢測相關的損失函數:
- edge distance regression loss
- edge loss
作者在視頻中在回答提問的時候有講到,Edge-aware 的目的事實上就是為了解決一些點云數據中邊緣相關的點距離邊緣距離過大,導致三維重建的結果缺乏一些sharp feature,也就是一些邊緣相關的特征這樣的問題,因此設計損失函數的目標就是希望將這些表面中分布原理邊緣的點push到邊緣上,來擬合出邊緣相關的點,使得重建后的結果具備一些sharp feature,這就是上面兩個損失函數所要做的工作。
下面是兩個損失函數具體的方程,第一個是 edge distance regression loss:
Lregr=1N~∑1≤i≤N~[Γb(dE2(xi,E))?Γb(di)]L_{regr}=\frac{1}{\tilde N}\sum_{1\le i \le\tilde N}\left[ \varGamma_(d_{E}^{2}(x_{i}, E))-\varGamma_(d_{i})\right] Lregr?=N~1?1≤i≤N~∑?[Γb?(dE2?(xi?,E))?Γb?(di?)]
其中,Γb(x)=max?(0,min(x,b))\varGamma_(x)=\max(0,min(x,b))Γb?(x)=max(0,min(x,b)),這個損失將會引導網絡來得到surface上面的點到邊緣的距離,判斷這個距離是否小于設定好的閾值,如果小于閾值的話,則認為這個點是屬于邊緣的點,然后再通過下面這個 edge loss 損失函數,來鼓勵這些點向邊緣位置靠近:
Ledge=1N~edge∑1≤i≤N~edgedE2(xi,E)L_{edge}=\frac{1}{\tilde N_{edge}}\sum_{1\le i\le \tilde N_{edge}}d^{2}_{E}(x_{i},E) Ledge?=N~edge?1?1≤i≤N~edge?∑?dE2?(xi?,E)
其中,N~edge\tilde N_{edge}N~edge? 是邊緣上的點的個數。
Result
Figure.3 論文中給出的上采樣結果
(當然,這些都是較好的結果,事實上在一些數據上會有一些
Contribution
第一個利用 deep net 實現具有 edge-aware 的點云上采樣的方法
Consideration
這些閾值以及邊緣事實上都是事先在點云上面手工標注好的,因此在訓練的時候事實上還是采用PU-Net 中按patch 的方法來進行訓練的。而這也是這兩個網絡所存在的缺點,這兩個網絡面對較為大型的點云數據來說是無能為力的,一方面需要手工標注的數據過大,另外一方面,與此同時的訓練時間也過長,因此這兩個網絡都不適合應用于大型的點云數據的上采樣。這是講者點出的問題。
總結
以上是生活随笔為你收集整理的EC-Net: a Edge-aware Point set Consolidation Network的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【安全知识分享】ISO9001质量管理体
- 下一篇: GO相同文件夹下相同package不同文