临近岁末,毫末智行在自己的品牌AIDay技术活动中,展示了比较完善的感知和规划系统框架。尤其在感知系统的设计中,显示出了对于应用新技术的决心和信心。特别是其相对于7月份公布的感知体系设计中,已出现了较大幅度的变化,具体体现在对于Transformer技术的引进和应用上。这种在神经网络架构技术上的进步,符合当今计算机视觉进一步AI化的进步趋势,值得行业关注。
另,毫末智行的AIDay技术展示活动,仿效TeslaAI Day,为产业内同行提供了技术共享和交流的机会,是非常值得鼓励和推广的。小编期待在新年度看到更多自动驾驶企业站出来展示自己,丰富行业观点、碰撞技术思想,百家争鸣才能百尺竿头。
今天提供一个分析,是关于毫末智行(HAOMO AI)的AI Day的。
国内自动驾驶产业内,似乎这是唯一一家能看到定期举办AI Day来向公众推介自己自动驾驶技术进展的企业(小编:在小编看来,自动驾驶产业现在基本就是99%的AI技术产业,自动驾驶行业算是大规模奋战在AI第一线的典型工业门类,而且连带理论技术和工业现场控制,产业链条齐全、上下游完备且技术门派众多,类似推介活动被称作AI Day简直再合适不过了)。小编也是在因为准备近期关于Tesla FSD beta应用Transformer网络技术的系列文章而检索资料的过程中意外看到的,还正好是上周四(12月23日)的event新鲜出炉,像模像样的。再往前看,今年七月份的时候毫末还有一次AI Day,只是那次的资料不太容易查得到。不管如何,小编对类似活动的举办表示赞赏,技术创始人往台上一站侃侃而谈,也透着足够的乐观和自信…..自信的企业,未来总是可期的。
话不多说,我们主要关注的是毫末智行在其MANA(雪湖系统)中感知系统的技术变化。
图一【Haomo-1.png】来自Haomo AI Day主题演讲视频截图,底图URL https://www.bilibili.com/video/BV1ZY411H7dL?from=search&seid=9615227356111436131&spm_id_from=333.337.0.0 ;
按照Haomo创始人的说法,这是今年七月份毫末智行所展示的感知系统框图。绘制的有点怪异,因为这张框图左半侧的视觉camera部分是从上往下看的,而右半侧的的lidar激光雷达部分是从下往上看的,有点拧巴。
先看左侧,从左上角的camera/单摄像头(小编:毫末似乎是没有使用双目,而是标准的单目)开始,数据数据被camera捕捉之后,经过ISP(Image Signal Process)数字处理过程后,提供给后端的神经网络开始使用。这里需要关注的是,一般的视觉感知过程中,不会特别提到ISP这个环节,因为这是一个标准的图像信号处理环节,往往被内置到Camera硬件内部实现。单独提出来作为一个环节,很可能毫末的ISP里集成了更多的传统ISP功能,比如动态校准——Dynamic Rectify功能。在Tesla的感知堆栈中,特别提到了这个环节,我们在之前关于Tesla感知系统的分析中也提到过:
图二【Haomo-2.png】来自TeslaAI day主题演讲视频截图,底图URL https://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s ;
在Tesla的camera之后的数据,被送入神经网络结构RegNet之前,也需要经历这么一个特殊的校准过程Rectify Layer。毫末创始人在这次AI Day上并未提及这个框架的细节(小编:因为上次AI Day已经谈过了),但对比Tesla的Karpathy,还是在Tesla夏天的那次AI Day上明确介绍了这一层Rectify Layer的具体功能:
图三【Haomo-3.png】来自TeslaAI day主题演讲视频截图,底图URL https://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s ;
感兴趣的读者可以去翻翻我们之前的技术文章,有过对于Tesla Rectify layer的专门讲解。但今天放在这里只是对于毫末智行架构中的ISP模块的对照。简单说,相机是需要非常精细对待的传感器。这种精细的对待不仅体现在摄像头自身的品质控制(所谓相机的内参),还更多体现在摄像头(小编:主要是外参)全生命周期内的持续高水平维护上。这点上看Camera和Lidar并无二至。车辆十数年的行驶周期内,工况恶劣是常态,如果不能持之以恒提供全生命周期的检验和自我维护能力(小编:当然是一定程度内的自我维护能力),将大大降低出勤率和安全性,这是大忌。Tesla的做法比较典型。图三中的上半部分显示了Tesla数据中心对于整个Tesla fleet全部车辆的统计级别的规律把握。在针对相机受震动、冲击和风吹日晒的各种工况下的滚动roll、俯仰pitch和偏航yaw三个角度的统计,反过来可以指导每一辆具体的物理车辆进行自主的摄像头camera外参校准。这个校准过程并不需要在通常意义下所必须存在的camera校准源尺度(小编:比如那种校准黑白色格图案),而依赖车队提供的统计结果即可完成校准过程。校准通常是电子化的,目标是尽可能让camera的成像最有利区域,严格指向预定义的camera朝向。在小编看来,还是一种很新颖的实施落地方案。
图四【Haomo-5.png】来自知乎@熊猫之吻的问题回答截图,显示了Tesla车辆在产线上的camera外参校准过程,URL https://www.zhihu.com/question/363389702?sort=created ;
考虑到毫末智行和Tesla都依赖单目摄像头的视觉系统,因此对于摄像头的全生命周期内的光学-电子成像的联合校准过程就显得尤为必要了。因此也许,毫末的ISP过程,除去传统的ISP功能之外(小编:通常是对于成像的曝光、色彩、白平衡等参数的调整),也涵盖校准过程。
ISP过程之后,视觉数据被送入Backbone,毫末智行称其为“DarkNet”。从图示看,应该是标准的CNN ResNet(残差网络),具体结构不详,这里的ResNet下到底用了多少层没提。但Backbone的输出能力还是应该符合CNN backbone的基本原则:Backbone通过CNN的视觉处理方法,为上层的Task和Head应用提供足够丰富的图像特征库Feature lib,以供后续处理。
分为这三类是因为这三类任务在各自内部的子任务上,具备一定的共性,因此而设计出类似的层叠复用结构,让各自最终的子任务Head,能实现尽可能的计算算力资源复用、网络结构复用和数据获取及训练方法的复用。从这个角度看,这种设计和Tesla的HydraNet架构思路一致。
毫末智行有特色的地方在于,专门为Global全局的视觉场识别,设定了一个独立的Neck——Head结构,独立于Road和Object的识别子任务。这个新想法还是比较独特的,至少小编没有在Tesla的FSD中看到过类似任务的存在。从结构图图示看,Global task应该是专门针对开放空间、可行驶区域和障碍物的整体识别。小编推测,他不会去区别具体障碍物是什么,也不会区别道路结构;而只是识别是否有视觉上的障碍物,和是否前方为free space……这个独立任务结构的存在,可以一定程度上避免视觉系统常犯的错误:我没看到过的就不存在。
当然,Tesla目前有比较成型的、针对voxel体素的视觉感知机制,作用差不多。
另外一个完全独立的存在是Lidar识别堆栈,小编这里就不展开讲了。典型地,在Lidar所感知的pillar数据结构上,进行2DCNN backbone处理并形成BEV俯视图。在BEV的基准上,完成指定Head的后处理(小编:至于是哪些子任务,框图上字太模糊了,看不清楚)。应该特别关注的是,毫末智行在这一版本的识别堆栈中,Camera的纯视觉和Lidar的纯激光感知,在各自的识别结果出来之前是完全各自独立的。图1所示的技术框图中,两个堆栈完全各自独立,没有交集和融合,也就是没有所谓的前融合技术。这个思路和Mobileye的思路一致,好处是:两个系统各自独立的实际后果是可以给对方提供备份能力,这也是Mobileye所强调的;坏处是:没办法发挥Lidar和camera这两种异构传感器互补的性质,不能从raw data上联合地提取最有价值的融合信息。
虽然图一的识别框图上没有显示,但后端融合的过程还是必然存在的,camera的视觉识别结果因为信息厚度更好,而lidar的测距能力更强,在各自的识别结果上做后融合也是相当不错的选择。这也是Tesla FSD可望不可及的能力。
根据毫末智行创始人在AI Day上的介绍,迄今为止的架构设计上,还是存在问题需要克服。最关键的问题在于,现有识别系统存在“时间上的感知不连续、空间上的感知碎片化”的问题。具体解释为:Camera和Lidar的识别,都是以时间上断续的frame为单元来实施的,并未设计跨越时间尺度的、frame by frame的时域网络来处理这个问题;而空间上的感知碎片化则意味着,车身四周的Lidar、camera由于角度安装的多个传感器实体,无法实现空间域内的连续覆盖和统一识别。直接结果就是造成一个超长或者超尺寸的物体被多个传感器捕捉,从而被错误识别为多个目标的现象(小编:这个问题在早期的Autopilot上也普遍存在,直到Autopilot的3D化)。如果要脱离固定场景内(小编:例如高速公路)的ADAS级别的自动驾驶能力限定,让自动驾驶车辆活跃于更大的空间,则需要提供全时、全传感器的整体识别能力建设,这个目标大家都是一致的。Elon Musk在2020年吹了一整
年的Autopilot-3d识别就是这个意思。
但实际上毫末创始人所提到的这两个问题,实际并非毫末在新架构中引入Transformer技术所要解决的问题范畴,这也是小编最关注的问题。Transformer在毫末MANA感知堆栈中,实际另有他用。
图五【Haomo-4.png】来自Haomo AI Day主题演讲视频截图,底图URL https://www.bilibili.com/video/BV1ZY411H7dL?from=search&seid=9615227356111436131&spm_id_from=333.337.0.0 ;
上图5呈现了当前MANA感知架构的基本结构,已经表现出和上一版本图1所展现的camera/lidar各自为战框架的重大改进。如果从呼应毫末智行创始人表述的“时间上的感知不连续、空间上的感知碎片化”的问题为出发点,那么上图5框架中的“Feature queue”和“Temporal-spatial fusion”两个层面的模块(小编:从下往上的第2层和第3层),则对应解决时间上不连续、空间上碎片化的感知痼疾问题;如果读者愿意从更关键的、更深层次的角度去思考如何克服毫末智行上一代的视觉camera和雷达Lidar各自为战、且效率相对不佳的后融合策略这个问题的角度出发,我们就更应该关注毫末在最底层——Cross-domain association Layer的设计。
虽然毫末创始人在这一块的讲解很简略,图5感知堆栈中对这一底层部分的刻画也是寥寥,但实际上发生在这一步上的变化,至少从小编的视角来看,是一个比较彻底的变化。
图六【Haomo-6.png】来自Haomo AI Day主题演讲视频截图,底图URL https://www.bilibili.com/video/BV1ZY411H7dL?from=search&seid=9615227356111436131&spm_id_from=333.337.0.0 ;
严格上讲,虽然Tesla在FSDbeta中确实是创新性地部署了Transformer network,但实际上在FSD的应用中,Transformer的作用非常有限。其只是利用了Transformer技术在对于图像信息(小编:指针对camera提供的投影信息)进行“自注意力/Self Attention”全画幅关系的捕捉和跨视角图像信息(小编:指针对camera投影信息和计算出来的BEV俯视信息)之间视角转换所必须的“互注意力/Cross Attention”关系的刻画和转化。
读者可能会觉得拗口和难理解,但实际这就是Transformer的精髓:在Tesla的FSD内部,它就干了这两件事儿,对于投影像素平面的“刻画”、以及对于投影平面和BEV平面之间的“转化”。
但对于毫末智行来说,至少毫末这位技术创始人在AI Day上所描述的,Transformer不仅仅完成了对于纯视觉信息的BEV的视场角度转化,而且完成了camera和lidar之间异构但互补的传感器信息的融合,即所谓的跨模态raw data的融合工作。当然在图6中是看不出这种跨模态的融合具体是如何完成的,但大致上的流程应该如下:
第一步,将camera视觉数据做CNN的backbone处理,经由Resnet提取视觉数据的feature;同时在lidar数据通道将激光雷达所捕获的pillar数据进行处理并同样送入backbone CNN进行2D特征提取(小编:注意和camera的差别是,Lidar可以一步到位到BEV俯视图角度的feature输出);
第二步,将视觉数据的2D投影平面的处理结果送入Transformer,一个是进行视角转换操作,另一个是进行多摄像头数据缝合,输出一张BEV俯视图,并携带关键特征和语义识别结果;
第三步,在BEV俯视图基准内,将Lidar特征数据和camera特征数据进行融合。具体融合策略不详。
其实这其中最关键的就是第三步,由于框图所携带的信息过于粗略(小编:注意看上图6,实际上这里并没有解释清楚Lidar数据是如何和camera的视觉数据产生融合的,而只是描述出和视觉输出特征共同构成向上的张量,这里面的门道和选择可就多了),我们并不清楚这个融合过程和Transformer技术之间的具体关系。虽然理论上Transformer确实可以执行跨模态的特征融合,但在毫末架构中是否利用了这个特性并无实际证据。因此,基于合理的猜测,也只能是猜测:可能毫末对于Transformer的采用也仅限于对于视觉信息的视场转换任务和多摄像头缝合等类似任务(小编:by Cross-Attention的transformer结构,关于这方面的资料可以参考车右智能正在续写的的公众号系列文章,讨论Tesla FSD beta的transformer实现);也可能在此transformer的应用之外,毫末还利用了对于lidar+video融合数据的自注意力能力/Self-Attention来获取真正的融合,从而提升感知任务的能力……都有可能,前者居多。
小编在此特意翻了一篇相关论文《Multi-model fusion transformer for end-to-end autonomous driving》(德国),以其架构为例,来解释一下什么是跨模态数据融合。
图七【Haomo-7.png】来自论文《Multi-model fusion transformer for end-to-end autonomous driving》的插图,URL:https://arxiv.org/pdf/2104.09224.pdf;
上图7所示,主车的传感器Lidar感受到了路口左侧的车辆群落,并且是精确感知(高置信度)。而传感器Camera感知到了右侧指示垂直车道的交通信号灯系统显示为绿色,并且是语义级别的感知。因此,主车(绿色)如何将左右两侧的异构传感器获取的数据做一个全局感知,就是自己决策的关键输入。可以考虑一个极端场景,车辆左侧摄像头受到遮挡而无法看到红色车流,而lidar又天然无法检测红绿灯状态,如果此刻前方红绿灯要处于故障状态……那么,论文中所设计的TransFuser就是用于此种场景的。
Transformer用于几何特征投影之间的转换,从投影视角到BEV俯视视角的转化工作当然是不错的,但显然没能发挥Attention注意力的要旨。更高级别地使用Transformer的注意力机制将关于3D场景的全局上下文推理直接集成到不同模态的特征提取层中。考虑互补的单摄像头的视图图像和 Lidar 输入,重点就是集成来自不同类型模态的表示。论文将生成的模型称为 TransFuser,并将其集成到专为端到端驾驶设计的自回归路点预测框架中。
图八【Haomo-8.png】来自论文《Multi-model fusion transformer for end-to-end autonomous driving》的插图,URL:https://arxiv.org/pdf/2104.09224.pdf;
图8就是Transfuser的系统架构,可以看到Lidar和camera的信息被采集后,分别在各自的管道内利用ResNet-34/ResNet-18进行分步骤地特征提取操作,但在各自特征feature不断增加的流程中,将二者特征进行Transformer的自注意力图谱提取(小编:上图的右上角展示了这个细分的过程),这是跨越全局Lidar感受和camera感受图幅尺度的,这是掌握异构数据下,共性的全局自注意力信息的合理方法。只要有良好的训练数据,主车会学习到兼顾读取不同传感器送上来的有效数据,并作出类人甚至超人的最终路径规划和决策。
图8架构中后续还涉及了路径规划和控制过程,属于端到端的神经网络。当然后半部分不是我们现在所关心的,就不费笔墨了。当然因为是端到端,所以Lidar和camera最终到底学习到一个什么样的全局注意力图谱?我们是不清楚的,也没必要,因为他只是个中间过程而非最终结果。但Transfuser论文中的这个从传感器raw data到路径规划结果甚至方向油门输出的end-to-end架构尤其不可避免的缺陷,是一旦主车操控异动有悖常理甚至对行车安全构成危害,我们也不知道他到底是因为看到了什么才会如此操作的(小编:因为端到端end-to-end神经网络的不可解释性决定)。
毫末智行对于Transformer部署的第一步不管是在何种程度上利用了自注意力和交互注意力的特性,都是迈向前方的一大步。虽然今年以来MLP多层感知技术再次浮出水面并洄游计算机视觉领域,但Transformer的技术优势,尤其是跨模态融合识别,依然是有吸引力并且值得在落地技术中尝试部署的。
图九【Haomo-11.png】来自Haomo AI Day主题演讲和Tesla AI Day主题演讲的视频截图拼图,底图URL https://www.bilibili.com/video/BV1ZY411H7dLfrom=search&seid=9615227356111436131&spm_id_from=333.337.0.0 ;
回到关于如何破解“时间上的碎片化和物理空间上的不连续”的感知难题,其实如果对比毫末智行和Tesla FSD感知系统的实现方法,你就会发现其实大家的思路差不多的(小编:注意,这些架构设计都是公开的,源算法很多也都是公开的甚至本身就是开源算法,这方面不存在商业或者技术秘密可言。但就算在此基础上,能彻底解决自动驾驶的感知问题,或者取得任何有效的进展,都是客观的技术进步,对产业有义)。
图9中,毫末架构的feature queue层解决的是时间上的延续性问题,利用queue队列将时间上连续的特征放入RNN的识别队列,进行一定时间尺度上的连续识别,这也符合RNN的特性。Tesla也是这么实现的。另外一个尺度是地理尺度上的连续识别,有助于自动驾驶系统对于一些特别场景的理解(小编:比如Tesla提到过的,车辆在驶入转弯车道之前,地面那个转弯符号可能在路口主车真正执行转弯之前100米的地理位置上,这就需要地理尺度上的识别也要有连续性)。这里面可以观察到毫末和Tesla的识别方法的区别了:
• Tesla的方案是利用引入IMU来在毫秒ms尺度上测量车身连续的相对位置变化,从而构造出地理尺度上的连续感;具体应该是每27ms做一次车身位置测量并记录周围景物的感知特征入库,库的大小大概为8-10个27ms这个水平;
• Haomo的方案是利用更好的Lidar手段来实现tracking,还有optical flow光流加持。因为Lidar对于周边景物的感知结果同样可以在毫秒ms尺度上同时完成快速自身定位和景物特征感知,因此也可以实现在地理尺度上的连续感。也许这个方法精度更高,因为个人感觉,车载IMU的性能到底如何了还不清楚,反正手机上的是一塌糊涂的;
最后再插一个对于MANA认知系统上的理解吧,毫末这里对于认知部分的定义相当于传统架构中的“路径规划”算法部分,感觉还是可以谈一下:
图十【Haomo-9.png】来自Haomo AI Day主题演讲视频截图,底图URL https://www.bilibili.com/video/BV1ZY411H7dL?from=search&seid=9615227356111436131&spm_id_from=333.337.0.0 ;
图10显示了毫末对于场景的分类方法,其核心的地方应该在于上图中的横纵坐标的单位和物理含义。掌握大量的数据其实不难,但要合理和充分地利用这些数据,并在数据中挖掘有价值的部分实现针对性利用,从而控制资源的消耗,就很难了。这里这个对于场景的分类方法,是合理利用这些数据(小编:图中的哪些点代表每一次驾驶的场景特性)的前提。小编猜想这是两个维度的场景特性描述,比如横坐标是路程耗时时长或者速度等时域相关的指标,纵坐标是对于天气和路况特性的一种衡量指标。两个指标都经过未知的算法换算,从而充分表达出在固定地理区域内,场景的多样性和“可总结性”。
此时通过合理的聚类方法,就可以选出有代表性的场景来了。这是迈向合理场景分类的第一步。按照毫末后续的介绍,也是提供给后面各种训练方法的场景依据。
总得看,毫末的新架构调整确实有不少新东西,我们也期待能看到更多的自动驾驶厂家以此为标杆,能向产业show出更多干货,互通有无,共同前进。
另:毫末智行AI Day的视频回顾在B站上有完整记录,有兴趣的读者可以移步观摩:https://www.bilibili.com/video/BV1ZY411H7dL?from=search&seid=9615227356111436131&spm_id_from=333.337.0.0。
1 题图文件,来自互联网,URL:https://www.blickfeld.com/blog/lidar-in-drones/ ;