李想汽车提出的VLM是什么?

李想汽车提出的VLM是什么?

VLM是Vision-Language Model的缩写,即视觉语言模型,可以简化理解成这种模型既会看画面,又会用语言描述看到的东西来进行思考,比如会用语言描述前方的树突然倒下来等,和人类实际处理是蛮像的。

2024年6月8日李想在重庆表示基于现有的计算平台,有监督的L3级别自动驾驶100%可实现,最早今年年底,最晚明天年初就会全量推送,无监督的L4自动驾驶三年内一定可以实现。

理想汽车的自动驾驶路线核心思路是用一颗Orin X芯片用于端到端,一颗Orin X用于VLM,端到端为系统一,处理所有的正常的自动驾驶,VLM为系统二,来解决兜底和泛化的能力。

2024年6月8日与理想汽车持续合作的赵行老师在端到端具身智能体技术研讨会上进行了《视觉语言大模型与自动驾驶》的演讲。

核心框架与李想讲的一致,除此之外赵行老师提到:

1.以视觉语言为中心的自动驾驶技术,能够真正从L2到L3到L4到L5。自动驾驶技术上限突破靠视觉语言,激光雷达进行一个兜底作用。

2.快系统10Hz推理速度,慢系统1-2Hz.

3.快慢系统是并行在跑,慢系统目前还是起到一个辅助作用,像是一个大脑驾在上面,真正在驾驶的还是快系统,目前思路是快系统能处理的全部都由快系统做,遇到瓶颈的时候再由慢系统来做。将来二者可能合二为一,现在为了先跑起来,先这样设计。

4.特斯拉现在已经做到了油门刹车级别的端到端,理想目前暂时只能轨迹级别。

附赠自动驾驶最全的学习资料和量产经验:链接

赵行老师演讲全文:

今天的这个主题是叫视觉语言大模型与与自动驾驶。

刚才主持的同学有说到我之前在Waymo工作,然后大家知道Waymo算是自动驾驶行业的先驱。然后之前我们在Waymo一直做的是以激光雷达为主的这个自动驾驶方案。激光雷达为主的自动驾驶方案我们做了一段时间以后,就遇到了特别多的困难。所以说其实我后来回国以后,主要的研究方向是说我们怎么用视觉,或者说以视觉为中心来解决自动驾驶的问题。其实经过去年的这个大模型的爆发以后,我们觉得对于未来的自动驾驶系统视觉视觉可能还不一定够。可能我们要把它叫做视觉语言为中心的自动驾驶技术,它能够真正让我们的自动驾驶技术从L3L2到L3到L4到L5。

为什么呢?首先是我我们一直我们知道这个视觉它有着非常丰富的输入,它不是像激光点云一样,是一些稀疏的输入。视觉的输入是非常致密丰富的,它包括了物体的纹理,物体之间的一些精细的交互的行为,这些特点车特征全都蕴含在视觉的输入上。在激光点云里我们没有办法分清一个矮小的物体,它到底是一个横穿马路的小朋友,还是一个在路上的一个雪糕桶,对吧?像分清这样的物体对于视觉来说轻而易举,但对于其他传感器都非常的困难。

刚才只是一个非常简单的例子,如果再多迈进几步,比如说我们遇到一些施工场景,对于一个行人在穿马路,他是他看着手机有没有在看我们的自动驾驶车,这样的场景以后,几乎只有视觉才能彻底的把这些问题解决掉。那么为什么我们又要加入语言呢?加入语言以后,我们我们终于能够不再做视觉的这种局部的理解,局部的理解基本上我们能用视觉可以理解到这是一个人,他有没有在看我,他手上有没有手机,但是他和我的关系是什么?他和其他车的关系是什么?和其他行人的关系是什么?这些推理的这些关系都需要用语言来进行实现。当然我也想说,我觉得激光雷达对于自动驾驶车是非常重要的,主要进行一个保底兜底的作用。但是我们要实现自动驾驶能力的上限,我们需要使用视觉甚至是语言。

