任务:输入两堆点云,输出每个点的三维光流(xyz)
采用递归神经网络和attention机制来迭代求解每次flow的增量。递归神经网络可以记忆之前的尝试过的历史经验(当前的预测值和当前的cost)来指导下一步增量的预测。每次迭代预测需要计算当前的cost,即找对应点然后计算特征距离。由于点云的稀疏原因,无法类似2d图像,不一定能找够找到匹配点,为次我们采用attention的机制利用一堆邻域点插值出匹配点。
该模型在FlyingThings3D仿真数据集上进行训练,可以用于点云的配准等任务中。
本模型主要用于点云的sceneflow求解。用户可以自行尝试各种输入点云的模型效果。具体调用方式请参考代码示例
在ModelScope里可以比较方便的使用
注意点:
1、目前只支持在GPU模式下使用
2、安装第三方依赖pointnet2++:
pip install git+https://github.com/gxd1994/Pointnet2.PyTorch.git@master#subdirectory=pointnet2
import numpy as np
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
input_location = ('data/test/pointclouds/flyingthings_pcd1.npy',
'data/test/pointclouds/flyingthings_pcd2.npy')
#input_location = ('rcp_test_data/flyingthings_pcd1.npy',
# 'rcp_test_data/flyingthings_pcd2.npy') # [N, 3]
estimator = pipeline(task=Tasks.pointcloud_sceneflow_estimation, model='damo/cv_pointnet2_sceneflow-estimation_general')
result = estimator(input_location)
flow = result[OutputKeys.OUTPUT]
pcd12 = result[OutputKeys.PCD12]
pcd12_align = result[OutputKeys.PCD12_ALIGN]
np.save('flow.npy', flow)
# visualization
pcd12.write('pcd12.ply')
pcd12_align.write('pcd12_algin.ply')
该模型在FlyingThings3D数据集上训练,有可能产生一些偏差,请用户自行评测后决定如何使用。
FlyingThings3D是一个合成数据集,由ShapeNet数据集中的多个随机采样移动对象的场景渲染而成。它包含大约32k个立体图像,包括地面真实视差和光流图
暂时不支持通过ModelScope接口进行训练,敬请期待。
我们按照之前的工作 HPLFlowNet来预处理数据集
1、下载FlyingThings3D数据,下载链接FlyingThings3D website 或者 FlyingThings3D download paths
2、解压后到 RAW_DATA_PATH 文件夹,然后使用HPLFlowNet提供的脚本进行预处理
python data_preprocess/process_flyingthings3d_subset.py --raw_data_path ${RAW_DATA_PATH} --save_path ${SAVE_PATH}/FlyingThings3D_subset_processed_35m --only_save_near_pts
暂不支持
Datasets | EPE3D | Acc3DS | AccDR | Outliers3D |
---|---|---|---|---|
FlyingThings3D | 0.0403 | 0.8567 | 0.9635 | 0.1976 |
KITTI | 0.0481 | 0.8491 | 0.9448 | 0.1228 |
如果你觉得这个该模型对有所帮助,请考虑引用下面的相关的论文:
@inproceedings{gu2022rcp,
title={RCP: Recurrent Closest Point for Point Cloud},
author={Gu, Xiaodong and Tang, Chengzhou and Yuan, Weihao and Dai, Zuozhuo and Zhu, Siyu and Tan, Ping},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={8216--8226},
year={2022}
}
该项目中一些代码来自于:Flowstep3d, FLOT, flownet3d_Pytorch, HPLFlowNet and Pointnet2.PyTorch,非常感谢他们开源了相关的工作。