从传统CV到CNN 自动驾驶车辆上街还需多久

描述

尽管汽车工业目前正集中讨论自动驾驶,但要让完全自主的车辆驶上街道还需要一段时间。技术和产业发展永远都是渐进式的,一步一步这些技术必须足够强大,同时满足ISO 26262等一系列汽车行业的安全标准。

目前,包括Waymo在内的多家自动驾驶领域的头部企业都在加快L4级无人驾驶的商业化落地,但前提是目前仅仅是各国的交通主管部门或者政策制定者提供了一个相对宽松的“鼓励政策”。

但量产,意味着技术和产品的成熟,供应链的成本下降到大规模应用的甜蜜点。这仍然需要行业在技术上的突破。

SAE的J3016标准确定了从“非自动化”到“完全自动化”的六个驾驶自动化级别(0级到5级)。自2010以来,驾驶辅助功能(ADAS),如ACC(自动巡航控制),LKA(车道保持辅助),LCA(车道变换辅助)或CTA(交叉交通警报)等已经出现了越来越多的量产车型上。

在下一步(从2019年到2020年),这些系统被进一步集成以实现诸如AEB(自动紧急制动)或TJA(交通堵塞辅助)等功能,目前这几项功能在2019年上市车型中已经出现渗透率不断上升的趋势。

而L3级公路自动驾驶仍然需要驾驶员负责,并且必须能够在短时间内进行干预,这对于量产车而言仍然具备一定的难度。目前也仅有少数几款车型在尝试提供给消费者使用,但成熟度仍然存在挑战。

技术和市场的进步几乎总是遵循相似的模式。最初,一种新技术作为一种创新出现,使新的应用成为可能。这通常与客户方面的高期望相关,与技术的成熟度水平形成鲜明对比。

ADAS和AD技术正是遵循这一曲线,基于现有的控制技术(例如,转向控制、驱动控制)、GPS和HMI技术,用于L1级应用的传感器技术(雷达、超声波、摄像头等)是多年前开发的。

这些应用已经达到了量产成熟度,汽车制造商现在可以付出更低的成本获得更多智能的摄像头和高性能的毫米波雷达(ABCD的新一代雷达大多是在今年底到明年真正量产)——所以,它们现在具有最高的增长率。

从2019年开始,具有L3级应用的车辆将可用于批量生产,但L4级和5级是目前讨论最多的,可是技术的成熟度仍然很低,尤其是深层神经网络(DNN/CNN)被认为是L4级最有前景的应用和补充,但其效用仍需在测试中去得到证实。

迄今为止,汽车行业仍然大部分在沿用传统的视觉及数据计算方法。不同的传感器,例如摄像头或雷达,由传感器层使用硬件加速器单独计算并创建单独的对象列表。

融合层创建一个360°环境模型,然后将此模型处理到抽象层,其中运行诸如自由空间检测或碰撞时间之类的函数,以确定驱动策略的关键参数。

下面的应用层使用这些参数来执行路径或运动规划,并为制动层生成命令。这种传统的方法可以用来实现NCAP应用程序和自动化级别达到L3级。

而目前,基于深层学习(DL)的算法是对上述传统计算路径的冗余。DL可以执行诸如语义分割、重新映射(如SLAM:同时定位和映射)、数据提取和驱动策略的确定之类的任务。

有两种可能的方法:无监督的DL(端到端)和有监督的DL。DL层控制车辆并向驾驶员提供允许在交通中进行更复杂操作的功能,尽管保留了传统的CV方法来监视来自DL层的决策。

自2011年以来,DL方法在基于图像的分类精度方面明显优于传统的CV方法,特别是使用DNNs和卷积神经网络(CNNs)。

我们从全球著名的数据测试集KittiVision的基准测试可以看到一些端倪。KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的计算机视觉算法评测数据集之一。

