论文方向探索-01

前言

这周在完成小论文投稿的同时,也一直在考虑开题结合专业知识的问题,但在此之前,对这两者必须要有相当程度的理解才行。本周工作主要是进一步了解自动驾驶感知方向的相关算法和新兴技术,以及与其他方向的结合和发展,同时撰写开题报告。

目标识别算法方面

基于计算机视觉技术的目标识别,主要目的是识别出图像中有什么物体,并输出这个物体在图像表示的场景中的位置和方向。对一个给定的图片进行目标识别,首先要判断有没有目标,如果没有目标,则检测和识别结束,如果有目标,就要进一步判断有几个目标,目标分别所在的位置,然后对目标进行分割,判断哪些像素点属于该目标。传统的目标识别算法的主要流程如下图所示:

传统的目标识别算法主要围绕特征选择和提取展开,通过设计人工特征算子,对输入图片进行特征提取。好的特征算子会使得物体类内之间的特征差距很小,而类间差距巨大,从而方便分类器将物体区分开来,实现计算机对不同目标的识别。深度学习进入该领域后,正是通过利用随机梯度下降法来不断更新神经元,而每一个神经元又是一个特征算子,从而不断训练出好的特征算子,提高分类能力。

在深度学习正式成为计算机视觉领域的主题之前,传统的手工特征图像算法一直是目标检测的主要方法。在早期计算资源不发达的背景下,研究人员的图像特征表达方法有限,只能尽可能的设计更加多元化的检测算法来进行弥补,包括早期的 SIFT 检测算法、HOG 检测算法和后来著名的 DPM 模型等。

