官网:https://github.com/charlesq34/pointnet2

 

 

 

 

 

简介
这项工作是基于我们NIPS的17篇论文。你可以在这里找到arXiv版本的论文或检查项目网页的快速概述。

pointnet++是一个在PointNet基础上构建并扩展的后续项目。它是PointNet体系结构的2.0版本。

点网(v1模型)要么独立地转换单个点的特征,要么处理整个点集的全局特征。然而,在许多情况下,存在明确定义的距离度量,例如3D传感器收集的3D点云的欧几里得距离或等距形状曲面等流形的测地线距离。在pointnet++中,我们希望尊重这些点集的空间位置。pointnet++随着上下文规模的增加学习层次特征,就像卷积神经网络一样。此外,我们还观察到一个在convnet中不存在的挑战——自然点云的密度不均匀。为了处理这些不均匀的密度,我们进一步提出了能够智能聚合来自不同尺度的信息的特殊层。

在这个存储库中,我们发布了pointnet++分类和分割网络的代码和数据,以及一些用于训练、测试、数据处理和可视化的实用脚本。

安装

安装TensorFlow。该代码在TF1.2 GPU版本和Python 2.7(版本3也应该可以工作)下在Ubuntu 14.04上测试。还有一些依赖于一些用于数据处理和可视化的Python库,如cv2, h5py等。强烈建议您使用gpu。

编译自定义TF操作符

TF操作符包含在tf_ops下,您需要首先编译它们(在每个ops子文件夹下检查tf_xxx_compile.sh)。如果需要更新nvcc和python路径。代码在TF1.2.0下测试。如果您使用的是较早的版本,您可能需要在g++命令中删除-D_GLIBCXX_USE_CXX11_ABI=0标志,以便正确编译。

要编译TF版本>=1.4中的运算符,需要稍微修改编译脚本。

首先,找到Tensorflow包含路径和库路径。

TF_INC=$(python -c 'import tensorflow as tf;print (tf.sysconfig.get_include ()))

TF_LIB=$(python -c 'import tensorflow as tf;print (tf.sysconfig.get_lib ()))

然后,在g++命令中添加-I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework的标志。

 

使用

形状分类

训练pointnet++模型来分类ModelNet40形状(使用具有XYZ坐标的点云):

python train.py

查看训练的所有可选参数:

Python train.py -h

如果你的机器上有多个gpu,你也可以运行多gpu版本训练(我们的实现类似于tensorflow cifar10教程):

CUDA_VISIBLE_DEVICES=0,1 python train_multi_gpu.py——num_gpu

训练后,评估分类精度(可选多角度投票):

Python evaluate.py——num_votes

附注:对于我们论文中报道的XYZ+正常实验:(1)使用了5000个点,(2)在训练期间使用了进一步的随机数据缺失增强(参见train.py中augment_batch_data后的注释行,以及(3)更新了模型架构,以便在前两个集合抽象级别中nsample=128,这适用于5000点采样中的较大点密度。

 

使用普通特征进行分类:您可以在这里获得我们的ModelNet40采样点云(XYZ和普通网格,每个形状10k点)(1.6GB)。将未压缩的数据文件夹移动到data/modelnet40_normal_resampled

 

对象部分分割

要训练模型以分割 ShapeNet 模型的对象部分,请执行以下操作:

    cd part_seg
    python train.py

预处理的 ShapeNetPart 数据集(XYZ、法线和零件标签)可在此处找到 (674MB)。将未压缩的数据文件夹移动到data/shapenetcore_partanno_segmentation_benchmark_v0_normal

语义场景解析

有关详细信息,请参阅和。scannet/READMEscannet/train.py

可视化工具

我们在 .运行以编译它,然后您可以尝试演示 原始代码来自这里utilssh compile_render_balls_so.shpython show3d_balls.py

准备您自己的数据

您可以参考此处了解如何准备自己的 HDF5 文件以进行分类或分割。或者,您可以参考如何读取原始数据文件并从中准备小批量。更高级的方法是使用 TensorFlow 的数据集 API,您可以在此处找到更多文档。modelnet_dataset.py

 

升级

  增 加 了 分 组 采 样(Sam⁃ pling & Grouping)的 操 作,使 得 PointNet++ 算 法 相对 PointNet 算法具备更好的点云局部特征提取 能力

 

posted on   黑逍逍  阅读(343)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!



点击右上角即可分享
微信分享提示