大家都在畅想说未来我们到底该怎么样迈向L4,就是可能15年前Waymo说我们要做L4自动驾驶,但到今天我们还是在一个比较小的测试区域进行运营。我们怎么样才能迈向真正未来的真正未来可以泛化,可以到世界上任何一个地方的L4级别的自动驾驶呢?我觉得大概是有这么一个基本的框架。

当然这个框架是我猜的,很多人会觉得说我们是不是只要一个大模型就把所有问题都解决了,其实我自己的个人的观点,自动驾驶是一个对于安全要求极高的应用。我们仅仅使用一个黑盒的模型,很难以充分解决所有的问题。所以说我们需要的不是一个基础大模型,而是需要多个基础大模型。它这里包括我们这里左上角写的视觉感知的基础大模型,中间的视觉语言场景理解的大模型,左下角的对于地图静态环境理解的大模型和最后规划的大模型。

image

那你会说这个不是和我们现有的这些模块化的设计是一样的吗?我觉得里面有一些区别。首先我们一旦做模块化拆解以后,我们总会过分的去细化进行拆分和拆解。但是神经网络的核心在于说,我们能把输入到输出进行无损的信息传输压缩理解,所以说我们不能把它拆的过细,但是我们仍然要进行拆分,进行拆分的主要原因是我们要确认这个模型的能力是没有问题的。

然后第二个点的区别就是我们图像视觉的输入,它会传输到每一个模块里。这样用来保证原始视觉的这种丰富的输入,它都能够被无损的传输到后面的模块中去。这样的设计它有哪些好处?它保证了透明性,又保证了可控性,并且我们觉得这样的方案还是scaleable的。Scaleable的意思说,随着我们的数据增大,模型增大,它的能力应该是在不断的提升的。

有了这个框架以后,其实我们干的事情是什么?其实干的事情就是说我们怎么样设计好这些模型之间的界面,保证他们在信息传输的过程中没有太多的损失和丢失。

今天我们会主要分享的是我们在这个视觉语言大模型对于自动驾驶场景理解方面的工作。这个模块它的作用是什么呢?如果大家了解以前我们的自动驾驶的模块的设计方案,从感知到规控中间可能有一个预测模块。然后其实我自己最早在Waymo的工作的时候也是做预测的。但我自己是觉得预测这个模块有一些积累,就是它可能不该成自成一个模块。它要么在和感知多结合一点,要么和规控多结合一点,它·都是可以被扔进前序模块或者后续模块的,预测模块不该独立存在,因为预测模块很有可能成为整个自动驾驶这个系统的一个瓶颈。

那么我们需要到底需要一个什么样的中间模块呢?然后我觉得是一个叫做场景理解的这样的模块。这个场景理解的模块。首先他要去理解这个场景里正在发生什么,同时他要给我们做出这个高层次的语义级别的决策。然后这个模块在以前的自动驾驶系统中是不存在的。

为什么我觉得这个是模块是很必要的呢?其实就是可能大概五六年前,我觉得那个时候大家对于都对于自动驾驶L4 Robotaxi的实现非常的激动。但是又又有很多人会和我说,怎么可能对吧?就是你们现在的技术怎么可能能真正走到L4呢?就假设前面有一个老奶奶穿马路,然后他走了走着走着然后就和你碰瓷了。然后这样的问题你自动驾驶车能解决吗?

然后面对这样的问题,你作为一个自动驾驶的工程师,你就有就会觉得这个问题很无解是吧?然后又很绝望,说我们真的没有办法去解决这样的问题。然后你说这是个长尾问题,要不我们以后再做吧。

然而实际过程中我们发现这个问题其实不是一个长尾问题,这个是一个Waymo的视频,它就开着路上遇到了一个老奶奶,她坐着轮椅在追她的一只鸭子,她的一只鸭子逃跑了,然后你猜正式开了多少公里以后遇到的情况。就是Waymo在实际路测开了多少公里以后,在开了百万公里以后就遇到了这样的情况,所以说其实他这个说是长尾case。对于咱们在座的许多的主机厂来说,百万公里根本不能算长尾case了,是吧?可能每天都能遇到。如果我们真的要去解决这样的问题,很多人就说AGI先要解决,你自动驾驶才有可能解决。对然后大家知道去年GPT-4出现,其实给大家看到了希望,对吧?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是GPT-4的报告里有这么一个例子,前面有一辆车,后面有一个人在烫衣服,然后我们问GPT-4现在在发生什么,它能够比较完整的告诉我们现在它看到了什么是什么问题。很简单,我们就会想到,如果我追问一句话说,你我现在是开在他后面的一辆自动驾驶车,我该怎么办?

