簡單記一下最近看的六篇場景流論文~其中3篇是關于RGBD圖像的場景流,另外3篇是關于點云的場景流。
來源:https://zhuanlan.zhihu.com/p/85663856
作者:林小北
所謂場景流,就是光流的三維版本,表述了圖像/點云中每個點在前后兩幀的變化情況。目前對場景流的研究還局限在實驗室階段,由于缺乏實際數據(打標成本太高)以及客觀的評價指標,離工程應用還有不小的距離。此外,巨大的計算量也是一個瓶頸。以下論文可以在文末直接下載。
《Deep Rigid Instance Scene Flow》 CVPR 2019
輸入:雙目攝像頭的前后幀左右圖像
核心思想:把場景流分割成多個actor的運動,利用MaskRCNN進行Instance Segmentation,每個Instance的Motion都應該與深度和光流一致。
首先,利用三個預先訓練好的子網絡提取視覺線索:
a. 利用MaskRCNN進行Instance Segmentation
b. 利用PSM-Net計算深度圖(disparity map)
c. 利用PWC-Net計算光流
之后,采用高斯牛頓法最小化下面三個能量函數之和得到3D motion:
a. Photometric Error:前一幀左邊圖像的inlier像素點,與第二幀的投影位置的像素點必須盡量一致
b. Rigid Fitting:估計出的剛體運動必須與觀察到的深度和光流信息一致
c. Flow Consistency:估計出的剛體運動在2d上的投影必須和光流一致
《Learning Rigidity in Dynamic Scenes with a Moving Camera for 3D Motion Field Estimation》 ECCV 2018
輸入:前后幀圖像的RGBD信息
核心思想:把圖像分割為rigid/no-rigid區域,計算rigid區域的ego motion后再結合光流即可得到scene flow。
先利用兩個預先訓練好的子網絡提取特征:
a. 利用PWCNet提取前后兩幀的光流
b. 利用 rigidity-transform network (RTN)預測ego-motion以及rigidity mask
之后,結合光流、rigidity mask對ego motioon進行refine,保證rigity里面的像素點的光流與ego-motion一致。
最后,綜合利用光流、rigidity mask、ego motioon信息即可得到scene flow。
備注:本文的另一個貢獻是提出了一個用于場景流的數據庫REFRESH。在kitti的inference結果如下,不是很好。
《Every Pixel Counts ++: Joint Learning of Geometry and Motion with 3D Holistic Understanding》TPAMI
輸入:單目/雙目攝像頭的前后幀圖像
核心思想:先用三個子網絡估計光流、深度、camera motion,送入holistic 3D motion parser (HMP) 按照幾何關系即可計算出rigid background的motion和moving objects的motion。
三個子網絡先分別進行預訓練,再結合HMP考慮如下loss優化三個子網絡:
a. Rigid-aware structural matching:按照3D motion投影后rigid部分的結構特點應該match
b. Edge-aware local smoothness:投影后的深度和光流的應該保持smoothness
c. Rigid-aware 3D motion consistency:rigid background的moving object motion值應該盡量小
d. Flow motion consistency in occluded regions:occluded regions的光流前后映射應該一致
e. Multi-scale penalization:累加4個尺度的loss
備注:在雙目攝像頭的表現優于單目。通過joint learning,光流、深度、camera motion的表現均有提升。
在Kitti上的表現如下,算是差強人意吧。
本文作者還有一篇工作《Every Pixel Counts: Unsupervised Geometry Learning with Holistic 3D Motion Understanding》,是關于估計ego motion的。
《FlowNet3D: Learning Scene Flow in 3D Point Clouds》 CVPR 2018
輸入:僅使用點云數據
核心思想:采用pointnet++作為基本模塊,提取前后兩幀點云特征并進行融合、上采樣,直接擬合出scene flow
網絡結構如下:
a. 4組set conv layer:pointnet++ 提取點云特征
b. 1組flow embedding layer: 把前后兩幀的點云特征mix,第一幀的取中心點,其臨近點從第二幀取,再提取特征
c. 4組set upconv layer:上采樣,新增點從鄰近點獲取特征
loss為smooth L1 loss
備注:在合成數據集上訓練的模型可以直接在kitti上work,但與圖像場景流的論文不同,沒有把background和moving object做區分,沒有考慮ego motion。
《HPLFlowNet: Hierarchical Permutohedral Lattice FlowNet for Scene Flow Estimation on Large-scale Point Clouds》 CVPR 2019
輸入:僅使用點云數據
核心思想:采用Bilateral Convolutional Layers作為基本模塊,提取前后兩幀點云特征并進行融合、上采樣,直接擬合出scene flow。
備注:與FlowNet3D的整體結構一樣,都是下采樣-融合-上采樣。Bilateral Convolutional Layers能夠快速處理高維稀疏數據,是不同于PointNet的一種濾波操作。
《PointFlowNet: Learning Representations for Rigid Motion Estimation from Point Clouds》 CVPR 2019
輸入:僅使用點云數據
核心思想:利用點云數據提取特征后,分別生成ego motion、scene flow、rigid motion、objection location,再整合結果輸出
細節如下:
a. 采用VolexNet作為feature encoder
b. 把前后兩幀的特征進行concate,接入context encoder
c. 之后,接入三個分支:
i. ego-miotion regressor
ii. sceneflow decoder -> rigid motion decoder(證明了rigid motion decoder 無法使用卷積層,故此處采用了fc)
iii. objection location decoder
d. 把檢測出的object和motion融合得到結果
loss為 Scene Flow Loss + Rigid Motion Loss + Ego-motion Loss + Detection Loss
備注:本文思路與圖像類方法很像,也是考慮各個instance的motion。
總結
- Deep Rigid Instance Scene Flow:
輸入為雙目圖像,用MaskRCNN把動靜態障礙物分開。三個子網絡分別獨立訓練并計算出Instance Segmentation、深度圖、光流,利用三個子網絡的結果計算motion,進而得到scene flow。
- Learning Rigidity in Dynamic Scenes with a Moving Camera for 3D Motion Field Estimation:
輸入為RGBD圖像,兩個子網絡分別獨立訓練并算出光流、ego-motion&rigid mask,refine ego motion后算出scene flow。
- Every Pixel Counts ++:
輸入為單目/雙目攝像頭,先用三個子網絡估計光流、深度、camera motion,再按照幾何關系計算出rigid background的motion和moving objects的motion,之后根據一致性對三個子網絡進行優化。
- FlowNet3D 以及 HPLFlowNet:
分別對前后兩幀點云下采樣提取特征并進行融合、上采樣,直接擬合出scene flow。
- PointFlowNet(思路類似Deep Rigid Instance Scene Flow):
采用volexnet提取前后兩幀點云特征并融合,先檢測出object、計算出ego motion、scene flow,再去回歸各個object的motion。
審核編輯:符乾江-
AI
+關注
關注
87文章
31536瀏覽量
270353 -
人工智能
+關注
關注
1796文章
47683瀏覽量
240313
發布評論請先 登錄
相關推薦
評論