点云配准 pointdsc PointNet + Concat + FC

目录

pointdsc网络   听同事说这个网络不错。

点云配准 PointNet + Concat + FC

 PointNet++改进点


pointdsc网络   听同事说这个网络不错。

依赖项目

MinkowskiEngine v0.5.0

不支持Windows系统,

if you also want to use FCGF as the 3d local descriptor, please install MinkowskiEngine v0.5.0

linux安装:

# install system requirements
sudo apt install build-essential python3-dev libopenblas-dev

# Skip if you already have pip installed on your python3
curl https://bootstrap.pypa.io/get-pip.py | python3

# Get pip and install python requirements
python3 -m pip install torch numpy ninja

git clone https://github.com/NVIDIA/MinkowskiEngine.git

cd MinkowskiEngine

python setup.py install
# To specify blas, CXX, CUDA_HOME and force CUDA installation, use the following command
# export CXX=c++; export CUDA_HOME=/usr/local/cuda-11.1; python setup.py install --blas=openblas --force_cuda

点云配准 PointNet + Concat + FC

原文:

基于深度学习的点云配准Benchmark_3D视觉工坊的博客-CSDN博客

这个推荐有几个:

汇总|3D点云分割算法 - 知乎

最近几年,基于深度学习的点云配准算法不断被提出,包括PointNetLK[1],Deep ICP[2],DCP[3],PRNet[4],IDAM[5],RPM-Net[6],3DRegNet[7],DGR[8]等。这些网络在ModelNet40,Kitti,或3DMatch数据集上进行试验,其性能与速度均超过了传统的ICP算法。这些算法或者网络结构较为复杂,或者结果难以复现,对于把深度学习应用到点云配准的初学者而言,不是很友好。这里结合自己的感触和最近阅读的PCRNet[9] (两者不谋而合),介绍一种非常简单的点云配准网络,或许它的结果不如前面提到的DCP, 3DRegNet等效果好,但其简洁易懂,且效果在ModelNet40上仍优于ICP,速度快于ICP。

本文将要介绍的网络是基于PointNet + Concat + FC的,它没有其它复杂的结构,易于复现。因其简洁性,这里暂且把其称作点云配准的Benchmark。因作者源码中复杂的(四元数, 旋转矩阵, 欧拉角之间)的变换操作和冗余性,且其PyTorch版本的不完整性(缺少评估模型等,最近又更新了),于是根据自己的理解,从头撸了一遍整个模型: 数据,网络,评估,训练,测试,可视化等操作,代码已开源:

https://github.com/zhulf0804/PCReg.PyTorch

实验的数据为不带有normal信息的ModelNet40,下载地址:https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip。训练集中包括9840个样本,测试集中包括2468个样本,每个样本均包括2048个数据点。

效果图 

 PointNet++改进点

PointNet因为是只使用了MLP和max pooling,没有能力捕获局部结构,因此在细节处理和泛化到复杂场景上能力很有限。

我总结的PointNet的几个问题:

  1. point-wise MLP,仅仅是对每个点表征,对局部结构信息整合能力太弱 --> PointNet++的改进:sampling和grouping整合局部邻域
  2. global feature直接由max pooling获得,无论是对分类还是对分割任务,都会造成巨大的信息损失 --> PointNet++的改进:hierarchical feature learning framework,通过多个set abstraction逐级降采样,获得不同规模不同层次的local-global feature
  3. 分割任务的全局特征global feature是直接复制与local feature拼接,生成discriminative feature能力有限 --> PointNet++的改进:分割任务设计了encoder-decoder结构,先降采样再上采样,使用skip connection将对应层的local-global feature拼接

更详细的,参考博客:

搞懂PointNet++,这篇文章就够了! - 知乎

PointNet++的网络大体是encoder-decoder结构

encoder为降采样过程,通过多个set abstraction结构实现多层次的降采样,得到不同规模的point-wise feature,最后一个set abstraction输出可以认为是global feature。其中set abstraction由sampling,grouping,pointnet三个模块构成。

decoder根据分类和分割应用,又有所不同。分类任务decoder比较简单,不介绍了。分割任务decoder为上采样过程,通过反向插值和skip connection实现在上采样的同时,还能够获得local+global的point-wise feature,使得最终的表征能够discriminative

因此在往下看之前,我们最好带着2个问题:

  1. PointNet++降采样过程是怎么实现的?/PointNet++是如何表征global feature的?(关注set abstraction, sampling layer, grouping layer, pointnet layer)
  2. PointNet++用于分割任务的上采样过程是怎么实现的?/PointNet++是如何表征用于分割任务的point-wise feature的?(关注反向插值,skip connection)
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值