无所不能!无痛拥有自己的3DGS自动驾驶仿真器

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

今天自动驾驶之心很荣幸邀请来了仿真算法专家—张峻川,为大家分享如何无痛拥有自己的3DGS自动驾驶仿真器,完全使用开源的学术研究,且无需程序编写!如果您有相关工作需要分享,请在文末联系我们!

也欢迎添加小助理微信AIDriver004,加入我们的技术交流群

>>点击进入→自动驾驶之心仿真闭环技术交流群

文章作者 | 张峻川

编辑 | 自动驾驶之心

背景

无疑,NERF和3DGS等神经渲染相关技术是自动驾驶仿真领域讨论最火热的前沿技术。NERF和3DGS使用神经网络表达空间,其在新视角合成方面的优越表现直击自动驾驶仿真的一大痛点:传感器仿真。如果这一类深度学习技术能够推广应用,就能够很大程度上解决传统计算机图形学渲染出的图像缺乏真实性的问题,可以广泛应用在自动驾驶算法的闭环测试和训练中。

目前已经有一些研究项目在围绕NERF和3DGS技术打造全新的面向闭环测试的自动驾驶仿真框架,例如以NERF为核心的OASim【1】、NeuroNCAP【2】以及更早的UniSim(在此不再贴出UniSim的论文链接,【1】项目中有UniSim的非官方实现,以及另一个非官方实现【3】)。目前笔者还没有发现围绕3DGS展开的相关工作。完全新开发一个仿真框架,使其具有现行场景仿真软件类似的功能将会有巨大的工作量。因此另一个应用场景合成新技术的思路是:将NERF和3DGS训练出的模型嵌入到现有场景仿真软件的框架中去,在保证实时渲染的前提下,将NERF和3DGS的渲染结果作为背景,动态物体仍然使用原有的3D数字资产,最终合成出新的真实程度更高的图像,整体框架如图1所示。

ea4167a6a496f11bd77b0643e643a89f.jpeg
图1

目前,一个匈牙利公司的仿真软件产品aiSim已经以此为卖点展开了宣传:效果如图2、图3,在NeRF和3DGS生成静态场景后,aiSim将基于外部渲染API进一步增加动态元素,不仅可以重建原始场景,也可以根据测试需求构建不同的交通状态。

8a5b1234a81a9866284a7078a20825ba.png
图2

那么,像图2、图3这种仿真效果,我们普通人是不是也能拥有呢;)本文就将通过笔者的一个小实验告诉你,这是有可能的!本文实验全程“无痛”:完全使用开源的学术研究,且无需程序编写。

d93bd9c8db673806e57cf6839edf615f.gif

CARLA插件

在NERF和3DGS的研究兴起之初,就已经有相关的工程工作旨在将训练好的模型嵌入到现行游戏引擎的渲染框架中去,以作为一个方便编辑的数字资产,在运行时达到实时渲染的效果。较早的工作例如【4】,只需要花几十美元就可以在Unreal的市场中买到这个插件。后续工作包括元象科技的【5】,应用于windows平台的UE5之上,以及一个高校研究项目中的NERF插件【6】,应用于windows平台的UE4。

那么是否有一款合适的插件可以直接应用于基于Unreal的开源场景仿真软件CARLA呢?笔者通过比较,最终选择了LumaAI的3DGS插件【7】,主要是因为从网站中我们可以下载到源码,方便我们和CARLA一起执行编译。

由于LumaAI只支持UE 5.0.0以上版本,而最新CARLA发行版0.9.15仍然使用UE4,因此本次实验只能选择CARLA代码库中仍在开发中的UE5分支进行测试。具体选择的分支是CARLA【8】和UE-CARLA【9】(请注意,笔者测试的是以上两个仓库中截至24年4月8日的版本)。

安装编译之前,需要从【7】中下载LumaAI的源码包,例如名为LumaAI_2023_25_12_marketplace_5.0.zip的压缩文件,解压缩后将内容复制到CARLA根目录下的Unreal/CarlaUnreal/Plugins路径下。

在这些开发分支中,官方教程中的编译方法不再适用,但CARLA根目录下的Setup.sh中记载了开发分支的编译过程。笔者的实验环境为ubuntu 22.04。编译过程中会提示图4中的内容,点击yes就好,让插件和CARLA一起编译。编译成功后,CARLA的UE editor会启动,你此时可以在Plugins列表中看到LumaAI,如图5。LumaAI的插件可以将任何3DGS模型输出的点云ply文件或者专门的luma文件导入UE editor,成为资产库中的一类Blueprint Class,比如将我们都很熟悉的狐狸头导入Town10(图6)。

761dd348a801966ccef6c6d3864657a2.png
图4
65312de010d8eea8bf9084b245ad41b4.png
图5
a4c82937ea3b0a1972d99896bbc08cc2.png
图6

(根目录下的CMakeLists.txt中显示,通过增加BUILD_PYTHON_API编译选项,可以对pythonAPI进行编译,成功后可以在pythonAPI目录下产生carla.so文件以供引用。)

街景重建