image

然后那自动那GPT4应该能告诉我们一个合理的高层次的决策。比如说我们该减速,尽量让着他等等做这样的决策。所以说我们在大概去年下半年就做了这个工作,叫做DriveVLM,用视觉语言模型来帮助自动驾驶。

这个模型的做法其实还是非常直接的。就是我们利用一个已有的视觉语言模型,它有一个vision encoder,又有一个大语言模型的backbone。我们输入自动驾驶车看到的一系列的图像,让它做这个CoT的reasoning 思维链的推理。首先我们会问它说,请你描述一下现在的场景里有什么?我们也给他个模板说你先描述一下天气,再描述一下路况,再描述一下你看到的一些的物体。然后再来问在这些物体里,哪些物体对我们的会产生一些影响,比如说前面有一辆警车停着肯定对我们有影响,还有几个追捅等等,可能前面还有警察站着,然后最后我们再让他做一个决策,这个决策我们又做了几个级别的决策。

首先是语言描述的决策,然后再后面是叫做meta-action的决策。Meta-action的意思是说,我们给他定义一个几个离散的决策。离散的决策的好处是比较容易的,能够被下游所使用。最后我们还让他做出一条真正的规划出来的轨迹,以XY、X1Y1、X2Y2这样在二维平面里规划出一条驾驶的轨迹。这样子我们就实现了一个端到端的大模型的自动驾驶系统,非常的简单,也非常的优雅,对吧?

但是我们发现它不太行,这个做了以后就发现不太行,有很多问题。

首先就是视觉语言大模型,它对于空间3D理解能力特别的差。

image

差在首先我们看感知,发现它各种false positive false negative。然后我记得这样的问题,其实视觉语言的大模型都没有办法做的好。其实我们最近看到的应该有一篇工作叫做Special VLM。然后我们觉得是非常出色的让视觉语言大模型能够更好的去理解三维我们所生活的这个三维世界。什么东西在前,什么东西在后,什么东西在左,什么东西在右,他再也不会分不清前后左右了,然后我觉得这是第一个要解决的问题。

然后第二个要解决的问题就是规划它规划出来的轨迹。我们我们去年有一篇工作,就是说你直接让语言模型给你输出X1Y1、X2Y2出轨迹。这个轨迹看上去是好的,但我们真正把它放到地图里,放到这个三维世界里,发现它非常的抖动,其次它又经常会有碰撞产生,所以VLM本身有这个问题。

然后另外一个VLM的问题就是如果我们把它部署在车上,会发现他的速度特别的慢。这个速度慢其实还好,最大的问题是latency问题。我们知道自动驾驶是我看到了一个图像,我要立刻做决策,对吧?人的反应速度应该是在100毫秒以内的,但我们的大模型基本上推理速度一秒钟,然后可能我都已经撞上了,就前面的规划已经没有用了。所以说后来我们做的这个工作就叫做自动驾驶的双系统。

这个双系统的这个motivation,我们的灵感是在于说我们知道人驾驶其实大多数时候95%的时候,我们都是一种叫做肌肉记忆的驾驶。就是我开车其实也没有意识,我可以一边打电话,就一边沿着车沿着路就驾驶了,不需要花费我太多的精力。但是如果遇到一些紧急的复杂的场景,这时候我就需要放下我的电话,然后仔细看看,往左边看看,右边看看,然后知道我现在处于一个什么状态,然后给出一个更加精细的决策。

这个双系统这样的方式,我们就是希望我们真正能做到一个自动驾驶系统。它在常规的时候也能驾驶,在复杂的场景,它能够调用视觉语言大模型来解决复杂的问题。当然其实这个方法在这个心理学里被广泛的研究过。他们就有一本书叫做Thinking fast and slow ,Thinking fast and slow,这是一个一位教授就是Daniel教授。我记得他应该是经诺贝尔经济学奖他提出的。

