作者 | forward 编辑 | 3D视觉之心
原文链接:https://www.zhihu.com/question/4480461408/answer/92772834871
点击下方卡片,关注“3D视觉之心”公众号
第一时间获取3D视觉干货
>>点击进入→3D视觉之心技术交流群
智驾领域有一个非常重要的工作就是驾驶视频生成,在2024年这项任务的答案是3DGS,在2025年这项工作(可能)的答案是世界模型。这篇博客站在如何做这件事情的角度讨论方案的选择,纯属个人观点,如不赞同强烈欢迎评论区狂喷我爱看。

观点
先说世界模型,目前我看到的几个智驾领域世界模型的paper严格意义上说都不是世界模型,或者说是世界模型的子模块。经典的世界模型定义包括一个记录了世界观的模型,和基于该世界观模型的agent,这个agent可以根据记录的世界观作出未来的合理行为。当前发的paper基本不包括agent,他们都主要关注以视频生成为载体的未来状态预测。
然后说3DGS,我们要对他进行去魅,剥开各种续作里神乎其神的概念,这东西其实还是点云(NeRF可以理解成空间占据类模型,它是三维空间上的连续函数)。3DGS可以进行新视角合成,点云/surfel/mesh投影也可以呀,只不过3DGS新视角渲染的效果更好罢了。它牛逼的地方在于1次采集数据能变成N份训练数据从而减少数据采集和labeling的工作,实现的原理就是新视角合成。
举个例子,传统训练数据只包含采集那个时刻所行走轨迹时的数据,但是由于3DGS可以新视角合成,你可以人为设定一个新的轨迹(有无限种方案),让3DGS在这条新轨迹上不断渲染,这样就能做到源源不断的新数据生成。
3DGS在效果上主要有2个痛点:缺乏视角的范化性(如果训练时缺少该方向图片,你拖动位置时该方向渲染效果会失真);动态问题(这是三维重建普遍的难题)。经典3DGS的点云源自colmap类SfM方法,但是对于不差钱的大户而言这没有必要,用LiDAR点完全可以(现在LiDAR也不贵了)。
在智驾领域目前的落地需求上,3DGS和世界模型在部分需求上扮演着相同的角色,都要的是新视频生成的功能,从而获得低成本生成大批量保真的视频。对于世界模型而言,它是通过“猜”,“脑补”或者“dream”的方式“编”出来的,生成视频质量的高低取决于世界模型里抽象出来的世界观是否和真实世界规则一致。
举一个例子,人和人之间的差异性主要体现在认识水平上,具有高认知水平的人更容易获得世俗意义上的成功,具有低认知水平的人就容易采坑,根本因素在于不同人的世界观是否和当前时间线下的世界相匹配。如果训练出来的世界模型认知水平很低(也许某个平行宇宙就是这个样子的),它预测出来的视频你敢拿来训练当前世界的下游模块吗?
我个人觉得,世界模型不应该是这样,既然费很大劲训练出一套对世界规则理解的模型,它更应该直接用于pnc的端到端推理,而不是只是用于视频生成,它后面接的应该是规划决策decoder,而不是视频decoder,它应该具有根据外部感知输入和内部世界模型自主决策的agent,好在这类方案也逐渐出现了。
更重要的是,dream出来的视频真实性是比不过3DGS的。3DGS做渲染的过程可以理解为真实的4D视频,它是根据真实数据三维重建出来的,里面所有的物体的运动都是真实发生的,我不用担心它的运动合不合理,3DGS保真,世界模型不保真,因此训练视频生成的最合理方案应该是3DGS。
最近大火的各类chatGPT,已经有网友发现,当你问他一个专业性的问题时,他可能会一本正经引经据典有理有据地告诉你一个错误的信息,这是一件有风险的事情。
类似的,Carla和GTA等simulation方案同样不保真,因为这类方案里的规则全是人设的,只要是人设的,就有可能出现理解偏差和理解不全。
好了,现在大方向上把世界模型和游戏类方案否掉,接下来根据3DGS的2大痛点来进一步确定细分思考方向。
动态物体
先说观点,我不赞同4DGS,S3Gaussian等4DGS类方案,因为环境中绝大部分物体是静态的,所以不应该给所有gaussian体增加时间信息,这就好比为了这叠醋包了顿饺子,或者说为了兰博基尼5元代金券买了一台兰博基尼,什么意思,就是为了满足只占少数的需求迫使所有对象都发生改变。
更好的方式是用AirSim/Carla/GTA的方式来管理动态,只不过动态物体的运动不是仿真器根据规则推测的,而是数据里真实记录的。因此为了解决动态问题,3DGS更好的玩法是动静态分离。先说静态环境如何建立,我们已经有了3DGS的训练pipeline,那么对于它的输入数据(图片+点云)应该先把动态物体mask掉,静态物体按照经典3DGS流程建立,我在之前的博客里讨论了动态剔除的方法。
3DBox类方法被4DGS类论文里diss了,我的观点和他们恰恰相反,图片+点云的目标检测才是3DGS里动态物体提取的最好方法,因为方案成熟经过大量验证也有专业团队手到擒来无需再去想新的且效果未知风险不可控的骚操作,我在下面的链接里汇总了近年来经典的车载LiDAR目标检测方案。
根据目标检测方案,我们就能实现点云和图片的动静态分离,如果我们在目标检测的基础上增加目标追踪MOT,对于动态物体,我们有它的3D框,那么同一目标在不同帧上有多个3DBox和box内的点云,由于box内的点相对于box的位置是固定的,在box坐标系下,我们就可以把同一目标的多帧动态点合并到一个box内从而实现动态物体的完整重建。
进一步,利用所有观测到当前动态物体的图片对它的3DGS进行训练,就能获得当前动态物体在不同视角下的渲染。
目标追踪MOT是在目标检测的基础上进行的,不光实现对多帧同一动态物体的关联,还能获得该动态物体的轨迹,这一点是4DGS类方案做不到的。我们再进一步发散思维,如果说对于某次采集数据建立的3DGS场景,我把某个轨迹上的车给它删掉,是不是又多了一种数据?又如果说我把某个轨迹上的小白车换成大货车,是不是又多了一种数据?这里要再强调一下,基于真实数据建立出来的模型里物体的运动是真实发生过的,我们不用担心它是否合理(100%真实),而世界模型方案就不能做到这一点(哪怕99.99%真实你心里都会犯嘀咕)。
因此,基于真实数据3DGS静态重建+MOT+物体替换是3DGS方案的重要优势,它实现了数据可信赖的范化和多模态。
更进一步,对于动态物体的3DGS,我们不用采集的数据进行训练,而是干脆事先随便找个停车场把里面的劳斯莱斯奔驰马自达五陵弘光拍个遍,构建一个3DGS模型语料库(类似于游戏开发一样,都事先有树木NPC建筑武器的3D模型库),然后对于采集的数据进行MOT时,我只保留动态物体的运动轨迹,不保留动态物体本身,然后用语料库的模型进行随机替换,这样就和AirSim/Carla/GTA很像了。
最后说一说动态场景的渲染。动态物体我们可以理解为静态物体+posed time。在某一时刻,我们根据MOT查表找到动态物体此时在哪,然后把它放在那里,这就意味着,当时间固定时动态环境就收敛为静态环境了,此时就根据经典的3DGS渲染流程走就好了。
以上内容只针对车辆,对于行人,风吹杨柳,红绿灯需要单独处理。其实也没事,行人和风吹树仍然可以理解为模型库里的基础模型,红绿灯仍然可以理解为动态物体,一样的处理逻辑。
多视角
缺乏新视角泛化性是3DGS的一个难点。我想大家玩3DGS都有过这样的经历,拿自己的图片训练好后,训练图片视角附近渲染的很真,鼠标一拖开就露馅了,而且露馅得非常快。
为此思路一是增加几何约束,去年一些2DGS的surfel类方案是这个思路。
思路二比较简单,增加不同视角的训练图片就好了。采集数据的时候,本来只有1个相机,我现在按照nuScenes的方式搞6个相机,各个方向都能看到,用所有图片来训练3DGS。如果说囊中羞涩只有一个相机,那采集的时候东张西望各路美景都贪心地尽收眼底。
如果点云不源于SfM而是来自LiDAR,那么需要注意多传感器的内外参标定和时间同步,这一点要求是和多传感器SLAM(LIVO)是一样的,只要是满足LIVO的硬件,都能做LiDAR深度监督的3DGS。
迁移
我在这一篇博客里提到,三维重建的意义是实现对世界的理解,构建动态3D模型也好,还是世界模型也好,都是其中的一种理解方式。动态3DGS可以为静态环境+在动的静态物体,当时间确定时,动态环境又收敛为静态环境,按照这种方式对模型管理的难度会低于4D思路。
我第一次看到用LiDAR+LSLAM方式构建出来的稠密城市点云的时候,我一直有一个幻想,为什么点云里只有空荡荡的街道,可不可以让车点云,人点云和小摩托点云在地面点云上像云南机车靓仔一样在遵守交通规则的框架下活蹦乱跳的跑呢?
然后再给点云增加颜色,也能渲染出还不错的效果。前一段时间的R2/3LIVE,FAST-LIVO1/2和现在一些手持扫描仪厂商发的demo视频就已经证明了这一点。
如果把上面的XYZRGBIL的3D点换成3DGS,从而获得更逼真的渲染效果,这就变成了现在很多企业在干的构建simulator的事情。所以说,3DGS也好,点云也好,在应用的角度上看没有本质区别,都需要构造一套显式的动态数字空间,使里面的运动规律符合真实世界,这样它才能用来做更可靠的训练和仿真。
因此,绝大部分3DGS类work都不用特别去follow(或者只去关注性能和几何优化类的工作),如果把原生的Gaussian体训练过程和viewer理解清楚,所有动静态物体都拆解为静态物体,3DGS就理解成点云或者游戏里的建模,剩下的拉上一个做SLAM的和做MOT的,就可以组队自研了。
寻找一个紧凑高效的3DGS变种,用于表达静态场景和车辆语料。
寻找一个高效的局部动态的3DGS变种,用于表达人体语料。
寻找一个高效的editor,实现对3DGS的前景提取(例如构建车辆语料时不可避免拍到地面和天空,因此需要删除无效gaussian体)。
运用成熟SLAM+MOT方案构建全局一致场景点云,带位姿照片和目标+动态轨迹。
训练静态3DGS场景,对于大场景需要考虑分块。
构建车辆,人体,心爱的小摩托等语料。
给定一个时间戳,将对应目标利用对应位姿变换。
当时间戳固定时,整个场景收敛为静态场景,利用viewer渲染。
我相信各位肯定看过类似于这样的电影或者动漫,就是主角一伸手,大喊一声咒语:“奥利给”,突然,全世界的时间都停止流动,只有主角能在里面运动。当诸位大佬实现了上面这个框架时,诸位便掌握了此等魔法。
总结
看完这些二创后我的内心久久不能平静,突然,我委屈地哭了,我梨花带雨潸然泪下泪如雨下泪眼惺忪,不争气的泪水如倾盆大雨又好似决堤的堰塞湖从嘴角留下。大郎,没这么麻烦的,我们大可以把3DGS就当成普通的点云就好了。
3DGS刚问世的时候,他确实具有革命性的三维表示和渲染方式,与传统空间结构确实有很大的区别。但是,当Gaussian体的训练方式固定了,viewer工具成熟了,对于二创开发者而言,3DGS的含义就可以发生“塌陷”,当我们面临后续诸如动态问题的处理时,可以按照与处理点云/mesh相同的思想处理,进而降低这件事情的落地难度,我们也就避免误入简单问题复杂化的歧途。
举一个例子,我第一次看到用3DGS做语义的idea时候我的表情堪比下面的大头儿子,突然,我的眼睫毛拔地而起,我的黑长直齐刘海吸入脑中,我的樱桃小嘴憋成一线天,而我的鹰钩鼻幻化成宝马前脸的形状。
3DGS的牛逼之处是在于逼真的彩色渲染,它包含的颜色概率叠加和球谐函数支撑了它颜色的多样性和丰富性,这也是原作开发这项技术的出发点。
而对于语义而言,直接用点云投影就足够了,因为无论你从什么角度看他的语义都是一样的,无需赋予到3DGS的参数中。用原本的语义点云构造kdtree,用Gaussian体中心位置在里面最邻近搜索,最近的语义给过来就好了。与此相反,由于光照等影响颜色从不同角度看是不同的,并且一个小的区域颜色就可能有丰富的分布。
这么做的原因是语义和颜色的颗粒度不一样,颜色的颗粒度远小于语义,杀鸡焉用牛刀,吃兰州拉面无需发九宫格朋友圈小红书昭告天下,怀揣5元代金券闭眼入兰博基尼,观博主文章不要不一键三连点赞关注,工具和需求没有拉通对齐颗粒度就会出戏,不是什么东西都适合往3DGS的套子里装。
类似的,我在这篇博客里提出“一帧LiDAR可以提取语义特征,但是无法提取几何特征”的观点,这也是因为LiDAR帧的颗粒度无法支撑几何特征提取的需求。
想的越多,精神越内耗,越overthink,就会越不快乐,慢即是快,少即是多。我们会开车并不需要学会去造车。按照金字塔原理,对知识和概念进行分级抽象,实事求是,只掌握要用的那个程度足够了。
我在初学SLAM的时候,快被各种公式和代码吓死了。后来当我想通了按照金字塔原理的学习之后,发现根本不难。难的实际上是大多数后来者人缺少入局的机会。
做减法,不做套子里的人,燃烧我的卡路里,轻装forward。
我们这些呆在企业的软开和算法牛马们,迫于生计我们不得不花大把时间处理一些琐碎(俗称搬砖或打杂),好事也不可能次次轮得到我。一些原本高起点的以45°角度仰望星空的傲娇♂孤星大佬,打杂时间长了技术相对退化了,当35岁大限将至之时被SOTA年轻人吊打了,坏了傻眼了,迫不得已进行职场转型化身老白兔提供职场情绪价值或者向上攀登夺取俯视众生的优势生态位和声量位。
成功者是少数,对于沉默的大多数或者偏爱写代码的技术极客,一方面要持续学习,另一方面我们大部分的精力在当前规则下早已被死死的锁定在一些地方,所以唯一的破局方法就是抓大放小,细节黑箱化工具化,紧紧follow,了解思想和如何为我所用。摸鱼的时候,也是为明天布局的时候。
摸鱼有些政治不正确,称之为“以前瞻性思维布局未来战略”,这样大家心里就暖暖的。工作真正重要的是,到点交付,同样的活总有人干的更快,省出来的时间就是为未来布局的时间。我们也不可能永远只做一个技术方向,因此我们对某项新技术具体细节的理解必然是比不过学校里的小年轻。
现在paper越来越多,看不完,根本看不完,所以当理解清楚需求把握清楚方向之后,只去关注该方向上的work,要是一不小心喝多了别人灌的水,肾不好的话,晚上就得总起夜,老婆(老板)就会怀疑你了。无论是被怀疑能力不行还是心猿意马,都是条不归路。
诸位大佬,快攥紧拳头,左手扣于心脏前,右手敷于后腰,任凭自由之翼从后肩骨肆意生长,光宗耀祖的德国科技外企工牌调皮地挂在脖子上闪烁出黑钻级的OD传说,一翻左手右手一个慢动作后,声泪俱下地大声浅夹出那一句悠扬的气泡音:
我是大佬,
不是细狗,
接着奏乐接着舞,
我刚满18岁,
我讲武德。
对于企业界算法人员而言,好在我们的优势是我们懂需求,懂产品,懂方向,懂技术落地,因此我们不能被学校里那帮人牵着鼻子走,我们要有自己的观点和判断,秉持社区共创,人人为我的开源精神,把那帮学术界社交卷王中有价值的成果工具化,杜绝逆向田忌赛马,60分万岁。只需在issue中唤一声大佬,主页上点个star,再发些包含“sota”和“吊打”关键字标题的有AI文章,他们都会争先恐后的献出代码和解释。
对于学府大佬,关注业界需求也是极好的,少数人筑基成功突破元婴期达到金丹期修炼999层宝塔终成教授名利双收,大多数毕业后被向社会输送人才,唯有科技树上技能点点对了方案才能被翻牌子,出来之后,早已把持不住的SSSP offer自然如舔狗般投怀送抱暗送秋波,最后在脉脉和offershow上留下惊鸿一贴,等hr来敲门。
北大和北大青鸟任选,兰博和兰博基尼随意,奥迪和雅迪白给,选择太多也是一种烦恼,优势在我,想想还有点小激动。
我们绝大部分工作不是0-1,而是1-100,因此确定好需求和方向,再去寻找对应的轮子,拼成一辆厉害的车。
这里也推荐家自动驾驶之心推出的《面向科研&落地的3DGS全栈实战教程》,拼团优惠欢迎加入!
【3D视觉之心】技术交流群
3D视觉之心是面向3D视觉感知方向相关的交流社区,由业内顶尖的3D视觉团队创办!聚焦三维重建、Nerf、点云处理、视觉SLAM、激光SLAM、多传感器标定、多传感器融合、深度估计、摄影几何、求职交流等方向。扫码添加小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
扫码添加小助理进群
【3D视觉之心】知识星球
3D视觉之心知识星球主打3D感知全技术栈学习,星球内部形成了视觉/激光/多传感器融合SLAM、传感器标定、点云处理与重建、视觉三维重建、NeRF与Gaussian Splatting、结构光、工业视觉、高精地图等近15个全栈学习路线,每天分享干货、代码与论文,星球内嘉宾日常答疑解惑,交流工作与职场问题。