原版的3DGS(过于著名不再贴出链接)就可以完成街景重建,但3DGS项目本身不处理动态场景,也不是为街景这种开放式环境设计的。学术界一直有针对自动驾驶场景3DGS的研究项目,目前开源的有PVG【10】GaussianPro【11】S3Gaussian【12】等。本文实验中笔者选用的是有标注框监督派的代表,浙大的street gaussian方法,虽然原项目并未开源,但光轮科技已经将他们的复现版street-gaussians-ns发布到了github上:【13】。

street-gaussians-ns的训练过程不再赘述。为了在Unreal中呈现更好的效果,可以选择使用waymo的全部5路摄像头数据进行训练。训练完成后,street-gaussians-ns还提供了方法可以将场景的点云ply文件提取出来。

接下来我们就可以打开CARLA的UE editor,使用LumaAI插件,将street-gaussians-ns导出的ply插入仿真环境看下效果了。

安装了LumaAI插件的UE editor打开后,在左下角的content browser中,可以看到Import功能按钮,点击Import,可以在本地目录下寻找ply文件,导入到content browser中,如图7。导入成功后,点云就成为了资产库中的一个Blueprint Class,如图8,此时把Blueprint Class拖入场景,就可以在场景里对其进行编辑操作了。

83cf47f45f081cdc60200e4dfce17bb7.png
图7
9a01291ea67277a4bc70e7b3cdd79f5d.png
图8

在UE editor中编辑以及Unreal场景运行起来后的效果如图9-13(图13使用的是方法【11】训练的结果)。至此你就拥有了一个自己的3DGS自动驾驶仿真器,过程是不是完全“无痛”!

3e9b3dcd5a96bbae125d310abc3769af.png
图9
e750e47ed69b2e2012dfba8184ca59d9.png
图10
c7655bfa5018871879fb5f896401bc3c.png
图11
9b6c09172693a97fa8dcce1ad69c33e8.png
图12
2cb582ed39b9c702e256eb59abc54625.png
图13

理论上讲,接下来只要我们能够根据以上waymo场景做出简单的CARLA地图,再对插入的3DGS点云模型进行一点“微调”使其贴合地图,就可以流畅地在上面安排3D数字资产运行动态场景了!操作过程如图14。

2d20fdb3e1255f96f918d392b0886afc.jpeg
图14

未来

如果真的想要严肃考虑以这个思路做神经渲染在自动驾驶仿真中的技术落地,笔者认为还需要解决的问题有:

  1. 前景动态物体的渲染:

尽管已经有研究项目在解决虚拟前景物体和真实合成背景间的融合问题了,如ChatSim【14】中的McLight方法,但笔者认为真实度仍然不够。我们是否也可以用NERF和3DGS训练出的模型来表示前景动态物体呢?在CARLA的框架下目前这一点比较难,因为LumaAI导入的点云Blueprint Class和Car等actor的Blueprint Class截然不同,应用难度较大。不过我们也看到了一些研究项目如gaustudio【15】,可以对3DGS方法训练出的模型提取mesh、texture等素材,也许这样我们就可以用CARLA原本的建立车辆模型的pipeline来建立一个“点云版”的车辆actor。再辅以另外一些解决少视角重建的研究如GaussianObject【16】,也许在CARLA中导入神经渲染动态物体有一天也会成为可能。

  1. 地图:

仿真场景离不开地图,除手工搭建外,也许也可以用一些诸如MapTR(过于著名不再贴出链接)的方法解决。

  1. 更多传感器:

截止到目前为止我们只讨论了相机图像的仿真,尽管自动驾驶进入了重视觉时代,但其他一些传感器仍然是不可或缺的,我们仍然需要其他途径来模拟这些传感器。

参考文献:

【1】‍https://github.com/PJLab-ADG/OASim
【2】‍https://github.com/atonderski/neuro-ncap
【3】https://github.com/georghess/neurad-studio
【4】https://github.com/Akiya-Research-Institute/3dGaussiansPlugin-Demo
【5】https://github.com/xverse-engine/XV3DGS-UEPlugin
【6】https://github.com/JamChaos/UE4-NeRF
【7】https://lumalabs.ai/ue
【8】https://github.com/carla-simulator/carla/tree/ue5-dev
【9】https://github.com/CarlaUnreal/UnrealEngine/tree/ue5-dev-carla
【10】https://github.com/fudan-zvg/PVG
【11】https://github.com/kcheng1021/GaussianPro
【12】https://github.com/nnanhuang/S3Gaussian
【13】https://github.com/LightwheelAI/street-gaussians-ns
【14】https://github.com/yifanlu0227/ChatSim
【15】https://github.com/GAP-LAB-CUHK-SZ/gaustudio
【16】https://github.com/GaussianObject/GaussianObject

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

882c7009ba622a82dd364b6c042264fd.png 网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

f190400c6e001d691664699319390642.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

aa25c3a37aa948f17167d5298cbcb723.jpeg

④【自动驾驶之心】全平台矩阵

03718145a8e29f15e331d2bacd7402eb.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值