pointnet2
PointNet++ 是由斯坦福大学团队研发的深度学习架构,专为处理度量空间中的三维点云数据而设计。作为 PointNet 的升级版,它主要解决了早期模型难以捕捉点云局部空间结构以及无法有效应对自然点云密度不均匀的难题。
传统方法往往独立处理单个点或仅关注全局特征,忽略了点与点之间的邻近关系。PointNet++ 通过引入层级化的特征学习机制,模拟卷积神经网络的方式,从局部到全局逐层提取不同尺度的上下文信息。其独特的技术亮点在于设计了能够自适应聚合多尺度信息的特殊网络层,从而智能地处理疏密不一的点云分布,显著提升了在三维形状分类和分割任务上的精度。
这款工具非常适合从事计算机视觉、机器人感知及自动驾驶领域的研究人员和开发者使用。如果你需要基于 TensorFlow 构建高性能的三维深度学习模型,或者希望深入理解点云数据的层次化特征表达,PointNet++ 提供了完整的训练、测试及可视化代码,是探索三维几何深度学习的理想起点。
使用场景
某自动驾驶团队正在开发激光雷达感知系统,需要从杂乱的 3D 点云数据中精准识别行人、车辆及路障。
没有 pointnet2 时
- 忽略空间局部特征:传统方法或初代 PointNet 独立处理每个点或仅提取全局特征,无法捕捉物体表面的细微几何结构(如车轮弧度、行人肢体),导致小目标漏检率高。
- 难以应对密度不均:激光雷达扫描产生的点云近密远疏,固定尺度的算法在稀疏区域特征提取失效,造成远处障碍物识别模糊。
- 分类精度瓶颈:由于缺乏层级化的上下文信息聚合,模型对复杂场景下的物体分类准确率停滞不前,难以满足 L4 级自动驾驶的安全标准。
使用 pointnet2 后
- 层级化特征学习:pointnet2 模拟卷积神经网络的层级结构,逐步扩大感受野,能精准捕捉从局部边缘到整体形状的深层几何特征,显著提升小目标检测能力。
- 自适应多尺度聚合:其特有的分层采样与分组层能智能适应点云的非均匀密度,确保无论是近处密集点还是远处稀疏点,都能提取出鲁棒的特征表示。
- 分割与分类双提升:在 ModelNet40 等基准测试及实际路测中,pointnet2 凭借对度量空间局部性的尊重,将物体分类和部件分割的精度推向了新高度,大幅降低误报率。
pointnet2 通过引入深度层级特征学习机制,彻底解决了非均匀 3D 点云中局部细节丢失的难题,成为高精度三维感知任务的核心基石。
运行环境要求
- Linux (Ubuntu 14.04)
必需 (NVIDIA GPU),需安装 CUDA 以编译自定义算子,具体显存和 CUDA 版本未说明 (基于 TF1.2 测试)
未说明

快速开始
PointNet++:度量空间中点集的深度层次特征学习
由斯坦福大学的 Charles R. Qi、Li (Eric) Yi、Hao Su 以及 Leonidas J. Guibas 共同创建。

引用
如果您在研究中使用了我们的工作,请考虑引用:
@article{qi2017pointnetplusplus,
title={PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space},
author={Qi, Charles R and Yi, Li and Su, Hao and Guibas, Leonidas J},
journal={arXiv preprint arXiv:1706.02413},
year={2017}
}
简介
本工作基于我们在 NIPS'17 上发表的论文。您可以在 这里找到该论文的 arXiv 版本,或访问 项目主页以获取快速概览。PointNet++ 是一个后续项目,它建立并扩展了 PointNet。它是 PointNet 架构的 2.0 版本。
PointNet(v1 模型)要么独立地转换单个点的特征,要么处理整个点集的全局特征。然而,在许多情况下,存在明确的距离度量,例如由 3D 传感器采集的 3D 点云中的欧氏距离,或等距形状表面等流形上的测地线距离。在 PointNet++ 中,我们希望尊重这些点集的空间局部性。PointNet++ 学习具有不断增加上下文尺度的层次特征,就像卷积神经网络一样。此外,我们还观察到一个在图像卷积网络中不存在的挑战——自然点云中的非均匀密度。为了应对这些非均匀密度,我们进一步提出了能够智能地从不同尺度聚合信息的特殊层。
在这个仓库中,我们发布了 PointNet++ 分类和分割网络的代码和数据,以及一些用于训练、测试、数据处理和可视化的实用脚本。
安装
安装 TensorFlow。代码已在 Ubuntu 14.04 上的 TF1.2 GPU 版本和 Python 2.7(版本 3 也应适用)下进行了测试。此外,还有一些用于数据处理和可视化的 Python 库依赖,如 cv2、h5py 等。强烈建议您拥有 GPU。
编译自定义 TF 运算符
TF 运算符包含在 tf_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_gpus 2
训练完成后,要评估分类准确率(可选多角度投票):
python evaluate.py --num_votes 12
补充说明: 对于我们在论文中报告的 XYZ+法线实验:(1) 使用了 5000 个点,(2) 在训练过程中进一步使用了随机数据丢弃增强(参见 train.py 中 augment_batch_data 后面的注释行),以及 (3) 更新了模型架构,将前两个集合抽象层中的 nsample=128 调整为更适合 5000 点采样中较高点密度的设置。
要使用法线特征进行分类:您可以从 这里(1.6GB)获取我们采样的 ModelNet40 点云数据(XYZ 和来自网格的法线,每种形状 10k 个点)。将解压后的数据文件夹移动到 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 文件。或者您也可以参考 modelnet_dataset.py,了解如何读取原始数据文件并从中准备小批量数据。更高级的方法是使用 TensorFlow 的数据集 API,有关更多文档,请参阅 这里。
许可证
我们的代码根据 MIT 许可证发布(详情请参阅 LICENSE 文件)。
更新
- 2018年2月23日:增加了对分类任务的多 GPU 训练支持。
- 2018年2月23日:采用了新的数据加载方式。不再需要手动下载数据即可训练分类网络。
- 2018年2月6日:添加了 ScanNet 语义分割的示例训练代码。
相关项目
- PointNet:面向3D分类与分割的点云深度学习,作者为Qi等人(CVPR 2017口头报告)。代码和数据已在GitHub上公开。
- 基于RGB-D数据的3D目标检测——Frustum PointNets,作者为Qi等人(CVPR 2018)。这是一种新颖的RGB-D数据3D目标检测框架。该方法首先利用RGB图像上的2D目标检测器生成2D框,然后将这些2D框对应的深度图扩展为3D空间中的点云,再通过PointNet/PointNet++实现实例分割和3D边界框估计。所提出的方法在KITTI 3D目标检测基准测试的所有类别中均取得第一名(最后核实日期为2017年11月30日)。代码和数据的发布时间待定。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器