RandLA-Net

GitHub
1.5k 335 较难 1 次阅读 2天前NOASSERTION图像其他
AI 解读 由 AI 自动生成,仅供参考

RandLA-Net 是一款专为大规模 3D 点云数据设计的高效语义分割深度学习模型。在自动驾驶、智慧城市建模及机器人导航等领域,处理包含数百万甚至数十亿个点的大型 3D 场景时,传统方法往往面临计算资源消耗巨大、处理速度慢的难题。RandLA-Net 正是为了解决这一痛点而生,它能够在保持高精度的同时,显著提升对超大尺度点云的处理效率。

该工具特别适合从事计算机视觉研究的研究人员、需要部署 3D 感知算法的开发者,以及关注空间智能应用的技术团队使用。其核心技术创新在于引入了“随机采样”策略与“局部特征聚合”模块。不同于以往依赖复杂且耗时的下采样方法,RandLA-Net 通过随机选取关键点,并利用轻量级的神经网络层层累积局部几何特征,从而以极低的计算成本捕捉到丰富的细节信息。作为 CVPR 2020 的口头报告论文成果,它在 Semantic3D 和 S3DIS 等权威数据集上均取得了领先的性能表现,并提供了基于 TensorFlow 的官方开源实现,方便用户快速复现结果或进行二次开发,是探索高效 3D 场景理解的有力工具。

使用场景

某智慧城市测绘团队正利用车载激光雷达采集的数亿级点云数据,构建城市级三维语义地图以支持自动驾驶仿真测试。

没有 RandLA-Net 时

  • 显存爆炸导致无法运行:传统点云网络需要密集采样或分块处理,面对城市级大规模点云时,GPU 显存迅速溢出,迫使团队将数据切割成无数小块,破坏了场景的整体上下文信息。
  • 细节特征严重丢失:为了降低计算量而采用的过度下采样策略,导致路灯、交通标志等细小但关键的物体几何特征被抹除,分割精度大幅下降。
  • 推理速度无法满足实时性:处理单帧大规模点云耗时过长,无法支持自动驾驶系统所需的实时环境感知与动态更新需求。
  • 工程部署极其复杂:现有的高效方案往往依赖复杂的预处理流水线或特制的硬件加速,增加了算法落地到边缘计算设备的难度。

使用 RandLA-Net 后

  • 直接处理海量原始数据:RandLA-Net 凭借轻量级的局部特征聚合机制,无需繁琐的分块即可直接在整幅大规模点云上运行,完整保留了城市场景的全局空间结构。
  • 精准识别微小目标:其独特的随机采样结合局部特征学习策略,在大幅降低计算量的同时,依然能敏锐捕捉并准确分类电线杆、路沿等细微结构。
  • 实现高效实时推理:架构设计极度精简,显著提升了前向传播速度,使得在大规模场景下的语义分割能够接近实时完成,满足动态建图需求。
  • 简化部署流程:作为端到端的简单神经网络,RandLA-Net 减少了对复杂预处理和后处理的依赖,更易于集成到现有的自动驾驶感知栈中。

RandLA-Net 通过创新的随机采样与局部特征聚合技术,完美解决了大规模点云处理中“效率”与“精度”难以兼得的行业痛点。

运行环境要求

操作系统
  • Linux
GPU

需要 NVIDIA GPU,CUDA 9.0,cuDNN 7.4.1(具体显存大小未说明,但处理大数据集建议高显存)

内存

推荐 64GB+(特别是处理 Semantic3D 数据集时)

依赖
notes代码已在 Ubuntu 16.04 上测试通过。处理 Semantic3D 数据集时需要安装 p7zip-full 来解压数据。建议使用 conda 创建虚拟环境。对于大规模点云数据处理,强烈建议使用超过 64GB 的内存。
python3.5
tensorflow==1.11
cuda==9.0
cudnn==7.4.1
RandLA-Net hero image

快速开始

PWC PWC License CC BY-NC-SA 4.0

RandLA-Net: 大规模点云的高效语义分割(CVPR 2020)

这是RandLA-Net(CVPR2020,口头报告)的官方实现,它是一种简单高效的神经网络架构,用于大规模3D点云的语义分割。有关技术细节,请参阅:

RandLA-Net:大规模点云的高效语义分割
胡庆勇(Qingyong Hu)1, 杨博*(Bo Yang)2, 谢林海(Linhai Xie)3, 斯特凡诺·罗萨(Stefano Rosa)4, 郭玉兰(Yulan Guo)5, 王志华(Zhihua Wang)6, 尼基·特里戈尼(Niki Trigoni)7, 安德鲁·马卡姆(Andrew Markham)8
[论文] [视频] [博客] [项目页面]

