LingBot-Map天空分割完全指南:skyseg.onnx与skyseg_batch.onnx双模型分工详解
【免费下载链接】lingbot-map(ECCV 2026 oral) LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
LingBot-Map(ECCV 2026 oral,Geometric Context Transformer for Streaming 3D Reconstruction)是一款流式 3D 重建基础模型。它的**天空分割(sky masking)**功能使用两个 ONNX 模型完成:skyseg.onnx负责单图推理,skyseg_batch.onnx负责批量加速。本文用最少的话讲清二者的分工、使用位置和缓存机制,帮助你在户外场景中快速过滤天空点、提升重建点云质量。
为什么 LingBot-Map 需要天空分割模型 🌤️
在户外场景重建时,相机拍到的天空区域本身没有真实几何信息。如果不处理,重建出的点云会漂浮着大量"天空点",严重影响可视化质量。
LingBot-Map 的解法是:用 ONNX 格式的天空分割模型对每帧图像打分,把天空区域的置信度清零(apply_sky_segmentation),最终点云里只留下真实场景。
上图为 LingBot-Map 的长序列重建效果,下方户外驾驶场景正是天空分割的典型用武之地
两个模型的输入预处理完全一致:图像缩放到 320×320,使用 ImageNet 均值/标准差归一化(见 run_skyseg)。唯一的本质区别在于批量能力:
| 对比项 | skyseg.onnx | skyseg_batch.onnx |
|---|---|---|
| 输入方式 | 每次推理 1 张图 | 动态 batch,一次推理多张图 |
| 定位 | 交互式场景(逐帧处理) | 离线批处理(长序列加速) |
| 典型调用方 | 根目录 demo.py、可视化/Glb 导出 | demo_render/batch_demo.py、评测批处理 |
| 默认路径 | 当前目录下skyseg.onnx | skyseg_batch.onnx |
skyseg.onnx 的使用位置:交互式演示与可视化 👀
当你运行根目录demo.py并加上--mask_sky时,使用的就是skyseg.onnx(参数定义见 demo.py 第 409-414 行):
python demo.py --model_path /path/to/checkpoint.pt --image_folder /path/to/images/ --mask_sky它的工作流程(load_or_create_sky_masks)是逐帧循环:读图 → 推理 → 把"非天空置信度"缩放到原图分辨率 → 写入缓存。模型路径可以用--sky_model指定其他位置;若默认文件缺失,_ensure_skyseg_model 会自动下载,下载失败会直接报错而非静默跳过,避免你以为做了天空过滤实际没做。
同样依赖skyseg.onnx的还有交互式查看器和模型导出链路:
- 3D 点云查看器:lingbot_map/vis/point_cloud_viewer.py
- Viser 可视化封装:lingbot_map/vis/viser_wrapper.py
- 离线 GLB 导出:lingbot_map/vis/glb_export.py
skyseg_batch.onnx 的使用位置:离线渲染与评测批量处理 🚀
对于超长序列(数帧起步到 25000 帧),逐帧推理开销太大。此时离线渲染管线切换到skyseg_batch.onnx——它把 batch 维设为动态,一次前向推理处理多帧。
离线渲染管线一次处理 25000 帧量级的长序列,天空分割批量推理是其提速关键
核心实现在 run_skyseg_batch:把多帧图像堆叠成(B, 3, H, W)批量推理;如果某模型的 batch 维是固定的,还会自动用最后一帧补齐(padding)后再切回真实帧数,非常省心。
各入口的默认配置都指向它:
- 离线批处理入口:demo_render/batch_demo.py 的
--skyseg_model_path默认值即skyseg_batch.onnx - RGB-D 渲染配置:demo_render/config/default.yaml 中
preprocess.sky_model默认skyseg_batch.onnx - 评测离线脚本:benchmark/sky_seg/seg_sky.py 的
segment_batch按--batch_size分批推理(显存不足时调小即可),把天空掩码输出到与图像目录平级的sky_mask/文件夹(255=天空,0=非天空) - 评测框架封装:benchmark/benchmark/utils/sky_segmentation.py 默认从用户缓存目录
~/.cache/benchmark/skyseg.onnx取模型,单张调用
户外数据集 Oxford Spires 的轨迹对比:天空区域被正确排除后,相机轨迹更贴合参考值
缓存与可视化机制:跑一次,永久生效 ⚡
两个模型共用同一套掩码缓存设计,避免重复推理:
- 交互管线默认把掩码缓存到
<图像目录>_sky_masks/,目录内写入版本号文件.skyseg_cache_version(版本常量见 sky_segmentation.py 第 28 行),可用--sky_mask_dir自定义 - 再次运行时发现掩码已存在且尺寸匹配,直接复用,零推理开销
- 想直观检查分割质量?加
--sky_mask_visualization_dir,会输出"原图 + 掩码 + 红色高亮天空区域"的三联图(_save_sky_mask_visualization) - 离线脚本 seg_sky.py 则逐文件跳过已生成的掩码,支持断点续跑
如何选择:3 条判断标准 📋
- 跑交互式
demo.py或导出 GLB→ 用默认的skyseg.onnx,缺了会自动下载,无需干预 - 跑离线长序列渲染或大批量图像→ 用
skyseg_batch.onnx,通过--skyseg_model_path/--sky_model指定绝对路径,显存紧张时减小--batch_size - 只做评测前处理→ 直接用 benchmark/sky_seg/seg_sky.py 一条命令生成整目录掩码
一句话总结:模型算法相同、预处理相同、缓存相同;区别只是"单张走"还是"批量跑"。选对模型,户外场景的天空点过滤又快又干净。
【免费下载链接】lingbot-map(ECCV 2026 oral) LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考