罗江宏,袁梓麒,易志雄
(湖南科技大学 信息与电气工程学院,湖南湘潭,411100)
自动驾驶的本质是构造反射,即汽车感知外部世界的变化,并做出相应反馈。自动驾驶汽车的环境感知功能需要提供可靠的外部环境信息,自动驾驶汽车才能准确地判断自身位置以及周边驾驶状态并做出可靠的驾驶决策。其中行人与车辆识别是自动驾驶汽车环境感知功能的重要技术,近年来,深度学习技术得到快速的发展,基于计算机视觉的行人车辆识别功能可行性得到了极大的提高,将基于深度学习的目标检测算法应用到行人车辆识别技术上,对自动驾驶汽车环境感知功能的研究和应用具有重要意义[1]。
基于深度学习的目标检测算法一般分为两类[2],一类是基于候选区域生成的检测方法(two-stage),其算法分为两个阶段,首先由算法的子网络生成一系列候选框,然后再对候选框进行分类和定位,R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]等算法都属于这类算法。另一类是基于回归检测的检测方法(one-stage),这类算法并不会生成候选框,而是直接在输出特征图上生成候选边界框进行分类和定位,其代表为YOLO[6~9]系列算法与SSD[10]算法。two-stage 目标检测算法往往能达到比较高的目标准确识别率,但缺点是检测速度慢,模型庞大并不适合需要实时车辆行人检测的任务[11];one-stage 目标检测算法检测速度快,结构简单,精度相对two-stage 目标检测算法较低,但近几年的onestage 目标检测算法在满足实时检测的基础上,准确率也基本上能达到two-stage 目标检测算法的水平,因此在车辆行人检测领域中one-stage 目标检测算法具有较高的应用研究价值。
然而,对于摄像头而言,自动驾驶汽车的行驶过程,是运动的、快速的。面对采集到的交通图像中存在的遮挡目标、行驶路线前方的小尺度目标以及复杂道路上的多尺度目标等情况时传统的two-stage 目标检测方法无法达到可靠的实时检测速度;传统的one-stage 目标检测算法又无法达到可靠的实时检测精度。袁小平等[12]通过在YOLOV3的backbone 上引入密集连接模块来实现特征重用,提高网络模型的特征提取能力来提升网络精度,但引入密集连接模块使得网络需要耗费大量的计算资源,导致模型检测速度下降。顾德英等[13]通过在YOLOv5 中引入更加复杂的P6 网络结构加深网络深度来改善网络对特征的提取能力,但随着网络深度的加深,会使得特征图中每个通道之间的全局信息逐渐丢失。Choi 等[14]发现城市道路图像数据在高度垂直方向上包含的信息密度要远少于图像水平方向上的信息密度,而且城市道路图像在高度方向的特征上有着明显的结构性,并结合此特性提出了HANet,虽然通过此特点有效地改进了城市道路语义分割模型的准确性,但是网络过于依赖图像在高度方向上的特征信息,忽略了对图片全局上下文信息的提取。近些年原本应用于自然语言处理(NLP)技术上的Transformer[15]模型开始在CV 领域大放异彩。Transformer 采用多层感知器(MLP)的自注意机制,克服了以往RNN 用于自然语言处理的局限性。自Transformer 出现以来,它在各个领域都得到了相当的重视。早期Transformer 在CV 领域主要用于处理时序特征,直到ViT(Visual Transformer)[16]模型的出现,ViT 模型首次扩大Transformer Encoder 模块的使用范围,代替传统的CNN 卷积应用于计算机视觉领域中。
基于以上分析,为解决自动驾驶汽车对车辆行人识别算法的速度、精度要求,本文以YOLOv5 算法为基础,结合城市道路图像高度方向明显结构性的特点,结合Transform 结构提出基于改进YOLOv5s 的车辆行人目标检测算法,并使用公开自动驾驶数据集KITTI 进行算法的比较和分析验证。
YOLOv5 系列目标检测算法总共有四种不同的模型,分别为:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。其中YOLOv5s 在其中属于深度最小、速度最快的模型。YOLOv5系列模型与之前的YOLOv4、YOLOv3 模型结构类似,整体结构依然可以分为Input、Backbone、Neck、Prediction四部分。
在Input 部分YOLOv5s 继续沿用YOLOv4 中的马赛克(Mosaic)数据增强来丰富训练数据集;Backbone 加入了Focus 结构对输入图片进行切片操作,新增CSP1_N 和CSP2_N 两种CSP 结构分别应用在Backbone 和Neck 结构中,并继续沿用SPP(空间向量金字塔池化)进行多尺度融合;Neck 中采用FPN(Feature Pyramid Network)+PAN(Path Aggregation Network)结构,FPN 结构能够自上向下传递特征,PAN 结构能自下向上传递特征,两种结构相互结合,增强YOLOv5 网络的特征融合能力;Prediction 采用广义交并比(Complete Intersection over Union,GIoU)损失作为Bounding box 的损失函数解决区分预测框和目标框大小相同的问题。YOLOv5s 的网络结构图如图1 所示。
图1 YOLOv5网络结构图
YOLOv5 系列算法是采用anchor-based 的目标检测算法,通过K-means 聚类方法得出先检锚框参数,在网络算法训练时预先设定,其YOLOv5s 的默认先验锚框参数只适合COCO、VOC 等多类别开发数据集。本文中数据集的检测对象与前者存在较大的差别,若使用YOLOv5s 默认的先验锚框参数进行训练,会导致模型的收敛速度变慢并不能得到最佳的检测效果。
通过K-means 聚类方法计算先验锚框参数存在一定的缺陷,K-means 是以数据空间中K 个点为中心聚类,对最靠近中心点的对象归类。通过迭代的方式,逐次更新各聚类中心的值。由于选择的中心点是随机的,每次聚类的结果都有一定的差异。K-means++算法在随机选取一个样本作为聚类中心后计算每个样本与当前已经聚类的类中心之间的最短距离,用D(x)表示;接着计算每个样本点被选为下一个聚类中心的概率,用表P(x)示;最后选择最大概率值所对应的样本点作为下一个聚类中心;K-means++算法每选择一个聚类中心后要对已存在的聚类目标进行再一次的计算,重复此过程直到完整地选出K 个聚类中心;其中计算P(x)公式如下:
所以本文为了获取具有针对性的初始先验锚框参数选择使用K-means++聚类算法重新计算YOLOv5s 的9 个默认先验锚框参数。表1 展示了聚类方法优化前后,在KITTI数据集上K-means++聚类出的初始先验锚框参数。
表1 默认先验锚框参数
城市道路场景图像具有与透视几何[17]和位置模式[18,19]相关的独特性质。智能车辆对车辆前方图像信息采集是由安装在车辆前侧的高清摄像头设备进行采集的,所以采集的图像包含了大量的城市道路行驶图像。其中道路图像在垂直位置上的特征分部非常明显,这导致了根据空间位置合并共同结构的可能性,尤其是在垂直位置。天空、树木、建筑等对象主要分布在图像的顶部像素部分,车辆、行人和道路、车道线等道路上的对象主要分布在图像的中部和底部,如图2 所示。
图2 城市道路场景不同高度部分的类别分布图
针对城市道路图像的内在特征,本文提出了一种基于Transformer 的高度上下文注意力模块称为HCA 模块(High Contextual Attention Module),Transformer 能够通过自我关注学习输入序列之间的复杂依赖关系,HCA 模块通过获取和学习图像高分辨率特征图的垂直空间特征后利用Transformer 模块构建特征长期依赖关系并捕获垂直空间上的多尺度上下文特征,对低分辨率特征图施加注意力权重,预测每个水平部分中哪些要素或类比其它要素或类更重要,模块结构如图3 所示。
图3 HCA 模块结构图
YOLOv5 的特征提取网络——CSP-Darknet 是一种在执行特征提取时效率很高的残差结构网络,但其结构是通过大量的卷积核堆叠来提取特征,导致网络越到深层其丢失的全局信息就越严重,所以本文提出的HAC-YOLOv5 网络是在原YOLOv5 特征提取网络的三个下采样层之间加入HCA 模块,让backbone 输出的三个特征图添加全局的高度上下文注意力权重,HCA-YOLOv5 结构图如图4 所示。
图4 HAC-YOLOv5结构图
2.2.1 宽度池化
根据图像空间位置的不同,在城市道路图像中,就分类而言,图像的每一行都有明显不同的统计信息,所以说Xi每行中的特征信息都在一定程度上表示了当前高度的行信息,对Xi每行进行宽度方向的平均池化操作可以分别捕获每行的全局信息来估计对应信道在全局的权重。进行宽度方向的池化操作后得到的矩阵用表示,Z矩阵的第h 行向量计算公式如下所示:
2.2.2 粗注意力插值
高分辨特征图经过宽度方向池化操作得到的矩阵Z中每行包含的高度上下文信息是比较分散的,并非所有的行中的信息都是有效全局信息,每个高度区域之间的类别分别也有较大的差异。因此对矩阵Z进行高度方向的插值下采样,得到一个粗糙的高度方向的通道注意力特征图的值本文设为16。因此模块最后还需要将得到的注意力特征图经过上采样转换成与需要相乘的低分辨率特征图等效的维度。
2.2.3 Transformer Encoder 模块
在HANet 模型的Height-driven 注意力模块中经过宽度池化和粗注意力插值处理得到带有高度上下文特征的矩阵后,使用多个卷积层对进行连续的卷积操作,并加入位置编码获取每个特征点的位置信息。虽然这种方式能够提取到一定的全局特征信息,但是由于卷积核本身的特性(卷积核的局部计算)限制了其捕获全局上下文信息的能力。相比之下,变换器能够全局关注图像特征块之间的依赖关系,并通过多头部自我注意为目标检测保留足够的空间信息。即HANet 模型中对矩阵ˆZ采用的卷积操作很难让网络提取到大范围、大高度差特征信息之间的联系,无法建立局部特征与全局特征之间的依赖关系。Transformer 结构打破了CNN 有限感受野的局限性,通过结构内的多头自注意力机制建立特征图中长远特征信息的远程依赖关系,能获取全局感受野信息加强网络对图像全局信息的理解能力,并不需要像CNN 那样堆叠大量卷积核加深网络深度来提高感受野来建立图像特征信息之间的全局联系。所以本文受ViT 所启发,将带有高度全局上下文信息的特征图ˆZ经过一层卷积层升维到与需要相乘的低分辨率特征图Xj相同的空间维度得到矩阵Q,再经过两个Transformer Encoder 模块得到带有高度上下文信息权重的注意力矩阵QN。
本文中Transformer Encoder 的输入并没有将输入矩阵分为多个patch 输入,而是直接输入。每个Transformer Encoder 由多头注意力(Multi-Head Attention)和多层感知机(MLP)两个子层搭建而成,每层之间使用残差结构进行连接,其结构图如图5 所示。
图5 Transformer Encoder 模块结构图
多头注意力机制是Transformer Encoder 结构中最重要的一层。输入特征图序列经过规范层归一化,然后传递给由单头自注意力组成的多头注意力层。单头自注意机制将输入序列进行三次线性映射,其中包含三个全连接层,分别作为查询向量(query,Q)、键向量(key,K)和值向量(value,V)。查询向量和键向量的值经过矩阵乘法运算(MatMul)、缩放运算(Scale)、掩码运算(Mask)和SoftMax 函数运算后的输出序列与值向量相乘,生成有注意力的序列。注意力权重决定了模型应该关注其序列的哪些部分,可以有效提高检测效率和准确率。单头自注意的输出结果可表示为:
其中dK是K的维度数。
网络得到多个单头自注意力权重序列后,再将多个权重序列组合成一个多头注意力块。Multi-head Attention 的每个head 都有不同的Q、K 和V,可以分别随机初始化和加权。这个过程使整个注意力块能够在不同的关系子空间中合成不同的自注意力信息。将通过多头注意力运算得到的注意力权重信息进行归一化处理后最为多层感知器(MLP)的输入。MLP 由两个完全连接的层和ReLu 激活功能组成。MLP 过程数学公式表述如下所示:
其中:x是输入序列即经过归一化处理的多头注意力输出;W1、W2和b1、b2分别为两个全连接层的权值和偏差。
为验证本文改进的YOLOv5s 目标检测算法在道路背景下的有效性,本文使用目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集之一的KITTI[20]上进行实验探究。KITTI 数据集集成了高速公路、市区、乡村等多种场景的真实道路图像数据,单张图片中的目标最多可达到30 个行人目标和15 个车辆目标之多,同时KITTI 数据集中包含了许多不同程度的遮挡和截断目标,对目标检测算法有较大的挑战性。KITTI 数据集中总共分为9 个目标类别:Car、Van、Truck、Tram、Pedestrian、Person_sitting、Cyclist、Misc、DontCare。本文在数据预处理阶段对数据集的类别重新划分,去除Misc 和DontCare 类,将Pedestrian、Person_sitting 合并成Pedestrian 类;并对KITTI 数据集总共7481 张带数据标注的图像按照8:1:1 的比例随机划分数据集、验证集、测试集,其数据划分如表2 所示。
表2 KITTI数据集划分
本文实验模型的搭建、训练以及结果测试均是在基于Pytorch 神经网络框架下完成的,需要调用较好的GPU(Graphics Processing Unit)设备结合CUDA(Computer Unified Device Architecture)并行计算架构解决GPU内部复杂的计算问题,同时使用CU-DNN(Cuda Deep Neural Network library)加速库实现GPU 运算加速,本文实验环境具体见表3。
表3 实验运行环境
对于本文所有的网络训练超参数,经过多次参数调优,其输入图像分辨率均为416×416 大小,优化器为sgd,网络训练迭代次数为900,batch_size 大小为16,不采用预训练模型训练的方式,初始学习率为0.07,最小学习率为0.0001,学习率下降函数为cos 函数。
在目标检测领域,准确率(Precision)、召回率(Recall)、均值平均检测精度(mAP)这三项指标能够准确而且有效的对目标检测算法的性能和可靠性进行有效的评估,其定义式如下所示。
其中,TP(True Positives)、TN(True Negatives)分别代表被正确分类的正样本和被正确分类的负样本;FP(False Positives)、FN(False Negatives)分别代表被错误分类的负样本和被错误分类的正样本。
平均精度(Average Precison,AP)是指某一类所有召回率的可能取值情况下得到的所有精度的平均值,比如AP50 表示在IoU 阈值取0.5 时对应的AP 值。均值平均精度(mAP)为所有类别AP 值相加的平均数。
为更加直观的体现本文对YOLOv5s 算法的不同改进点对原网络模型的性能影响,本文对其进行了消融实验,如表4 所示。可以看出使用K-means++聚类算法更新锚框参数以及加入本文提出的HCA 模块均可提高网络的检测精度,将两者相互融合可进一步提高网络模型检测精度。
表4 消融实验
为综合分析本文所提算法(HCA-YOLOv5)算法的检测性能,本文选择在相同的配置条件,相同的数据集的环境下与YOLOv3、YOLOv4、YOLOv5 几种具有代表性的onestage 目标检测网络模型进行对比实验。其中本文所有对比实验的网络IoU 阈值设定均为0.5;实验结果以准确率(Precision)、召回率(Recall)、均值平均检测精度(mAP)作为评价指标,具体实验结果如表5 所示。
表5 不同目标检测算法结果对比
由表5 数据分析可知,本文提出的HCA-YOLOv5 检测算法的mAP 为91.93%,准率为92.97%,召回率为88.43%,相较于其他YOLO 系列经典检测算法准确率、召回率、均值平均检测精度上都有一定程度的提升,HCAYOLOv5 网络在能够结合城市道路场景中不同类别在不同高度的分布特征,更加有效的检测出城市道路场景上的车辆行人目标。
为验证HCA-YOLOv5 可以有效地改进网络对目标的识别能力,本文提取出不同网络模型之间的注意力可视化对比见图6。对照图6,可以看到HCA-YOLOv5 检测网络对目标存在的像素区间相对其他经典网络模型有更高的关注度,并且关注区间能够完全覆盖目标本身,说明网络能够更好的学习到目标的特征信息,达到更高的检测精度。
图6 不同目标检测算法注意力可视化对比图
本文结合城市道路场景的内在特性,提出一种基于改进的YOLOv5 城市道路车辆行人检测算法——HCA-YOLOv5,旨在解决基于目标检测算法的车辆行人检测任务中存在目标检测精度低、检测位置不精准的问题。首先,使用K-Means++聚类算法对训练数据集中检测目标的锚框进行聚类,同时更新网络的先验锚框参数,使网络更适应车辆行人目标的尺度特点。其次,利用城市道路场景图片中不同类别在不同高度的分布特点,结合Transformer 模块强大的特征信息采集能力,设计HCA 结构,让网络更容易提取到检测目标的特征信息。实验结果表明,HCA-YOLOv5 检测算法有较好的检测精度,并且网络对检测目标的关注度更高。为了提高网络的检测精度,HCA-YOLOv5 的模型参数量要略大于YOLOv5 检测算法,未来将在减少模型参数量的基础上做进一步提升。