Mask3D
Mask3D 是一款专注于 3D 实例分割的开源深度学习模型,旨在精准识别三维空间中的物体及其语义类别。在自动驾驶、机器人导航及数字孪生等应用中,如何让机器准确区分场景中每一个独立的物体(如区分不同的椅子或行人)一直是个难题。Mask3D 通过引入先进的 Mask Transformer 架构,有效解决了这一痛点,能够直接从点云数据中输出高精度的 3D 语义实例预测。
该工具在 ScanNet、ScanNet200、S3DIS 和 STPLS3D 等多个权威基准测试中均取得了业界领先的性能表现,证明了其卓越的泛化能力和准确性。技术上,Mask3D 基于高度模块化的 MinkowskiEngine 框架开发,并集成了 PyTorch Lightning 与 Hydra 配置管理,不仅支持稀疏卷积高效处理大规模点云,还便于研究人员进行灵活的实验调整与二次开发。
Mask3D 主要面向计算机视觉领域的研究人员、算法工程师以及从事 3D 感知开发的开发者。对于希望探索前沿 3D 分割技术、复现顶级论文成果或构建高精度三维理解系统的团队来说,这是一个极具价值的参考实现。项目代码结构清晰且文档完善,同时也提供了便捷的部署方案,帮助用户快速上手并应用于实际场景。
使用场景
某智慧城市团队正在利用激光雷达扫描数据,构建高精度的室内数字孪生模型,以支持自动化空间分析与设施管理。
没有 Mask3D 时
- 实例区分困难:传统算法难以区分紧密相邻的同类型物体(如并排的办公椅),常将多个独立物体错误合并为一个整体。
- 边界识别模糊:在处理复杂场景(如会议室或仓库)时,物体边缘分割不精准,导致生成的 3D 模型轮廓粗糙,无法直接用于测量。
- 人工修正耗时:由于自动分割准确率低,工程师需花费大量时间手动逐点修正语义标签,严重拖慢项目交付进度。
- 泛化能力不足:模型在训练集表现尚可,但面对新场景(如不同布局的商场或车站)时性能大幅下降,需反复重新调参。
使用 Mask3D 后
- 精准实例分离:Mask3D 凭借先进的掩码变换器架构,能清晰识别并分离紧密排列的独立物体,即使类别相同也能准确划定个体边界。
- 细节还原度高:在 ScanNet 等基准测试中达到业界领先水平的分割精度,生成的物体几何轮廓平滑且贴合真实边缘,直接满足工程测量需求。
- 流程高度自动化:大幅减少了对人工后处理的依赖,团队可将原本数天的修正工作缩短至几小时,显著提升数据处理吞吐量。
- 场景适应性强:得益于强大的泛化能力,Mask3D 无需大量微调即可适应从办公室到大型交通枢纽等多种复杂室内环境,保持稳定的输出质量。
Mask3D 通过实现业界领先的 3D 语义实例分割,将繁琐的点云处理流程转化为高效、精准的自动化生产线,极大降低了数字孪生建设的门槛与成本。
运行环境要求
- Linux
- 必需 NVIDIA GPU,支持 CUDA 架构列表:6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6
- 需安装 CUDA 11.3
未说明

快速开始
Mask3D:用于3D实例分割的掩码Transformer
1亚琛工业大学 2ETH AI中心 3苏黎世联邦理工学院 4NVIDIA
Mask3D能够预测精确的3D语义实例,在ScanNet、ScanNet200、S3DIS和STPLS3D数据集上均达到当前最优性能。