就是说人在解决问题的时候,不是一味着靠着大模型大脑仔细思考来解决的。很多时候都是无意识的下意识的思考。但是对于复杂问题,它会就进行一个更慢的更高层次的逻辑推理的思考。我们觉得解决自动驾驶问题也可以采用这样的思路。所以说我们这个模型叫做Drive VLM-Dual System。Drive VLM-Dual 上面这部分慢系统和我们刚才说到的视觉语言大模型是一样的。

image

我们结合上经典的这个快的自动驾驶模型。这个快的模型我们可以选取任意的你自己喜欢的模型。比如说一些3D检测器,一些轨迹预测模型,一些轨迹规划模型,甚至我们可以用现在更加流行的端到端的模型。我们去把这个慢系统和快系统进行结合。

结合的方式。我们我们我们目前做的是做了两种结合。一种是在感知层面的结合。

感知层面我们在3D检测器的输出的3D框,我们会把它融合到这个大模型里面去。具体的融合方式是大模型它也有感知能力对吧?但它给出的是一些2D框。我们把这个3D框和2D框都投影到图像上去进行匹配。如果匹配上了,我们就把这个2D框给它更精确的3D位置。如果没有匹配上,我们仍然把这些信息也喂给这个大模型。这样子大模型它既有2D的感知结果,又有3D的感知结果,对于整一个场景有一个更完整的理解。

我们就替换掉了,我们就在第二阶段替换掉了大模型自己的感知结果,或者是融合了大模型和快系统的感知结果。然后在模型的后半部分,这个是规划模块,我们模型输出了一些meta-action或者说参考的轨迹。我们再把这个参考的轨迹和我们下游的这个快系统里的轨迹规划模型再去结合,去做出一条更加合理的、光滑的、安全的轨迹规划。

就是模型的设计。当然我们在做这个模型的设计的过程中遇到了很多挑战。就是我们刚才说到慢系统的设计目标设计初衷就是为了解决长尾case。但是我们发现市面上并没有长尾case的数据集,像我们不管是Nuscense还是Waymo数据集,还是Nuplan数据集,都非常常规,没有常尾。所以说我们就找到了企业的合作伙伴理想汽车,然后帮我们去找了一些数据,找了一些真实的数据,比如说这是其中的一个例子,我们开着开着发现我们自己这个车道有施工了,然后我们只能借旁边的车道进行通过。

image

对于这么一个场景,我们怎么样进行语言描述呢?发现没有捷径,我们还是得把我们找标注员,把里面每一个细节,有意思的细节全都会进行语言描述。比如说我们这里描述了现在天气情况怎么样,现在的驾驶的路况怎么样,前面有哪些物体。并且对于每一个物体我都进行一些语言的描述。

这种标注它和感知的标注有什么不一样?感知的标注我们关注的是对于物体的精度的标注。比如说我要拉一个3D框,他框那个点云框的非常紧,或者对于物体框的非常紧。我们这儿对于一个施工场景,我也不知道该框什么是吧?那我就粗略的框一框。但是我们更关注的是对于里面语义关系的理解。所以说我们让标注员尽量的把里面发生的事情都描述出来,这样子才能拿来微调或者训练我们的语言大模型。

image

为了得到这样的一个数据集,我们设计了一整套的标注流程。首先是在大量的数据库里去寻找这样的case,我们有两个标准。第一个标准叫做是一个长尾物体,如果这个场景里有长尾物体,我们就把它找出来。另外的话就是有挑战的场景,有挑战的场景什么概念呢?就是比如说人接管了,或者说这个驾驶的轨迹和匀速的轨迹,或者说我们现有的方案的轨迹不一致,然后我们就把它挖出来。这个方案当然是参考了这个特斯拉的影子模式是吧?就我们能找到很多这样的case,然后进行一些手工的过滤,还有一些自动的过滤,然后再进行这个视频的一些关键帧的提取。

image

