MonoScene
MonoScene 是一款基于单目图像的 3D 语义场景补全工具,源自 CVPR 2022 的研究成果。它的核心能力是仅凭一张普通的 2D 照片,就能重建出包含语义信息的完整 3D 空间结构,预测场景中每个体素(voxel)的几何形状与类别(如道路、车辆、行人等)。
传统 3D 感知通常依赖激光雷达或多视角相机,成本高昂且数据获取复杂。MonoScene 解决了这一痛点,证明了仅使用单一摄像头即可实现高质量的 3D 语义占用预测,极大地降低了硬件门槛。其技术亮点在于独特的网络架构,能够有效从单张图像中推断被遮挡区域的几何与语义信息,并在 SemanticKITTI 和 NYUv2 等权威数据集上展现了卓越性能。
这款工具非常适合计算机视觉领域的研究人员、自动驾驶算法开发者以及 3D 场景理解方向的工程师使用。对于希望探索低成本 3D 感知方案,或需要在缺乏深度传感器条件下进行场景重建的开发者而言,MonoScene 提供了宝贵的开源基线与预训练模型。虽然普通用户可通过在线演示体验其效果,但要充分发挥其潜力,仍需具备一定的深度学习框架(如 PyTorch)操作能力。
使用场景
某自动驾驶初创团队正在开发仅依赖单目摄像头的城市道路感知系统,需要在低成本硬件上实现高精度的 3D 环境重建。
没有 MonoScene 时
- 硬件成本高昂:为了获取准确的 3D 语义信息,必须配备昂贵的激光雷达(LiDAR)或多目立体相机,导致整车传感器预算超标。
- 数据稀疏且不完整:传统单目深度估计只能生成稀疏的点云,无法推断被车辆或建筑物遮挡区域的几何结构,导致地图存在大量“盲区”。
- 语义理解割裂:深度信息与语义分类(如车道线、人行道、障碍物)是分开处理的,难以在统一的 3D 体素空间中进行联合推理,增加了后端融合算法的复杂度。
- 实时性差:多传感器数据的时间同步和空间标定耗时费力,且复杂的融合管线难以在嵌入式设备上满足实时性要求。
使用 MonoScene 后
- 纯视觉低成本方案:MonoScene 仅需单张 RGB 图像即可预测稠密的 3D 语义占据网格,成功移除了对激光雷达的依赖,大幅降低了硬件门槛。
- 完整的场景补全:利用其场景补全能力,模型能根据上下文逻辑“脑补”出遮挡区域背后的物体(如被公交车挡住的行人),生成了连续且完整的 3D 环境模型。
- 几何与语义统一:直接输出带有语义标签的 3D 体素,将几何重建与语义分割合二为一,简化了感知栈架构,提升了系统鲁棒性。
- 部署高效灵活:基于单一摄像头的输入流简化了数据预处理流程,使得算法更容易移植到算力有限的边缘计算平台上运行。
MonoScene 的核心价值在于让低成本的单目摄像头具备了“透视”遮挡并理解完整 3D 世界的能力,为普及高阶自动驾驶提供了关键的技术路径。
运行环境要求
- Linux
需要 NVIDIA GPU,训练需 4 张 GPU (SemanticKITTI) 或 2 张 GPU (NYUv2),CUDA 10.2
未说明

