暴走兔學習了CVPR 2019的論文:《FlowNet3D: Learning Scene Flow in 3D Point Clouds》,爲了更好的理解該論文(年紀大了容易忘),在此做個總結性的閱讀筆記,爭取言簡意賅、簡單粗暴地描述出論文作者們所作的工作,如果能對相關研究方向的小夥伴有借鑑意義,那就更好了。不喜勿噴,直接移步就好了~
項目地址:https://github.com/xingyul/flownet3d
一句話介紹:
FlowNet3D----是一種點雲的端到端的場景流估計網絡,能夠直接從點雲中估計場景流。
輸入:連續兩幀的原始點雲;
輸出:第一幀中所有點所對應的密集的場景流。
如圖所示:
flownet3d網絡爲第一幀中的每個點估計一個平移流向量,以表示它在兩幀之間的運動。
FlowNet3D架構
如圖所示(圖是從論文截的,試了幾次也不知道怎麼去掉博客水印,抱歉啊),該模型具有三個關鍵模塊,分別爲:
(1)點特徵學習(point feature learning)-- 作用:分層點雲特徵學習。
(2)點混合(point mixture)--作用:混合兩個點雲。
(3)流細化(flow refinement)--作用: 將與中間點關聯的流嵌入上採樣到原始點,並在最後一層預測所有原始點的流。
向上採樣的步驟是通過一個可學習的新層--set upconv層來實現的。
點雲處理層
在這些模塊下是三個可訓練的點雲處理層:
4個set conv層--作用: 學習深度點雲功能;
1個flow embedded層--作用: 流嵌入層,學習兩個點雲之間的幾何關係,推斷運動;
4個set upconv層(對應於四個set conv層)--作用: 以一種可學習的方式向上採樣和傳播點特性。
每個可學習層對函數h採用多層感知器,用幾個線性層寬來參數化Linear-BatchNorm-ReLU層。詳細的層參數如表1所示。
(這個表格也是論文中的,同不知道怎麼去博客水印,抱歉)
因爲點雲自身的不規則性和無序性,傳統的用於2d圖像的卷積並不適合對其進行直接處理。在2017年,學術界提出了pointnet以及後來改進的pointnet++,是可以直接處理3d點雲的神經網絡,所以這篇論文是延用了pointnet++的網絡結構。
<具體公式這裏就不貼了,請移步論文看公式>
數據集
FlyingThings3D及kitti
額,FlyingThings3D的這些數據集中,有一個100G的,一個80多G的,我下了半個月還沒下完,下載鏈接爲:
https://lmb.informatik.uni-freiburg.de/resources/datasets/SceneFlowDatasets.en.html
數據集由stereo和從ShapeNet中採樣的具有多個隨機移動對象的場景中呈現的RGB-D圖像。
有大約32k的立體圖像與地面真視差和光流圖。作者們隨機選取2萬個作爲訓練集,2000個作爲測試集。不使用RGB圖像,而是通過視差圖到3D點雲和光流到場景流來預處理數據。
測試結果
在flying things3d數據集的測試結果
度量指標爲:
端點誤差(End-point-error, EPE)
流量估計精度(Acc)(<0.05或5%,<0.1或10%)。
<補充說明:EPE(endpoint error):評價光流法的一種方法。
指所有像素點的gound truth和預測出來的光流之間差別距離(歐氏距離)的平均值,越低越好。>
在KITTI場景流數據集上的場景流估計。
度量指標爲:
EPE,ACC.
使用KITTI sceneflow數據集進行場景流估計。(前100幀用於調整我們的模型。所有方法都在剩下的50幀上求值。)