数据集用于评测立体匹配(stereo)、光流(flow)、场景流(sceneflow)、视觉里程计(visual odometry)、物体检测(object detection)和跟踪(tracking)、道路分割(road)、语义分割(semantics)等计算机视觉技术的性能。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据,每张图像中最多包含15辆车和30个行人,且存在不同程度的遮挡与截断。

KITTI道路检测基准:前20种算法中的80%基于CNN;汽车立体视觉基准:前20种算法中有一半是基于CNN;但汽车光流(在图像中发现移动物体)检测基准:前20种算法中的80%到90%仍然使用传统的CV方法。

从中可以看出,短期内仍是传统CV与CNN的融合效率更高。两种方式目前来看各有利弊,更关键的是现在的成熟量产芯片架构(车规级、低功耗、高性能)决定了量产方案的选择。

CNNs有四个关键点:准确性、网络拓扑、数据类型和数据层的大小。这些因素直接影响推理部分,这是实际的硬件加速器。这种硬件加速器的特征还包括四个参数:性能、功耗、内存带宽,当然还有成本。

在当前最先进的神经网络设计中,有两条主要途径是向前发展:通过提高性能MAC(Multiply Accumulate)来提高精度,或者在相同的精度水平上降低性能。作为一个经验法则:为了提高精度5%,性能必须增加10倍。

减轻性能提高的另一个主要研究领域是通过采用整数或甚至位表示来折衷数据类型。数据类型约简的适用性很大程度上取决于要解决的问题。

然而,目前的技术状态显示16位固定点相对于32位浮点具有1%的精度损失。从推理层的能量概念来看,有两个因素尤其不利:内存访问和浮点计算。

对DRAM的32位读访问将消耗640 PJ(Piojoule),而SRAM访问需要5 PJ。32位浮点乘法消耗3.7个PJ,而8位整数乘法仅需要0.2个PJ。

为了实现嵌入式系统的最低可能功耗,推理引擎将专门进行整数计算(16位,可能考虑更高的精度损失,8位)和无内存架构(最小化对DDR和本地SRAM的访问)。

传统的计算体系结构,如CPU和GPU,利用其高性能和高灵活性,是目前CNN学习和推理的主流。然而,这些措施并不是有效的,尤其是从电力消耗的角度来看。

对于5x5卷积滤波器,总共需要50个读(数据和操作数)、25个MAC和一个回写。这意味着每个MAC需要三个指令,其中指令效率仅为30%左右。

从能量的角度来看,这导致浮点计算大约425pj,其中60%是由于实际的浮点MAC操作——考虑到数据在本地缓存中。移动到16位不动点整数,能量消耗下降到276pJ,并且这其中只有10%是由于实际的MAC操作。结果,与传统的CPU/GPU架构相比,优化的CNN架构可以提供20倍的性能改进。

此外,未来的需求将需要更高的性能。如上所述,如果精度需要提高5%,那么CNN的性能必须提高10倍。

传感器和输入层的数量也增加了。今天的1兆像素(MP)传感器将被多个MP传感器(8×2MP或4×4MP)所取代。换句话说,性能应该增加10倍的倍数。

现在,可以预见,2019年将需要4TOPS(每秒Tera操作)的性能;2022年,要达到40TOPS或更多,换句话说:必须增加倍数为10的因子。

按照传统的CPU/GPU体系结构,最好的结果是在2年内性能提升2倍,同时将功耗保持在较低的水平,这需要整个通用芯片架构的变革。

而现有的处理器架构只能通过更高的功耗(50W及以上)来实现。(英伟达DRIVE AGX Xavier是在30 TOPS,30W功耗,预计量产时间是在2020年,满足L4级自动驾驶。)

在目前的计算体系结构中,需要通过提供更专用的硬件IP来保持在可控区域中的嵌入式功率。这将不像CPU/GPU那样灵活,但是允许更高的计算效率。

一直以来,包括NXP、瑞萨等传统汽车半导体厂商,都是通过DL硬件加速,集成基于现有算法的专用硬件IP来实现最佳性能/功率效率。这些IP使得CNN的高性能、低功耗的实现成为可能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分