新闻
- 2023年10月29日:请查看这个针对Mask3D的简易安装指南。
- 2023年1月17日:Mask3D已被ICRA 2023接收。 :fire:
- 2022年10月14日:新增了STPLS3D支持。
- 2022年10月10日:在ECCV 2022期间由Urbn3D Workshop举办的STPLS3D挑战赛中,Mask3D位列第二。
- 2022年10月6日:Mask3D预印本已在arXiv上发布。
- 2022年9月25日:代码正式发布。
代码结构
我们基于Mix3D的代码库进行改造,该库提供了一个高度模块化的框架,用于基于MinkowskiEngine的3D语义分割。
├── mix3d
│ ├── main_instance_segmentation.py <- 主程序文件
│ ├── conf <- hydra配置文件
│ ├── datasets
│ │ ├── preprocessing <- 预处理脚本文件夹
│ │ ├── semseg.py <- 室内数据集
│ │ └── utils.py
│ ├── models <- Mask3D模块
│ ├── trainer
│ │ ├── __init__.py
│ │ └── trainer.py <- 训练循环
│ └── utils
├── data
│ ├── processed <- 预处理后的数据集文件夹
│ └── raw <- 原始数据集文件夹
├── scripts <- 训练脚本
├── docs
├── README.md
└── saved <- 存储模型和日志的文件夹
依赖项 :memo:
该项目的主要依赖项如下:
python: 3.10.9
cuda: 11.3
您可以按照以下步骤设置conda环境:
# 一些用户在Ubuntu系统上使用AMD CPU时遇到了问题
# 请安装libopenblas-dev(问题#115,感谢WindWing)
# sudo apt-get install libopenblas-dev
export TORCH_CUDA_ARCH_LIST="6.0 6.1 6.2 7.0 7.2 7.5 8.0 8.6"
conda env create -f environment.yml
conda activate mask3d_cuda113
pip3 install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
pip3 install torch-scatter -f https://data.pyg.org/whl/torch-1.12.1+cu113.html
pip3 install 'git+https://github.com/facebookresearch/detectron2.git@710e7795d0eeadf9def0e7ef957eea13532e34cf' --no-deps
mkdir third_party
cd third_party
git clone --recursive "https://github.com/NVIDIA/MinkowskiEngine"
cd MinkowskiEngine
git checkout 02fc608bea4c0549b0a7b00ca1bf15dee4a0b228
python setup.py install --force_cuda --blas=openblas
cd ..
git clone https://github.com/ScanNet/ScanNet.git
cd ScanNet/Segmentator
git checkout 3e5726500896748521a6ceb81271b0f5b2c0e7d2
make
cd ../../pointnet2
python setup.py install
cd ../../
pip3 install pytorch-lightning==1.7.2
数据预处理 :hammer:
安装完依赖项后,我们对数据集进行预处理。
ScanNet / ScanNet200
首先,我们使用默认参数对测试场景应用Felzenswalb和Huttenlocher提出的基于图的图像分割算法。详细信息请参阅原始仓库。将得到的分割结果放入./data/raw/scannet_test_segments目录下。
python -m datasets.preprocessing.scannet_preprocessing preprocess \
--data_dir="RAW_SCANNET_DATASET路径" \
--save_dir="data/processed/scannet" \
--git_repo="SCANNET_GIT_REPO路径" \
--scannet200=false/true
S3DIS
S3DIS数据集存在一些小错误,我们最初是手动修复的。我们很快会发布一个可以直接预处理原始数据集的脚本。目前,请按照此处的说明手动修复数据集。之后,按如下方式调用预处理脚本:
python -m datasets.preprocessing.s3dis_preprocessing preprocess \
--data_dir="PATH_TO_Stanford3dDataset_v1.2" \
--save_dir="data/processed/s3dis"
STPLS3D
python -m datasets.preprocessing.stpls3d_preprocessing preprocess \
--data_dir="PATH_TO_STPLS3D" \
--save_dir="data/processed/stpls3d"
训练与测试 :train2:
在 ScanNet 数据集上训练 Mask3D:
python main_instance_segmentation.py
请参考 配置脚本(例如 这里),以获取重现我们结果的详细说明。 最简单的推理命令如下:
python main_instance_segmentation.py \
general.checkpoint='PATH_TO_CHECKPOINT.ckpt' \
general.train_mode=false
训练好的检查点 :floppy_disk:
我们提供了详细的指标和网络配置,以及训练好的检查点。
S3DIS(在 ScanNet train+val 上预训练)
继 PointGroup、HAIS 和 SoftGroup 之后,我们对在 ScanNet 上预训练的模型进行了微调(配置 和 检查点)。
| 数据集 | AP | AP_50 | AP_25 | 配置 | 检查点 :floppy_disk: | 分数 :chart_with_upwards_trend: | 可视化 :telescope: |
|---|---|---|---|---|---|---|---|
| Area 1 | 69.3 | 81.9 | 87.7 | 配置 | 检查点 | 分数 | 可视化 |
| Area 2 | 44.0 | 59.5 | 66.5 | 配置 | 检查点 | 分数 | 可视化 |
| Area 3 | 73.4 | 83.2 | 88.2 | 配置 | 检查点 | 分数 | 可视化 |
| Area 4 | 58.0 | 69.5 | 74.9 | 配置 | 检查点 | 分数 | 可视化 |
| Area 5 | 57.8 | 71.9 | 77.2 | 配置 | 检查点 | 分数 | 可视化 |
| Area 6 | 68.4 | 79.9 | 85.2 | 配置 | 检查点 | 分数 | 可视化 |
S3DIS(从零开始训练)
| 数据集 | AP | AP_50 | AP_25 | 配置 | 检查点 :floppy_disk: | 分数 :chart_with_upwards_trend: | 可视化 :telescope: |
|---|---|---|---|---|---|---|---|
| Area 1 | 74.1 | 85.1 | 89.6 | 配置 | 检查点 | 分数 | 可视化 |
| Area 2 | 44.9 | 57.1 | 67.9 | 配置 | 检查点 | 分数 | 可视化 |
| Area 3 | 74.4 | 84.4 | 88.1 | 配置 | 检查点 | 分数 | 可视化 |
| Area 4 | 63.8 | 74.7 | 81.1 | 配置 | 检查点 | 分数 | 可视化 |
| Area 5 | 56.6 | 68.4 | 75.2 | 配置 | 检查点 | 分数 | 可视化 |
| Area 6 | 73.3 | 83.4 | 87.8 | 配置 | 检查点 | 分数 | 可视化 |
ScanNet v2
| 数据集 | AP | AP_50 | AP_25 | 配置 | 检查点 :floppy_disk: | 分数 :chart_with_upwards_trend: | 可视化 :telescope: |
|---|---|---|---|---|---|---|---|
| ScanNet 验证集 | 55.2 | 73.7 | 83.5 | 配置 | 检查点 | 分数 | 可视化 |
| ScanNet 测试集 | 56.6 | 78.0 | 87.0 | 配置 | 检查点 | 分数 | 可视化 |
ScanNet 200
| 数据集 | AP | AP_50 | AP_25 | 配置 | 检查点 :floppy_disk: | 分数 :chart_with_upwards_trend: | 可视化 :telescope: |
|---|---|---|---|---|---|---|---|
| ScanNet200 验证集 | 27.4 | 37.0 | 42.3 | 配置 | 检查点 | 分数 | 可视化 |
| ScanNet200 测试集 | 27.8 | 38.8 | 44.5 | 配置 | 检查点 | 分数 | 可视化 |
STPLS3D
| 数据集 | AP | AP_50 | AP_25 | 配置 | 检查点 :floppy_disk: | 分数 :chart_with_upwards_trend: | 可视化 :telescope: |
|---|---|---|---|---|---|---|---|
| STPLS3D 验证集 | 57.3 | 74.3 | 81.6 | 配置 | 检查点 | 分数 | 可视化 |
| STPLS3D 测试集 | 63.4 | 79.2 | 85.6 | 配置 | 检查点 | 分数 | 可视化 |
BibTeX :pray:
@article{Schult23ICRA,
title = {{Mask3D: 用于3D语义实例分割的掩码Transformer}},
author = {Schult, Jonas and Engelmann, Francis and Hermans, Alexander and Litany, Or and Tang, Siyu and Leibe, Bastian},
booktitle = {{国际机器人与自动化会议 (ICRA)}},
year = {2023}
}
常见问题
相似工具推荐
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备