官网: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/README
scannet/train.py
可视化工具
我们在 .运行以编译它,然后您可以尝试演示 原始代码来自这里。utils
sh compile_render_balls_so.sh
python show3d_balls.py
准备您自己的数据
您可以参考此处了解如何准备自己的 HDF5 文件以进行分类或分割。或者,您可以参考如何读取原始数据文件并从中准备小批量。更高级的方法是使用 TensorFlow 的数据集 API,您可以在此处找到更多文档。modelnet_dataset.py
升级
增 加 了 分 组 采 样(Sam⁃ pling & Grouping)的 操 作,使 得 PointNet++ 算 法 相对 PointNet 算法具备更好的点云局部特征提取 能力
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!