深度学习之前的早期目标检测算法的发展历程如上图左边浅蓝色部分所示。 2013 年之后,神经网络和深度学习逐渐取代了传统的图像检测算法而成为目标检测的主流方法。纵观这几年的深度学习目标检测发展历程,基于深度学习算法的一系列目标检测算法大致可以分为两大流派

  • 两步走(two-stage)算法:先产生候选区域然后再进行CNN分类(R-CNN系列)
  • 一步走(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(yolo系列)

基于深度学习的视觉目标检测发展过程

随着深度学习在计算机视觉领域的不断发展,目标检测算法的两大流派之间也在不断的借鉴和相互改进中,无论使用哪种检测算法,最后都要在速度和精度之间找到一个最好的平衡。

目标分类方面

从数据维度,首先解决开集的问题。这是自动驾驶避免不了的问题,如何认识和规划驾驶场景中遇到的所有目标?从目前掌握的领域知识来看,我把自动驾驶里需要互动的目标分成了4大类。

这4个大类分别是交通参与者、交通设施、动物和路上其他障碍物。

交通参与者是在自动驾驶中最高级别的一些物体,需要尤其注意避免碰撞到它们,因为这些物体是有人的意志参与其中,通常是一些智能体,可以是人骑的车或者人开的车辆,这些物体一定要避免人员损伤。这些交通参与者是具有一定的理性,有自己的一些价值函数。我们通常会对它们做检测、跟踪,甚至在下游模块需要对每一个交通参与者做一定程度的预测,包括它们的行为预测和轨迹预测,所以这类物体的优先级非常高。

第二大类是路上出现的各种各样交通设施。交通设施是定义在交通场景中有一定功能属性的设施,比如车道线、交通灯、交通台、交通警物等。这些交通设施总体上规定了一个道路的结构,以及定义了可行驶区域,并且能告诉大家在这段可行性区域内,有怎样的交通规则,需要遵循怎样的交通信号。交通警示物比较典型,它本身也属于一个障碍物,比如一个水马或者一个雪糕桶,放在前面需要绕行它。同时,它又承担了一个警示的作用,表示在这个区域附近肯定存在着一些需要注意的施工场景或事故现场,即它本身含有一些功能,所以这类统称为交通设施。

第三大类是动物。动物是一个天然会运动的物体,那在自动驾驶场景中,运动和非运动物体对于下游的决策规划是非常重要的。如果是一个会运动的物体,可能需要对它的速度、运动状态进行估计。所以把动物单独分为一类,并且动物会动,但又不懂交通规则,可能会乱闯马路,所以这类物体跟交通参与者又有区别。

最后一类是在路上出现的其他障碍物。这里需要强调的是一定是路上的其他障碍物,有“路上”的定语。例如一个轮胎,它在行驶路的前方,会成为一个障碍物,同样轮胎放在路边,它与我们的行驶没有形成交互,就不需要定义这个轮胎,甚至不需要管它。路上的其他障碍物包含了非常多的杂类,它是一个动态的类别标签,我们会在里面不断细分出新的类别,并把它定义成已知的类别。如果没有归纳到已知的类别里,它会被标记成其他类。

新技术方面

谈到自动驾驶的技术进展,应该会有不少的讨论核心是在芯片上,从去年年中开始国内新造车的算力堆砌战争、到国产自动驾驶芯片供应商开始崭露头角,自动驾驶芯片的话题突然多了许多谈资。去年几家新造车带起的算力堆砌战争中,有人提出了质疑,算力高是否就代表自动驾驶能力先进?评估自动驾驶能力是否先进除了用最终的实际效果来验证,是否也可以先比较一下作为问题讨论核心的Al芯片,到底应该如何设计才能满足自动驾驶技术高速发展的实际需求。

芯片算力与算法优化路线之争表面上并没有特别显山露水,其中最主要的原因还是当前市面上主要的算法「大魔王」特斯拉,纯粹在用隔三岔五推送的beta测试版直接给内测用户秀肌肉。而特斯拉目前所使用的Autopilot HW 3.0, 144 TOPS双冗余算力(单芯片72TOPS)在三年前发布时也许技压群芳,放在去年动不动400+、500+、乃至1000+TOPS的算力堆砌战争中,似乎都有些过于落后了。

这个路线之争,从某些层面的激烈程度来说根本不亚于激光雷达有没有意义的讨论,纯视觉路线的特斯拉与高举LiDAR大旗的L4 Robotaxi公司们一直在对线。在地平线罗恒博士最近的公开课中,就讲述了芯片算力提升与算法优化路线之争的大背景。说到芯片比较普及的观点应该就是摩尔定律,大家都相信芯片算力在一定时间内总能获得翻倍提升,但其实这一面向通用计算(CPU)的「规律」已经在2015年之后被打破——在摩尔定律发挥作用时,最快每年半计算性能提升一倍,2015年后, 已经放缓至每20年翻一倍(来源:地平线罗恒博士公开课材料)。

自动驾驶任务实际上是Al计算中的一种, 而AI计算整体的需求在近些年增长也非常迅速,随之而来的是大量专有架构芯片,这些芯片与以往的CPU有显著差别,但即使是专有架构的AI芯片,对于能否满足Al计算迅速增长的需求,也有巨大的挑战。

AI计算对算力数量级增长的需求,与CPU算力的提升严重不匹配,于是大家纷纷开始寻找其他解决方案,朝着AI专用加速器的方向发展,以Google为例, 从最初使用CPU到切换GPU再到为自有数据中心自研高度定制化AI推理芯片TPU,算法优化对于计算能力的提升在数据中心需求中,已经被证明更为重要:在自动驾驶任务中,虽然与数据中心任务有不少区别,但其特征更为需要A加速提升性能,算法优化对于自动驾驶性能提升的重要性自不必说。

Al计算任务在这些不同任务、场景中,就存在不同的性能评估目标,在基于芯片物理实现的成本与功耗等背景条件基础上,还需要结合考虑AI算法的计算速度与准确率问题,算力发展与算法优化在Al计算任务的需求上形成了相辅相成的绑定关系。

可以说,算力制霸的硬件与算法优化的软件方案能力都是实现最终AI计算任务优化的必备能力,在实现智能辅助驾驶的征途上,与其吵上一架,执着路线之争,不如寻找一块两者兼得、真正面向自动驾驶任务的Al芯片。

结语

总的来说,芯片算力高确实有利于自动驾驶领域的高速发展,但针对自动驾驶任务的算法优化同样重要,而能够提供与算法优化、芯片软硬件设计整合的完整工具链,就更加适合最终开发出优秀高效的自动驾驶算法与实际效果。