关键帧的意思是说我们在发生一个有意思的场景。在发生之前我们就把它开始进行录制。然后一直录制到这个场景。我们已经开过去之后,然后选取到这些关键的视频真的拿出来进行描述和标注。最后还有这么一个质检的过程,然后我们这找到了很多很多有意思的来给大家分享。比如说在自驾开高速的时候,遇到了一群牛一群羊。

image

我们这里这群牛我该怎么标注?大概标注的方法就是说这一群牛在慢慢的缓缓的移动,那么我们不需要刹车,这个和做点云碰撞检测很不一样。牛他是在慢慢走,他知道我在靠近他他会慢慢的走开。所以说我们不用完整的刹车,我们只要慢慢的减速,慢慢减速缓行,直到这些牛走开我们的这个车道为止。

然后还有一些更加有意思的长尾的问题。刚才这个牛是一些物体级的长尾,然后这是一个场景级的长尾的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

路边的树倒下来了,我们该怎么办?我们用这个数据集去训练了我们的模型,做了一些测试。首先是一些开环的测试,也就是说我们在这个数据集上训练模型,我们的模型会输出一系列描述,描述现在的天气怎么样,现在的场景发生了什么,我们要做什么样的决策,并且最后规划出一条轨迹。

在做完这些开环的工作以后,我们还是非常希望去车上试一试。然后在理想的团队的帮助下,我们把这个模型这个双系统模型部署到了这个Orin X上。在车上它有两块Orin X芯片,一块来跑这个慢的系统,一块跑快的系统。

image

相当于说一块跑我们现有的方案,另外一块去跑我们的视觉语言模型,让它们同时跑起来。但是这两个系统它有个区别,就是快系统它一秒时针跑得非常快,但这套VLM它速度比较慢。所以说理想的团队进行了很多的优化,进行了一些投机采样,这个大模型推理的这些设计,最后能够实现1到2Hz的推理速度。我们把这两套系统,一套10Hz,一套2Hz进行并行的跑着。当这个慢系统看到有一些复杂的场景以后,它就把这个信号额外的送给这个快系统,去改变这个快系统的规划出来的轨迹。这里我们录了一个实车的视频,从理想开到中关村电子大厦。大多数时候都是这个快系统在跑,但是在遇到一些复杂的场景的时候,我们的大模型会起作用。

就是导航说我们要切换到辅路,但是大模型说,你不对,我们现在还在主路上。

image

这个快系统它就,这快的系统就不行了,大模型告诉我们我们现在一定要切进去了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

比如说公交车道大模型能够识别出来。它就告诉这个快的系统说我们不要进去那个公交车道,我们得开普通的快速快的车道。

在路口的一些复杂的路口的减速,比如说丁字路口,因为没有红绿灯。所以需要这个大模型进行一些接管或者接入。

image

最后人类接管了。

Ok对然后我们这个工作,就是我们做这些工作的同学们,他们做的非常出色。也非常感谢理想的工程师帮我们做了很多工程化的工作。

image

QA环节:

Q:因为我对那个特别是对VLM的数据标注比较感兴趣。就是数据标注因为我有大量的语言的我要标,那这块标怎么样去限定?比如说我们的这个标注员去要标明哪方面,我觉得这个一致性很难去保证。怎么来保证这一点呢?就是它可能可以发散的很厉害,不一定是你想关你想要关注的地方。

赵行:没错,我觉得这个就是我们刚才说到这个用语言标注和我们以前视觉拉框的区别。视觉拉框关注的是精度,我觉得语言关注的是整个推理过程。然后我觉得总的来说我们会让他做一个后验的标注。也就是说我们的车最后怎么做了,我就让他标说我的我们这个自动驾驶车该做什么样的行为。我们认为我们目前的假设是我们的数据库里的这些驾驶行为都是好的数据。如果这些行为有差的数据的话,标注会更加困难一点,那可能这个标注员就很发散,目前会认为这个驾驶员怎么做了,我们就让他怎么标。然后只是把他整一个逻辑过程推理过程给写一写。当然我觉得驾驶整体来说还是一个相对来说受限的一个逻辑。