快速开始
MonoScene: 单目3D语义场景补全
MonoScene: 单目3D语义场景补全
Anh-Quan Cao,
Raoul de Charette
法国巴黎Inria研究所。
CVPR 2022
如果您觉得这项工作或代码有用,请引用我们的论文并为本仓库点个赞(star):
@inproceedings{cao2022monoscene,
title={MonoScene: Monocular 3D Semantic Scene Completion},
author={Anh-Quan Cao and Raoul de Charette},
booktitle={CVPR},
year={2022}
}
预告片
| SemanticKITTI | KITTI-360 (在SemanticKITTI上训练) |
|---|---|
![]() |
![]() |
NYUv2
目录
新闻
- 25/03/2026:朝着通用统一的占用预测迈进了一步,推出了OccAny:通用无约束城市3D占用预测(CVPR'26)
- 05/12/2023:请查看我们最近的工作PaSCo:具有不确定性感知的城市3D全景场景补全 :rotating_light:
- 20/04/2023:请查看其他仅基于相机的3D占用预测项目
- 28/06/2022:我们在Hugging Face上添加了MonoScene演示
- 13/06/2022:我们添加了一个关于如何在mayavi中以编程方式定义视点的教程
- 12/06/2022:我们添加了一篇关于如何安装mayavi的指南
- 09/06/2022:我们修复了GitHub仓库中提到的安装错误(见https://github.com/astra-vision/MonoScene/issues/18)
准备MonoScene
安装
- 创建conda环境:
$ conda create -y -n monoscene python=3.7
$ conda activate monoscene
- 本代码使用Python 3.7、PyTorch 1.7.1和CUDA 10.2实现。请安装PyTorch:
$ conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.2 -c pytorch
- 安装其他依赖项:
$ cd MonoScene/
$ pip install -r requirements.txt
- 安装tbb:
$ conda install -c bioconda tbb=2020.2
- 将torchmetrics降级到0.6.0版本:
$ pip install torchmetrics==0.6.0
- 最后,安装MonoScene:
$ pip install -e ./
数据集
SemanticKITTI
您需要下载
- 语义场景补全数据集v1.1(SemanticKITTI体素数据,700 MB)来自SemanticKITTI官网
- KITTI Odometry Benchmark校准数据(下载里程计数据集,包含校准文件,1 MB)以及RGB图像(下载里程计数据集,彩色图像,65 GB)来自KITTI Odometry官网。
- 数据集文件夹位于**/path/to/semantic_kitti**,应具有以下结构:
└── /path/to/semantic_kitti/ └── dataset ├── poses └── sequences创建一个文件夹来存储SemanticKITTI预处理数据,路径为
/path/to/kitti/preprocess/folder。将路径存储在环境变量中以便快速访问(注意:
dataset文件夹位于/path/to/semantic_kitti):
$ export KITTI_PREPROCESS=/path/to/kitti/preprocess/folder
$ export KITTI_ROOT=/path/to/semantic_kitti
- 对数据进行预处理,生成低分辨率标签,用于计算真实值关系矩阵:
$ cd MonoScene/
$ python monoscene/data/semantic_kitti/preprocess.py kitti_root=$KITTI_ROOT kitti_preprocess_root=$KITTI_PREPROCESS
NYUv2
下载NYUv2数据集。
创建一个文件夹来存储NYUv2预处理数据,路径为
/path/to/NYU/preprocess/folder。将路径存储在环境变量中以便快速访问:
$ export NYU_PREPROCESS=/path/to/NYU/preprocess/folder
$ export NYU_ROOT=/path/to/NYU/depthbin
- 对数据进行预处理,生成低分辨率标签,用于计算真实值关系矩阵:
$ cd MonoScene/
$ python monoscene/data/NYU/preprocess.py NYU_root=$NYU_ROOT NYU_preprocess_root=$NYU_PREPROCESS
KITTI-360
我们仅对KITTI-360进行推理。您可以从http://www.cvlibs.net/datasets/kitti-360/download.php下载用于训练和验证的透视图像(128G)或用于测试的透视图像(1.5G)。
创建一个文件夹来存储KITTI-360数据,路径为
/path/to/KITTI-360/folder。将路径存储在环境变量中以便快速访问:
$ export KITTI_360_ROOT=/path/to/KITTI-360
预训练模型
下载MonoScene在SemanticKITTI上的预训练模型链接以及在NYUv2上的预训练模型链接,然后将其放入文件夹/path/to/MonoScene/trained_models。
运行MonoScene
训练
要在SemanticKITTI上训练MonoScene,请输入以下命令:
SemanticKITTI
创建文件夹来存储训练日志,路径为**/path/to/kitti/logdir**。
将其存储在环境变量中:
$ export KITTI_LOG=/path/to/kitti/logdir
- 使用4块GPU,每块GPU处理1个样本,以batch_size为4,在Semantic KITTI上训练MonoScene:
$ cd MonoScene/
$ python monoscene/scripts/train_monoscene.py \
dataset=kitti \
enable_log=true \
kitti_root=$KITTI_ROOT \
kitti_preprocess_root=$KITTI_PREPROCESS\
kitti_logdir=$KITTI_LOG \
n_gpus=4 batch_size=4
NYUv2
在 /path/to/NYU/logdir 创建用于存储训练日志的文件夹。
将路径存储到环境变量中:
$ export NYU_LOG=/path/to/NYU/logdir
- 使用 2 张 GPU、每张 GPU 处理 2 个样本(即 batch_size=4)在 NYUv2 数据集上训练 MonoScene:
$ cd MonoScene/
$ python monoscene/scripts/train_monoscene.py \
dataset=NYU \
NYU_root=$NYU_ROOT \
NYU_preprocess_root=$NYU_PREPROCESS \
logdir=$NYU_LOG \
n_gpus=2 batch_size=4
评估
SemanticKITTI
要在 SemanticKITTI 验证集上评估 MonoScene,请执行以下命令:
$ cd MonoScene/
$ python monoscene/scripts/eval_monoscene.py \
dataset=kitti \
kitti_root=$KITTI_ROOT \
kitti_preprocess_root=$KITTI_PREPROCESS \
n_gpus=1 batch_size=1
NYUv2
要在 NYUv2 测试集上评估 MonoScene,请执行以下命令:
$ cd MonoScene/
$ python monoscene/scripts/eval_monoscene.py \
dataset=NYU \
NYU_root=$NYU_ROOT\
NYU_preprocess_root=$NYU_PREPROCESS \
n_gpus=1 batch_size=1
推理与可视化
推理
请创建文件夹 /path/to/monoscene/output 以存储 MonoScene 的输出,并将其路径存储到环境变量中:
export MONOSCENE_OUTPUT=/path/to/monoscene/output
NYUv2
要在 NYUv2 测试集上生成预测结果,请执行以下命令:
$ cd MonoScene/
$ python monoscene/scripts/generate_output.py \
+output_path=$MONOSCENE_OUTPUT \
dataset=NYU \
NYU_root=$NYU_ROOT \
NYU_preprocess_root=$NYU_PREPROCESS \
n_gpus=1 batch_size=1
Semantic KITTI
要在 Semantic KITTI 验证集上生成预测结果,请执行以下命令:
$ cd MonoScene/
$ python monoscene/scripts/generate_output.py \
+output_path=$MONOSCENE_OUTPUT \
dataset=kitti \
kitti_root=$KITTI_ROOT \
kitti_preprocess_root=$KITTI_PREPROCESS \
n_gpus=1 batch_size=1
KITTI-360
这里我们使用序列 2013_05_28_drive_0009_sync,您也可以使用其他序列。要在 KITTI-360 上生成预测结果,请执行以下命令:
$ cd MonoScene/
$ python monoscene/scripts/generate_output.py \
+output_path=$MONOSCENE_OUTPUT \
dataset=kitti_360 \
+kitti_360_root=$KITTI_360_ROOT \
+kitti_360_sequence=2013_05_28_drive_0009_sync \
n_gpus=1 batch_size=1
可视化
注意: 如果您在使用 mayavi 时遇到困难,可以使用替代的 基于 Open3D 的可视化代码。
我们使用 mayavi 来可视化预测结果。请按照 官方安装说明 安装 mayavi。然后,使用以下命令分别对各个数据集的输出进行可视化。
如果您在 安装 mayavi 时遇到困难,可以查看我们的 mayavi 安装指南。
如果您在 调整 mayavi 视角时遇到困难,可以查看我们的 教程。
您还需要使用以下命令安装可视化脚本所需的软件包:
pip install tqdm
pip install omegaconf
pip install hydra-core
NYUv2
$ cd MonoScene/
$ python monoscene/scripts/visualization/NYU_vis_pred.py +file=/path/to/output/file.pkl
Semantic KITTI
$ cd MonoScene/
$ python monoscene/scripts/visualization/kitti_vis_pred.py +file=/path/to/output/file.pkl +dataset=kitt
KITTI-360
$ cd MonoScene/
$ python monoscene/scripts/visualization/kitti_vis_pred.py +file=/path/to/output/file.pkl +dataset=kitti_360
相关的仅基于相机的 3D 占用预测项目
- NDC-Scene: 在归一化设备坐标空间中提升单目 3D 语义场景补全,ICCV 2023。
- OG: 为视觉占用预测配备实例分割和视觉定位能力,arXiv 2023。
- FB-OCC: 基于前后视图变换的 3D 占用预测,CVPRW 2023。
- 通过上下文实例查询统一 3D 语义场景补全,arXiv 2023。
- OVO: 开放词汇占用预测,arXiv 2023。
- OccNet: 场景即占用,ICCV 2023。
- SceneRF: 基于辐射场的自监督单目 3D 场景重建,ICCV 2023。
- 幕后:用于单视图重建的密度场,CVPR 2023。
- VoxFormer: 基于稀疏体素的 Transformer 用于基于相机的 3D 语义场景补全,CVPR 2023。
- OccDepth: 一种深度感知的 3D 语义占用网络方法,arXiv 2023。
- StereoScene: BEV 辅助立体匹配赋能 3D 语义场景补全,arXiv 2023。
- 三视角用于基于视觉的 3D 语义占用预测,CVPR 2023。
- 自动驾驶中 3D 占用估计的简单尝试,arXiv 2023。
- OccFormer: 双路径 Transformer 用于基于视觉的 3D 语义占用预测,ICCV 2023。
- SurroundOcc: 多摄像头 3D 占用预测用于自动驾驶,ICCV 2023。
- PanoOcc: 统一的占用表示用于基于相机的 3D 全景分割,arXiv 2023。
- PointOcc: 基于柱状三视角的点云 3D 语义占用预测,arXiv 2023。
- RenderOcc: 以视觉为中心的 3D 占用预测,辅以 2D 渲染监督,arXiv 2023。
数据集/基准测试
- PointSSC: 用于语义场景补全的车路协同点云基准测试,arXiv 2023。
- OpenOccupancy: 用于周围语义占用感知的大规模基准测试,ICCV 2023。
- nuScenes 的占用数据集,Github 2023
- Occ3D: 用于自动驾驶的大规模 3D 占用预测基准测试,arXiv 2023。
- OccNet: 场景即占用,ICCV 2023。
- SSCBench: 用于自动驾驶的大规模 3D 语义场景补全基准测试,arXiv 2023。
许可证
MonoScene 根据 Apache 2.0 许可证 发布。
版本历史
v0.12021/12/09常见问题
相似工具推荐
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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

