自动驾驶目标检测技术研究
摘要:自动驾驶技术一直以来是汽车领域的研究与开发的热点,自动驾驶技术中最重要的环节就是感知环节,而感知最重要的环节就是目标检测环节。本课题对比分析了自动驾驶技术中所用到的目标检测算法的性能以及优劣性。从概念上论述了基于一阶段(One Stage) 的SSD系列算法和基于二阶段(Two Stage) 的CNN系列算法。从理论上描述介绍了:基于一阶段(One Stage)的Yolo 系列算法。最后,通过实验的方法,专门对以上的Yolo v3系列算法进行了实验验证。Yolo v3 目标检测算法使用全卷积,主干网络是Darknet—53。本次实验从多方面展示了Yolo v3 系列目标检测算法的性能优劣:速度快但精度却不太理想。并进一步对Yolo v4目标检测算法进行简单实验验证,来进一步对比Yolo 不同系列算法的性能优缺。从多方面阐述了自动驾驶汽车中目标检测技术不同环节的优劣。
关键词:自动驾驶;目标检测;识别;Yolo算法
1.引言
近些年来,“高度自动化出行”和“自动驾驶汽车”的这种理念及便捷共享汽车的概念,在运输和
交通领域以人类意想不到的速度飞快发展,并一步一步逐渐落地。为了推动人类自动驾驶汽车技术的发展,美国交通安全管理局向全世界的人类发布了他们对于自动驾驶汽车的分级,也就是我们现在所熟知的L0-L5级,同样的,美国的SAE(汽车工程师联合会)也在之后不久向全世界发布了他们对于自动驾驶智能汽车分级,这是一种类似的但更加清晰的自动驾驶程度的分级,由人工驾驶到机器辅助人工驾驶,再到全自动驾驶的,更为专业的便捷分级表,在2018年,他们(SAE)对这个分级表进行了更新。研究和学习目标检测技术,是对目标检测技术优化的必要,是自动驾驶汽车中感知环节的需要,也是发展自动驾驶汽车技术的重要环节。
2.基于深度学习的目标检测技术
2.1.Single Shot Detector (SSD)算法系列
SSD系列的算法属于一阶段算法,它的原理比较复杂,是计算机领域中的难点,我们在此进行简单描述,SSD使用卷积技术,小的卷积核是SSD的核心,还有在特征图显示等(英文简称feature map)、对于车辆的偏移量检测也是SSD技术的核心。
SSD算法将输入系统的图片经过计算机上SSD算法特征提取网络的卷积运算,在计算机上生成一系列的特征图来显示,然后SSD会利用计算机来选择其中的几个作为“有效特征层”,而这是一项操作难点。接下来,SSD算法对它的“有效特征层”,通过计算机系统中预定的算法来进行卷积运算步骤,从而获得目标的位置信息、大小信息、障碍物等类别信息等,并且会将每一个“有效特征层”通过计算机所获取到的信息进行合成归档;最后一项一项地筛选,得出最终的检测结果。这个过程使用的方法是计算机网络中的高新算法非极大值抑制法(NMS)。SSD算法在速度和精度上都比YOLO算法高,且精度也不亚于Faster R-CNN算法,是目前比较理想的算法。
2.2.Yolo算法系列
2.2.1.Yolo v3
Yolo系列算法,它们使用三个便捷的特征层:卷积层网络,目标检测层网络,NMS筛选层网络,来进行便捷地分类与回归预测。文章上面提到过,Yolo是一阶段算法。因此,Yolo仅使用卷积层,为全卷积高新神经网络(英文简称FCN),通过使用计算机高新算法和步幅,对所得到的图像进行采样。Yolo系统通常需要对输入自动驾驶汽车上的计算机系统的图片进行
再次处理,因此Yolo系统的完成也少不了照相机的照相功能。使用回归算法直接工作于卷积层所学的特征,从而进行预测。在Yolo v3的版本上,有多个特征图。特征图中有多个边界框和条目等,所有的边界框都会通过计算机高新算法技术识别、分类、探测框内的物体信息。每个边界框都有多个属性,都可以分别描述每个边界框的中心坐标、维度和置信度等数据。一般情况下,系统会自动将输入图像便捷地分隔成网格,以便捷地确定预测特征图的哪个单元格负责预测对象。Yolo v3在每个单元中可以预测并识别物体特征。通过对Yolo的训练,也可以使得特征图的每个单元格都通过其中一个边界框来对对象进行预测。当给定的图片中的对象被边界框检测到时,预测图中的单元格会确定这个边界框是属于哪个单元格的。
当然,在进行具体的实践当中,使用计算机算法训练会带来不稳定的梯度,而且经常会因为电脑环境等问题无法正常实现对冗杂的代码文件进行测试。环境的配置也是一个大问题,还受到硬件设施上的限制。现在大部分计算机高新目标检测器算法中所用的方法一般是数学方法中的拉氏对数变换,来测量默认边界框的偏移。变换常常会被应用到锚点框的生成,来获得计算机算法预测。Yolo v3中一般有三个由计算机高新算法产生的锚点,每个锚点负责管理三个边界框。除此之外,Yolo 还可以在不同尺度上对图像对象进行预测,而检
测层用于在三个不同大小的特征图上执行预测。使用不同尺度预测时的锚点不同,不同尺度预测时的特征步幅也不同,在每个尺度上,每个单元会使用多个锚点来预测多个边界框,锚点的总数也不一样,不同尺度的锚点不同。Yolo 通过系统给定的公式进行预测,得到单元格的估算偏移量,以及测量和估算特征图单元的归一化偏移。
Yolo通过一系列预测和计算来确定给定图像识别的特征数据,比如Object 分数(目标在边界框内的概率)、类别置信度等等。最后,Yolo将对图片进行输出处理,将多个网格数量的扫描次数减到等同于对象次数的扫描次数。
Yolo v3目标检测流程:写代码实现检测流程的软件可以是多样的,但是核心基本上都是基于python文件和pytorch环境(有一些是tensorflow )的模块,不同的实现方法用不同的软件,Visual Studio、vs code、jupyter、pycharm、anaconda等软件都可以用来写实现代码,但是框架都是基于深度学习的框架。我们要通过一系列的环境配置,使得我们的算法能够在当前环境下运行,且不出差错,这往往要花费大量时间,而且由于硬件的独特性,不同的电脑要通过配置不同的文件进行环境的更改。环境配置完成后,还有配置相关算法文件,这属于计算机专业领域的任务,在这里仅进行简单描述。经过一系列的相关文件配
置,python文件创建,算法代码复制输入,或者自己编写代码,然后创建新的一个专门用来放置调用函数的文件夹。保存后进入所用的目标检测软件(以上提到的Visual Studio等)配置文件再解析,然后导入相关文件。
最后,还要构建模块,为目标检测分析提供预置层,编写创建 Yolo层的代码。检测运行时,要通过输入命令行测试代码运行文件,这个步骤是为了测试代码的正常运行。最后,Yolo通过模型的构建,和权重的加载,选择所需检测的图片进行目标检测。
2.2.2.Yolo v4
Yolo v4是Yolo v3的改进版本,它在Yolo v3的基础上进行了非常多的优化。虽然没有革命性的改变,但是Yolo v4,它依然很好的结合了速度与精度。Yolo v4在Yolo v3的基础上,在FPS不下降的情况下,map达到了44,提高非常明显。Yolo v4整体上的检测思路和Yolo v3相比相差并不大,都是使用三个特征层进行分类与回归预测。主要有:
(1)、主干特征提取网络:DarkNet53 => CSPDarkNet53
通用自动驾驶汽车(2)、特征金字塔:SPP,PAN
(3)、分类回归层:Yolo v3(未改变)
(4)、训练用到的:Mosaic的系列(便捷)数据增强、Label Smoothing(便捷)平滑、(便捷)CIOU、学习率余弦(便捷)退火衰减
(5)、激活函数:使用Mish激活函数
等等一系列的改进。
Yolo v4通过使用主干特征提取网络Backbone提取图片特征,使用SPP结构和PA Net结构来构造特征金字塔,SPP可以极大地、便捷地增加感受野,分离出最显著的上下文特征。而PA Net结构的主要特点是可以对特征进行反复提取。然后,Yolo Head利用获得到的特征进行预测,并通过代码调用,对每个特征层进行解码。最后,就可以便捷地获得预测框在原图上的位置。而且这些预测框都是经过筛选过的。这些筛选后的预测框可以直接绘制在图片上,这样就可以在最后获得结果了。Yolo的难点在于Mosaic数据增强、标签平滑、回归优化和调用余弦函数等。
2.2.3.Yolo算法评价
Yolo系列算法,是一阶段的算法,没有像二阶段算法那么复杂,非常便捷,只用一个神经网络就能完成所需的检测任务。Yolo的评价指标有准确率、误检率、召回率、漏检率、平均精确率和map等。