就是说因为我看到了什么,他可能会干什么,所以我做了什么,基本上是一个比较简短的一个思维链逻辑,我觉得会有多样性。然后多样性在某一个程度上可能是好的,从某种程度上说是好的。因为大模型它是一种生成模型。生成模型它需要的是一些多样性的数据,来保证它不会出现OOD的问题,对这个我觉得也是比较重要的。如果我们我们的数据的一致性极高了以后,它可能和普通的监督学习就没有太大区别。我觉得多样性在某种程度上是必要的。但是我觉得真正要做到一个可以上车的,可以量产的这么样一个标注系统,我们要做很多的质检工作。

Q:赵老师,我有一个问题,就是快慢模型切换的机制是怎样子的?

赵行:其实它俩两个系统它并不是以同一个频率来进行,它们是一个像一个多线程系统一样,他们都各自跑着,这个大模型它会就它的速度可能只有1Hz。然后它需要一些结果的时候,他就从那个快系统拿一些信息来。然后他有一些输出以后,就把这个信息再扔给那个快的系统。他们俩一个是一个异步进行

Q:也就是说它两个模型是是并行走的对吧?

赵行:对,他俩是并行走的,不相互依赖,一旦相互依赖以后就问题就比较大,这个latency的问题就比较大了。

Q:但是它们两个并行走的时候,给我们的车的这种输出的结果是怎样一个逻辑?

赵行:主要的输出结果是轨迹,然后轨迹的输出结果是由这个快的系统来。所以说这个大模型目前还是起到一个辅助的作用。它像一个大脑架在上面,真正在驾驶的还是我们这个快系统。

Q:那能这么理解吗?就是它主要是通过快系统,然后得到一个组的轨迹。然后再通过那个大模型去给他做一些补充销售。

赵行:是的,我觉得现在大模型的作用主要是帮它解决一些比较有挑战的,快的系统没有办法识别的一些问题。

比如说我们刚才说到的公交车道,对比如说对于这样的场景,我很难说在地图上,在无图的情况下,我很难说我去进行一个额外的标注。但如果我把它都扔进大模型里,这是一个可行的做法。我们觉得。

Q:但是什么时候是复杂的,什么时候大模型的数据可以辅助到他?

赵行:我觉得目前是我们是这么想的,现在的小模型没兜住的东西都扔进去,你小模型如果能兜住就让小模型做。

Q:那也就是说小模型我们一般是用小模型,然后如果碰到瓶颈的时候,我们就找大模型来支持。

赵行:对我觉得目前是这么样的一个设计,但我觉得未来应该他们会合二为一的,会有应该会有这一天。不过我们说当下的话,如果要让它跑起来,先进行这样的设计。比如说小模型里我没有描述这个老人是不是在轮椅上,但是大模型就让大模型干这个事,就别让别去飙一堆小模型的数据了。我还得拉3D框,做一些各种各样的标注,就是扔给大模型,让他们用语言描述就ok了。

Q:我这边特别follow赵老师的这个research。前两天在这硅谷,在Waymo,然后跟Waymo的这朋友交流,我就问他们说,你现在follow的最多的全球的这个paper是哪几个人的?然后他跟我提说,一个是赵行的,一个是hongyang这边的。所以我觉得就咱们这个论坛都集聚了这些大牛。然后咱们刚才在后台的时候你也提到了,就是说您认为可能端到端首先会在机器人落地,所以这个我很好奇,您为什么认为这个端到端可能现在机器人可能会去落地?然后另外的话,您认为在这块的话,它的这个数据闭环该怎么去搭建?

赵行:好的,我觉得这两个问题都是非常庞大的。

我觉得第一个问题就是说为什么机器人上更容易落地一些?我觉得是这样子的,首先端到端,我们自动驾驶我觉得其实目前能落地的还没有完全到达端到端。我们知道其实特斯拉现在在做的,他已经做到最后的油门刹车级别这种control级别的这样的端到端了。但是我们可能现在大家做的还是在轨迹级别的,我觉得还没有实现真正的端到端。我们自己在真正在做的时候会发现,很多时候我深度学习规划出来的轨迹,其实是我下面控制器是跟不上的,这是非常常见的问题。

其实我们经常说PNC,然后会把这个PNC认为是一个东西。但事实上我们现在是planning变成了神经网络化。但是control还没有。所以说control的神经网络化我觉得还会需要一段时间,这是第一点。然后相比之下,其实机器人很有意思的地方在于它的关节的数量非常的多。

