Carla仿真系列:17_利用Carla仿真环境跑通3DGS——从采集360张图到高斯泼溅建模

3DGS是这两年最火的三维重建技术------拍一圈照片,就能重建出可实时渲染、可任意换视角的3D场景,想试试看效果,然后就有了这期 用 Carla 生成的数据,跑通 3DGS(3D Gaussian Splatting)建模。

1 为什么用 Carla 做 3DGS

用真实数据 用 Carla 仿真数据
相机标定可能不准 相机内外参绝对精确
场景不可控、不可复现 场景、光照、视角全可控
数据规模受限 想采集多少帧都行

结论 :Carla 是练 3DGS 的完美数据源------不用出门,就能拿到"完美采集"的图像序列。

2 整体流程

复制代码
采集360张环视图像 → COLMAP预处理(位姿+稀疏点云) → LiteGS训练 → 可视化ply

第一步:采集车辆图像数据

以自车为采集对象,围绕车的几何中心360度,每隔1度采集一张,共360张720P图像。

bash 复制代码
cd carla_sim/sim_workspace/slam/3dgs_data/
python surround_collect_gs_py2.py

这样保证每个角度都有观测,重建时不会出现"没见过的角度"。

第二步:COLMAP 预处理

3DGS 需要知道每张照片的相机位姿 和场景的稀疏点云------这就是 COLMAP 干的活(SfM 运动恢复结构)。

bash 复制代码
cd carla_sim/sim_workspace/slam/3dgs_data/
bash colmap_3dgs.sh

一个真实的工程取舍 :这里用 apt 直接安装的 COLMAP,预处理跑在 CPU 上,速度比较慢。如果要用 GPU 加速,需要自己下载源码编译 GPU 版本的 COLMAP。

demo 够用:CPU 慢一点能接受,先把流程跑通再说。

第三步:LiteGS 训练

用 LiteGS(摩尔线程开源的 3DGS 训练框架)训练。注意:这个环境需要自己搭建,不在 Carla 项目里,照着官方文档配就行。

bash 复制代码
python example_train.py --sh_degree 3 -s carla_colmap_data -i images -m ./output

参数说明:

参数 含义
--sh_degree 3 球谐系数阶数(3阶,颜色随视角变化更丰富)
-s carla_colmap_data COLMAP 预处理后的数据目录(含360张图+相机参数+3D点云bin)
-i images 图像文件夹名
-m ./output 训练输出的点云目录(ply格式)

第四步:效果可视化

把训练好的 ply 文件导入在线查看器(如 https://superspl.at/editor)即可实时浏览。

放大看能清晰看到一个个"尖刺"------那就是高斯球。

3 基本原理

  • 用大量可学习的 3D 半透明高斯椭球来显式表达场景;
  • 渲染时把 3D 高斯投影到图像平面变成 2D 高斯斑点,按深度排序做 α 混合生成图片;
  • 通过可微光栅化反向优化所有高斯参数,实现照片级新视角合成,且可以实时渲染。

每个高斯球保存了什么

参数 含义
xyz 3D 空间中心坐标
scale 3个方向的尺度(log空间,控制椭球大小)
rot(四元数) 椭球的旋转
opacity 不透明度
f_dc + f_rest(SH球谐系数) 颜色,SH 可随观察角度改变颜色,实现照片级光影

一句话理解 3DGS:用几十万个"会发光的小椭球"拼出整个场景------比传统网格(Mesh)真实,比 NeRF 渲染快。

4 测试效果

下图这个角度是采集图像时相机的视角,这个视角渲染的效果就很好。

下图是放大后看到的高斯小球,类似很多毛刺。

反思:

整体效果还可以,但有几个明显问题,也是下一步改进方向:

  1. 有些角度效果不好------说明采集视角还不够充分
  2. 相机高度太低------视角偏平,看到的场景信息有限
  3. 只在一个平面上运动------纯水平环绕,缺少俯仰视角

改进方向 :让相机在采集时上下俯仰移动(不只是水平绕圈),这样能覆盖更多视角,重建质量会明显提升。

这个反思是 3DGS 的关键:重建质量的上限,在采集数据时就决定了。

本期视频

17_利用Carla场景跑通3DGS建模

5 往期回顾

如果本文对你有帮助,欢迎点赞、关注、收藏 。

遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。

开源项目地址放在个人主页简介中,欢迎前往查看。

相关推荐
怕浪猫11 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
高洁0112 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
无线通信科研笔记12 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
朝朝辞暮i12 小时前
VLA 系统学习第 1 课:VLA 到底在干什么?
人工智能·python·计算机视觉·vla
2601_9628857212 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
北冥有鱼被烹13 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python
caoerzhong13 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律13 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
databook14 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
北冥有鱼被烹16 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python