(1) 环境搭建

该代码已在Ubuntu 16.04系统上使用Python 3.5、TensorFlow 1.11、CUDA 9.0和cuDNN 7.4.1进行了测试。

  • 克隆仓库
git clone --depth=1 https://github.com/QingyongHu/RandLA-Net && cd RandLA-Net
  • 搭建Python环境
conda create -n randlanet python=3.5
source activate randlanet
pip install -r helper_requirements.txt
sh compile_op.sh

更新:2020年3月21日,预训练模型和结果现已可用。 您可以在这里下载预训练模型和结果。 请注意,如果您想使用预训练模型并快速体验我们的RandLA-Net,请在主函数中指定模型路径(例如main_S3DIS.py)。

(2) S3DIS

S3DIS数据集可以在此处找到: 链接。 下载名为“Stanford3dDataset_v1.2_Aligned_Version.zip”的文件,解压后将其移动到 /data/S3DIS

  • 准备数据集:
python utils/data_prepare_s3dis.py
  • 开始6折交叉验证:
sh jobs_6_fold_cv_s3dis.sh
  • /test文件夹中生成的所有结果(*.ply)移动到/data/S3DIS/results,计算最终的平均IoU结果:
python utils/6_fold_cv.py

S3DIS数据集上不同方法的定量结果(6折交叉验证):

a

我们RandLA-Net的定性结果:

2 z

(3) Semantic3D

解压该数据集中的原始数据需要7zip,安装p7zip:

sudo apt-get install p7zip-full
  • 下载并解压数据集。首先,请通过更改“download_semantic3d.sh”中的BASE_DIR来指定数据集路径。
sh utils/download_semantic3d.sh
  • 准备数据集:
python utils/data_prepare_semantic3d.py
  • 开始训练:
python main_Semantic3D.py --mode train --gpu 0
  • 评估:
python main_Semantic3D.py --mode test --gpu 0

Semantic3D(reduced-8)上不同方法的定量结果:

a

我们RandLA-Net的定性结果:

z z
z z

注意:

  • 由于点云数据量巨大,建议使用64G以上的内存来处理该数据集。

(4) SemanticKITTI

SemanticKITTI数据集可以在此处找到:链接。下载与语义分割相关的文件,并将所有内容解压到同一文件夹中。解压后将其移动到 /data/semantic_kitti/dataset

  • 准备数据集:
python utils/data_prepare_semantickitti.py
  • 开始训练:
python main_SemanticKITTI.py --mode train --gpu 0
  • 评估:
sh jobs_test_semantickitti.sh

SemanticKITTI数据集上不同方法的定量结果:

s

我们RandLA-Net的定性结果:

zzz

(5) 演示

引用

如果您在研究中使用了我们的工作,请考虑引用以下文献:

@article{hu2019randla,
  title={RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds},
  author={Hu, Qingyong and Yang, Bo and Xie, Linhai and Rosa, Stefano and Guo, Yulan and Wang, Zhihua and Trigoni, Niki and Markham, Andrew},
  journal={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
  year={2020}
}

@article{hu2021learning,
  title={Learning Semantic Segmentation of Large-Scale Point Clouds with Random Sampling},
  author={Hu, Qingyong and Yang, Bo and Xie, Linhai and Rosa, Stefano and Guo, Yulan and Wang, Zhihua and Trigoni, Niki and Markham, Andrew},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2021},
  publisher={IEEE}
}

致谢

  • 我们的部分代码参考了nanoflann库以及最近的工作KPConv
  • 我们使用Blender制作了视频演示。

许可证

根据CC BY-NC-SA 4.0许可证授权,详情请参见LICENSE

更新

  • 2020年3月21日:更新所有实验结果
  • 2020年3月21日:添加预训练模型和结果
  • 2020年3月2日:代码发布!
  • 2019年11月15日:首次发布!

相关仓库

  1. SoTA-Point-Cloud:面向三维点云的深度学习:综述 GitHub 星标
  2. SensatUrban:从城市尺度摄影测量点云中学习语义信息 GitHub 星标
  3. 3D-BoNet:用于点云上 3D 实例分割的目标边界框学习 GitHub 星标
  4. SpinNet:学习用于 3D 点云配准的通用表面描述符 GitHub 星标
  5. SQN:仅需千分之一标注量的弱监督大规模 3D 点云语义分割 GitHub 星标

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

tesseract

Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中

73.3k|★★☆☆☆|3天前
开发框架图像