它的关节有关节的角度,关节的角速度等等这样一系列复杂的控制,我们要做的控制,如果我去对它进行轨迹级别的规划,那么都是不合理的。因为我不管怎么样规划出来的轨迹,大概率高自由度的机器人,他们的关节都没有办法跟上我们的轨迹。这个问题在机器人里更严重,并且甚至都很少有人真正能去尝试这样的路线,我们目前看到,其实全世界能把这种路线做好的团队并不多。我们看到一个可能ETH有一些团队能把这个足式机器人的规划和控制拆开,然后一部分神经网络一部分用规划做,但是至少我们团队在没有这个基因和禀赋的情况下,我们就直接选择了这个端到端来控制足式机器人,也就是说从视觉的输入直接控制到机器人的关节的输出,关节角度的输出。跳过了中间的那些轨迹规划,地形规划等等等这些落足点规划等等这一系列的流程。

我觉得一方面是偷懒,不会。第二是太难,所以说我们目前看到的趋势是机器人好像端到端更快一点。然后另外一个方面可能是因为机器人挂了就挂了,就它摔了就摔了,这自动驾驶车我们不太敢直接上,自动驾驶车一上来以后就出现了这个事故,很多公司因为出现了事故以后就关停了。所以我觉得大家可能会更加保守一点,所以时间线上会来说会相对晚一些。

您第二个问题是刚才说关于数据该怎么构建,我觉得会需要一个数据金字塔,数据金字塔的底层叫做通过互联网海量的收集到的数据,或者众包的驾驶数据,用户的驾驶数据进行预训练,我觉得这是第一步。

第二步叫做是通过示范的学习,模仿学习去进行。比如说我们就模仿人的驾驶,就是模仿的学习。其次我觉得和它并行的是一条通过仿真数据进行训练的这一个路线,仿真数据主要帮我们用来增强那些长尾的少见的corner case,并且对于一系列的一些模块进行增强。比如说我们在感知里经常要做occupancy,但occupancy这个事情构建的真值非常复杂。然后这时候我们用仿真的方法就能够更好更全自动的去进行自动的标注。然后我觉得数据大概是这样的一个组成,就从互联网数据到真机数据到仿真数据,大概是这样的的一个金字塔。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以给你提供一些 VLM (Visual Light Communication) 和 LLM (Low Level Message) 的代码示例。以下是一个简单的VLM代码示例: ```python import time import RPi.GPIO as GPIO # 设置GPIO引脚 LED_PIN = 18 # 初始化GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) def transmit_message(message): for char in message: # 将字符转换为二进制 binary = bin(ord(char))[2:].zfill(8) # 发送二进制信号 for bit in binary: if bit == '1': GPIO.output(LED_PIN, GPIO.HIGH) else: GPIO.output(LED_PIN, GPIO.LOW) # 控制发送速度(根据实际情况调整) time.sleep(0.1) # 两个字符之间的间隔时间(根据实际情况调整) time.sleep(0.5) # 发送消息 transmit_message("Hello, World!") # 清理GPIO资源 GPIO.cleanup() ``` 这个示例使用树莓派的GPIO引脚来模拟光通信,通过控制LED的亮灭来传输二进制信号。 以下是一个简单的LLM代码示例,这里假设你是在C语言环境下进行开发: ```c #include <stdio.h> #include <string.h> // 定义消息缓冲区大小 #define BUFFER_SIZE 100 void process_message(char* message) { // 在这里实现对消息的处理逻辑 printf("Received message: %s\n", message); } int main() { char buffer[BUFFER_SIZE]; // 模拟接收消息 printf("Enter a message: "); fgets(buffer, BUFFER_SIZE, stdin); // 去除换行符 buffer[strcspn(buffer, "\n")] = '\0'; // 处理消息 process_message(buffer); return 0; } ``` 这个示例是一个简单的命令行程序,通过用户输入来模拟接收消息,并在控制台上输出收到的消息。 希望这些示例能对你有所帮助!如果你有任何其他问题,可以继续问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值