关于Autopilot系统被破解的Assist app UI,我们之前已经介绍过两期了,主要是集中在Autopilot视觉识别系统对于“道路结构化”的识别和UI展示,包括Route-Path级别的识别和非常关键的可行驶区域的识别。根据破解者的推测,此App的UI展示界面的主要功能是给人类看的(主要应该是针对Tesla的工程人员或者售后实车勘测工程师之类的),而不是给车(Autopilot域控制器功能)看的。但是通过针对人类的UI界面,可以让我们了解到Autopilot系统能力特别是感知能力现在终究是做到了什么程度,这个还是很有益的“破解”结果,但是破解方(一个Tweet上名字叫@Green的Tesla Hacker)似乎没有给出更多信息和评论,感觉他只是关注“破解”本身,而非结果和其寓意。
我们今天再继续我们之前的分析,重点观察Autopilot系统对于道路上的动静目标的识别和处理结果,这比之前看到过的研发阶段的Autopilot视觉识别结果的展示片段(我们之前有过一篇公众号“Autopilot系统30秒”),内容要丰富得多。小编根据我们的学习心得,分内容进行展示和解说。
【图中的箭头标志是小编所添加的】
上图显示当Tesla车辆等候红灯预备直行穿越路口时的视觉捕捉和感知结果的状态呈现。首先是图片底部,以白色文字所显示的“场景信息”和做出判读的“感知神经网络模块信息”两部分内容:(文字从左到右)
1 City_Streets,属于城市内部道路,区别于“封闭的高速公路”场景;在本次FSD Beta版本小规模测试推送当中,只有当Tesla车辆行驶在“城市内部道路”(或者也可以理解为社区道路和城市内主干道、支道)上,FSD的独有简化界面才会出现在驾驶舱内的UI显示体系当中。一旦进入高速路或者封闭道路场景下,则回归传统的AutopilotUI风格;
2 Stops_BEV,按照字面理解应该是车辆停滞状态下的鸟瞰图,但实际观察即便车辆运动状态,这个显示状态也始终存在。BEV应该是指Tesla所拥有的一种Birds Eye View=BEV Net一个神经网络模型,主要用途是将来自车身四周8个摄像头所捕捉的视觉信息,在经过各自摄像头所属的Backbone CNN网络进行图形特征提取,以及非常重要的像素级别的深度信息分析和确定之后,再根据具体需求进行Stiching(缝合)和Projecting(投影)两个步骤的转化(这里需要注意的是,Tesla车辆四周的8个摄像头,理论上应该是只有前向才有三个摄像头Main/Fisheye/Remote才有完全的视场重叠,在这个方向上的深度信息提取在理论上将是最重要也是最准确的,其它方向则只有利用单摄像头的深度信息估计……)将其以鸟瞰图的俯视角度投影到平面上,从而给后续的自动驾驶路径决策提供基础模板。
小编确实不了解Stops_BEV在这里的具体含义,不解不过问题不大,不影响我们在大体上的理解。翻了翻之前的Karpathy演讲的相关资料,关于BEV Net的形成过程如下图所示:
小编帮助大家回忆一下具体内容,车身摄像头提供不同方向的视觉信息,这些信息在经由CNN的Backbone网络提取视觉特征之后,携带最关键的、最有效的视觉数据进入Fusion layer神经网络模块进行缝制过程。如果是面临上图中的十字路口道路边界和可行驶区域的预测任务,则需要至少五台摄像机的数据(不需要尾部摄像头数据,道路拓扑中车辆的尾部信息为时间记忆处理结果)。之后进入Temporalmodule和BEV Net,前者功能不详,后者则是将Fusion模块的缝制全景数据投射到俯视平面上。
我们在这里应该有一个深刻的意识,就是Autopilot系统内部通过神经网络方式实现的软件功能,占比应该是不低的。在面临巨大数据量和海量场景的自动驾驶行业,神经网络实现的代码占比越高,天然就会更有优势。小编是坚定支持这个技术流派的。
3 HydraNET_Backup和HydraNET_Selfie模块。HydraNet同样为神经网络模型的代号,因为其在标准CNN(ResNet-50)模型的基础上提供了对多种任务识别的支撑,所以类似一个鸟长了九个头(Head)。这个多任务网络结构相信大家都很清楚了,不再赘述。在此出现的Backup和Selfie两个HydraNET应该是分别对应尾部摄像头和舱内的驾驶员摄像头(驾驶舱摄像头迄今还未投入使用),但出现在上图这个前向视角还是没理解什么具体含义。
4 Objects3D_Main,Objects3D_Narrow和Objects3D_Fisheye,这三个部分还是神经网络任务的代号。我们这里注意区分一下,在Autopilot识别模块中的神经网络结构内,“任务”和前述的NN网络结构是不一样的概念。HydraNet对应的是识别网络的多任务网络结构,而对于具体道路场景下的物体的识别,则为多任务网络结构所提供的具体识别“任务/Task”。小编再贴一张图,一望便知:
上图中的底部基座即为CNN卷积神经网络结构ResNet-50,而基于其基础之上的细分Head可以看作分别对应着不同的任务Task的细分神经网络结构。以上图为例,红色部分对应着如果需要对于动目标/Moving Objects进行识别和预测,那么就需要从底部基座到头部遍历对应的神经网络结构。那么在我们今天讨论的“Objects3D_Main,Objects3D_Narrow和Objects3D_Fisheye”三个模块,就可以理解为前向三个摄像头中对于目标(包含动目标和静止目标)的识别Head结构,而且是带有深度信息的3D预测能力。
Tesla曾经提交过类似多任务神经网络结构设计的专利,我们在之前的文章中有过部分讨论(当时没写完)。后续小编关注这个领域的时候发现,其实各家(不仅仅包含自动驾驶企业)在实现“多任务神经网络”设计,特别是用于“识别”功能的,其实基本上都是大差不差。所以更印证了在当下这个信息爆炸的社会,所谓的“专利”在独创性上希望收到核心保护的机会是非常小的,更多都是一种知识产权的“防御工具”。有兴趣的读者可以回看我们当时的分析文章和其中给出的专利链接:
“什么是Data Pipeline?——Tesla Autopilot神经网络结构”(两期内容),URL:https://mp.weixin.qq.com/s?__biz=MzU2MDgzODY4MA==&mid=2247484225&idx=1&sn=2e0e78d271a18881d7adb204a31bee99&chksm=fc00a236cb772b20ea74903f6a9c2e48c84c5010d912b9d36f39aa91ae70639929f9aa65f0a3&token=1042721373&lang=zh_CN#rd;
5 左下角的Main和右上角的AP,分别意味着本画面是由Main Camera提供,且本车处于Autopilot的自动驾驶状态。
【图中的箭头标志是小编所添加的】
继续分析。上图中左上部的文字信息主要分三大块内容:
1 最上面的是本车状态,包括速度/Ego Speed,单位是Mile per Hour;本次记录起始时间,单位是秒;和本车的姿态信息,P-俯仰角度,Y-偏航角度,R-滚转角度。根据小编的观察,从头到尾这三个数值都是固定值,推测应该是本次信息记录起始时候的车身姿态,之后就再没有更新。美国的公路路面再平整也不可能让车辆姿态从头到尾一直保持一个数据不改变,最有可能的是在“识别功能”中,车身姿态信息暂时是不利用的,因此忽略。
这里插一句,小编曾经看到过对于百度Apollo Lite纯视觉自动驾驶系统的报道文章,里面关于主车的姿态条件对于视觉识别(主要是深度信息的预测)和路径规划的影响是有比较详尽和周密的考虑的,如下:
【以下内容来自百度Apollo Lite技术文章“百度背叛激光雷达路线了吗?”一文中相关章节的引用。URL:https://mp.weixin.qq.com/s/_TJfWd605OK7mO736yufPg】
======
传统算法计算2D检测框的框底中心后通过道路平面假设和几何推理物体深度信息,这类方法简单轻量,但对2D框检测完整性和道路的坡度曲率等有较强的依赖假设,对遮挡和车辆颠簸比较敏感,算法欠缺鲁棒性,不足以应对复杂城市道路上的3D检测任务。Apollo Lite延续「模型学习+几何推理」框架同时对方法细节进行了大量打磨升级。
模型学习 – 数据和学习层面,利用激光雷达的点云数据【小编注:Apollo Lite在训练阶段时需要Lidar数据辅助进行监督训练的,实际部署时属于单纯的视觉系统】将2D标注框和3D检测框关联,在标注阶段为每个2D包围框赋予了物理世界中的距离、尺寸、朝向、遮挡状态/比例等信息。通过从安装相同摄像头(Camera configuration)并配备高线数激光雷达的百度L4自动驾驶车队获取海量时空对齐的「图像+点云」数据,训练阶段DNN(Deep neural networks)网络模型从图像appearance信息做障碍物端到端的三维属性预测,模型端完成从仅预测2D结果到学习2D+3D信息的升级,将传统“几何推理”后处理模块的任务大程度向模型端前置【小编注:将几何推理的计算力消耗和对于多样性场景的处理压力,统统转交给DNN网络,是现在无可争议的技术趋势。】,“深度学习+数据驱动”为提升预测效果提供了便捷有效的路径和更高的天花板。在添加模型端3D预测能力外,为给后续几何约束阶段提供丰富的图像线索,针对不同位置/朝向相机的安装观测特性,模型从学习障碍物矩形包围框拓展到预测更多维度更细粒度的特征,如车轮和车底接地轮廓线。
几何推理–将模型输出的图像视觉特征作为观测值,障碍物空间位置朝向和尺寸作为未知参数,基于相机姿态和经典投影几何(Projective geometry)可计算3D到2D的投影。理想条件下3D元素投影到相机的坐标和2D特征观测应该重合,由于3D信息预测误差的存在,模型输出3D投影和2D图像观测会存在一定偏差,几何推理的作用是通过场景先验和视觉几何原理对模型输出的障碍物3D初值进行优化,以此得到2D-to-3D的精确结果。投影计算方程依赖对相机的姿态进行实时估计,理想情况假设相机水平安装,视线与路面平行,俯仰角接近为0°。车辆行驶中,受地面坡度起伏影响,相机相对地面的姿态不断变化,精准估计车辆运动中相机俯仰角是求解3D-to-2D投影的必要条件,我们称这个步骤在线标定。【小编注:根据这里的技术描述,在2D到3D的过程中,Apollo Lite还是需要一个标准的几何过程,而非Tesla Autopilot系统中所采用的双焦距-双摄像头的DNN方法。】Apollo Lite在线标定算法并不依赖高精地图,通过学习道路上线状特征如车道线和马路边沿,拟合出多条空间中的平行线在图像投影上的交点 — 消失点(Vanishing point),基于透视几何原理,可精确估计车辆行驶中相机俯仰角的实时变化的情况。
经过精细化打磨的2D-to-3D算法显著提升了Apollo Lite在复杂城市道路下的自动驾驶能力和乘坐体验,因“3D位置估计不准”衍生的驾驶策略缺陷如碰撞风险、急刹等事件发生频率大幅降低,与之相关的接管频次和急刹频次指标分别下降90%和80%,200m内车辆距离估计平均相对距离误差低于4.5%,行人与非机动车平均相对距离误差低于5%。
======
上述关于Apollo Lite的技术描述中我们可以看到百度关注车辆姿态因素(主要是俯仰角)在2D-to-3D过程中的影响消除,读者应该关注依赖视觉技术的打磨,考虑和不考虑车辆姿态因素的算法,最终可以造成较为明显的道路其它使用目标的深度信息估计精度。小编暂时没有看到Autopilot系统中是否在对象(道路使用者-动目标)深度信息识别中是否真的是完全不考虑使用车体姿态信息的任何有效证据,但如果从Elon Musk同志经常使用的“第一性原理”为出发点,对类似问题我们不妨做以下推测:
如果人类驾驶员在双目视觉测距能力无法精确到cm/厘米级别,可能有相当一部分驾驶员都到不了m/米级别的前提下,依然可以熟练地驾驶车辆穿梭在密集的交通流中,而大概率保证不会发生车辆碰撞和急刹的事件。那么基于机器和AI的自动驾驶系统是否在现阶段一定需要Lidar类激光传感器提供远远超过人类的距离估算能力,可能就是不必要的。考虑到人类迄今为止建立的交通系统,包含道路系统、道路驾驶规则、车辆设计和驾驶员培训规则……等等已经构成一个拥有巨大惯性(包括各种约定俗成或者明文规定的法规、惯例和人类司机的使用习惯)的庞杂系统,那么在整体的自动化改造过程中一上来就要求车辆主体具备远远“超越人类驾驶员能力”的实现路径,就显得在成本上不是特别现实,也没有这个必要。
以百度的Apollo Lite在基于视觉信息对于车距估计的方法上做出的有效尝试,200m内的车辆距离平均相对误差低于4.5%来看,大概是9-10m的误差均值。如果测量结果符合正态分布,那也意味着在近距离(比如车辆实际间隔小于10m的场景下),车辆之间的距离估算如果依赖视觉信息,也会有m/米级别(Tesla没有公布类似数据)。这是一个安全的估算精度嘛?仁者见仁了,但这一定是一个从成本上讲更合理的实现方法。
另外需要考虑的一个条件是,如果车距处于非常近距离的状态下,多数车速不会太快,不论是绝对速度还是两车之间的相对速度。在这个场景下,不管是Tesla还是Apollo Lite,也都还有更好的测量手段——超声波系统,可能在这个间距范围内,超声波系统会是更好的间距测量手段,好过纯视觉。因此从这个角度看纯视觉的自动驾驶系统,确实是一个比较好的折中选择。
上图中可以看到,Autopilot在行驶过程中对于路侧的水泥马路上街沿,有明确的超声波Ultrasonic信号反馈呈现在驾驶员的控制面板之上,而且有理由相信,在这个条件下,车辆的横向机动控制回路中,会采用Ultrasonic传感器的有效测距结果。
让我们回到之前的话题,在assist APP的UI中,文字部分我们还可以看到关于Vision FPS的字样。这个应该是Frame per Second的含义,指当下时刻Autopilot正在处理的摄像头传感器提供的数据流量,FPS为单位,大致在每秒钟20FPS这个范围上下浮动。图中下部的文字还是我们在之前公众号文章“Autopilot30秒”中所提到过的场景分类描述:
可以看到在之前的Autopilot系统UI(内部)里面,对于场景的定义还是比较丰富的。箭头所指之处,至少罗列了八种交通驾驶场景,其中经DNN分类预测后得分最高的场景是绿色的“Wet_Road”/潮湿道路环境场景。但目前的场景定义中,我们只看到Blinded和Smooth_Sailing两个场景,且得分为零(长时间为零)。按照系统常识,在感知阶段如果可以整合DNN(对于Tesla来说是HydraNET结构)网络对道路场景做出分类,则对于系统后端的路径规划、对象预测甚至驾驶机动的风格选择都有增益。虽然目前这个版本看不到FSD在这个分类上的具体结果,但是这个分类动作还是必要的。
考虑到整体篇幅,今天我们暂时搁笔,后续我们继续分析FSD眼中的观测细节。敬请期待。
车右智能
一个一直用心仿真的自动驾驶技术信徒
info@co-driver.ai
备注:
1 题图来自互联网搜索;
2 文中插图1/4来自于推特账户@Green的推文的截图;
3 文中插图2/3来自于Tesla AI总监Andrej Karpathy在ScaledML Converence上的技术演讲截屏, URL:https://www.youtube.com/watch?v=hx7BXih7zx8&t=1191s&pbjreload=101;
4 文中插图5来自于公众号“悦智网”的技术文章“百度背叛激光雷达路线了吗?”中的插图,URL:https://mp.weixin.qq.com/s/_TJfWd605OK7mO736yufPg;
5 文中插图6来自于Youtube账号@Whole Mars Catalog的视频截图,URL:https://www.youtube.com/watch?v=fxiHbaO8uMM;
6 文中插图7来自于Youtube的@Wes Bard视频,链接如下:https://www.youtube.com/watch?v=zRnSmw1i_DQ;
相关联文章:
1增强的识别效果 ——Autopilot assist app系统破解后的识别结果展示 (1);
2各司其职相得益彰,Autopilot相机间的配合 ——Autopilot assist app系统破解后的识别结果展示 (2)