适合车载边缘计算的拥挤行人检测算法
2023-02-28帅泽群张世义
帅泽群,李 军,张世义
重庆交通大学 机电与车辆工程学院,重庆 400041
目标检测是机器视觉领域中最重要、最具研究意义的基础任务之一。目标检测任务可以大致分为图像分类和目标定位,即在一定时间内预测出物体所属的类别和其在图中的位置,为后续计算机处理图像提供准确的信息[1]。随着计算机视觉计算的快速发展,目前主要的目标检测算法大多是通过深度学习搭建神经网络模型实现自主的特征提取,从而代替传统手工提取特征的方式[2]。
行人检测在目标检测领域的应用价值也非常广泛。对于自动驾驶的民用运载工具,可以实现对行人信息的采集以及对拥挤路段交通状况的分析。在其他领域内,可以将监控摄像头等作为载体进行智能安检工作,搭建行人异常行为检测和人流量统计平台。其次,最主要的检测问题是拥挤行人场景下目标遮挡十分严重以及小目标较多等,这很容易造成检测器的漏检率和误检率的升高。近来由于深度学习的出现,基于卷积神经网络的行人遮挡实时检测算法有了很大的发展。周大可等人[3]以RetinaNet作为基础框架,在回归和分类支路分别添加空间注意力和通道注意力子网络,增强网络对于行人可见区域的关注。刘丽等人[4]采用网络剪枝的方式,精简网络冗余结构,避免网络层数加深导致的退化和过拟合问题,同时减少参数量。Chu 等人[5]通过重新设计损失函数让每一个预测框预测一组相关的实例,来改善行人检测中高度重叠的问题,但整个模型推理过程较为复杂,实时性略低。
车载边缘计算单元是无人驾驶汽车技术实现的重要组成部分,目前的车载设备有限的计算资源和存储能力难以满足大量的计算需求,在实时性方面也有一定限制[6]。因而通过加深网络来提高检测精度的神经网络数学模型的轻量化设计成为了急需解决的问题,既要保证检测器在拥挤行人场景下的精度和实时性,也要保证模型满足车载图形处理器(graphics processing unit,GPU)的算力和显存的要求。基于卷积神经网络的行人检测算法主要分为“一阶段”检测和“二阶段”检测[7]。Faster R-CNN 作为经典的二阶段检测算法,它的检测效果十分出色,但是需要先使用区域建议网络(region proposal network,RPN)结构生成候选框,将RPN 生成的候选框再投影到特征图上获得相应的特征矩阵,模型的结构复杂且参数量较多,不适用于车载单元的计算[8]。YOLO系列[9]是一阶段检测器的代表,因其直接在特征图上进行预测,所以在检测的实时性上有很大的优势,在无人驾驶汽车目标检测的实际应用中很受欢迎。针对目前的行人检测研究不能很好地兼顾检测速度和检测精度问题,本文选用YOLOv3 网络作为基本的网络框架,提出一种改进行人检测的算法。首先采用GhostNet 网络作为骨干网络替换Darknet53,为了实现多尺度的融合和性能的进一步提升,在检测器前最优化地融合了金字塔池化模块和改进后的卷积注意力机制模块。采用Mosaic算法对数据集进行图像增强处理,引入CIOU损失函数加快训练收敛。改进后的整体网络能够简单有效地获取特征图,在复杂的检测环境下有很好的鲁棒性,同时能够提高检测精度和检测的实时性。
1 YOLOv3算法基本原理
YOLOv3是YOLO系列中最具代表性的网络模型,它结合了当时市面上很多的优势模块,又因其端到端的检测方式带来的良好的实时性,在各类领域的研究中被广泛应用[10]。和其他端到端的检测器模型一样[11],YOLOv3由骨干网络和检测头两部分组成,骨干网络是对输入的图片进行特征提取,对图片尺寸进行压缩的同时提升特征图片的通道数,使网络获得更加全面的像素信息。检测头的作用是输出网络模型的预测值,其中包括置信度和相对于先验框信息参数的偏移量,再将预测值进行解码,得到最终的结果。
1.1 Darknet53骨干网络
Darknet53是YOLOv3的骨干网络,是由YOLOv2的骨干网络Darknet19改进而得到的[12]。不同于Darknet19是由一系列卷积和池化层组合而成,Darknet53 在每一层引入了残差网络中的shortcut 操作,将每一层打包为一个残差模块,结构十分清晰。这样的短接操作使得在训练不佳时有了退化的选择,保证了在加深网络时图像提取的正向收益。图1为Darknet53的详细结构。
图1 Darknet53网络结构Fig.1 Darknet53 network structure
首先输入一张416×416的待检测图片,为了防止图片失真会在图像上加上灰度条。图1 中的每个矩形方块就代表一个残差模块,左侧的数字代表该残差模块重复使用的次数。经过两次卷积后得到的特征图可以与开始输入进残差网络的特征图在通道维度上进行相加,完成shortcut操作。通过如图中多个残差模块的叠加完成了网络的加深,提高预测的准确度,而且因为短接操作使得网络在反向传播过程中有效地缓解了梯度弥散的问题,提高了网络的训练能力[13]。
1.2 搭建特征金字塔和预测值解码
为了实现多尺度的目标检测,YOLOv3通过构建特征金字塔进行加强特征提取[14]。因为卷积核需要对输入图像的全图进行卷积操作,而大的目标所占的像素点会比小目标多很多,所以卷积之后的特征层会保留很多与大目标相关的信息,小目标的特征信息很可能被遗漏,卷积的次数越多,小目标的信息就会越少。这种情况在卷积核步长为2 时更加明显。特征金字塔在下采样之后搭建一个自下而上的上采样层,扩大特征层的尺寸来预测小目标,但是单纯的上采样操作并不能还原小目标的特征信息,因此需要将下采样层与上采样层进行逐层的融合,确保预测特征层有小目标的特征信息[15]。Darknet53的最后一层再次通过卷积之后经过检测头输出预测结果,一部分进行上采样操作,将图像尺寸大小调整到与Darknet53倒数第二层特征图片的大小相同来进行concat操作,即在通道方向上进行拼接。接着融合的特征层进行预测过程和上采样操作,与倒数第三层进行融合,再通过5次卷积形成最后一个预测特征层。
搭建形成了3个加强特征的预测特征层,在检测器开始对输出的预测值进行解码之前,会将3个特征层分别划分为S×S个网格,S为特征层的尺寸,预测值会先判断先验框内是否有目标物,目标物的中心落在哪个网格内,就由其左上角的网格点进行预测[16]。下面是预测框的解码公式:
检测端输出数据是(tx,ty,tw,th),这4个参数是已知的。而且物体的中心落在了(cx,cy)网格点内,因此通过这个中心再加上相对于这个左上角中心的偏移量σ(tx)和σ(ty)就可以求得预测框的中心坐标。pw和ph为先验框的高宽,通过公式可以求出预测框的宽和高。这样预测框的4个值都可以解码出来,再乘以特征图的采样率就可得到真实预测的边界框参数[17]。最后将所有预测出来的框按照置信度分数降序排列,保留一个置信度分数最大的预测框A,再通过非极大值抑制算法舍弃与A的IOU大于设定阈值的预测框,即删除掉检测器认为是同一类别重叠的预测框,就能解码出最终的预测结果。
2 相关工作
为了改善YOLOv3网络结构过深,在移动端和车载单元的应用上不具有实时性以及对遮挡小目标漏检率较高的问题,本文提出了改进YOLOv3算法来提高针对拥挤行人场景检测的准确性和实时性。本文算法主要包含三部分:骨干网络替换、空间金字塔池化模块、高效搜索的注意力机制模块。下面讲解每个部分的具体工作。
2.1 GhostNet网络代替Darknet53
在卷积神经网络的卷积过程中,很大的一部分是让图像进行一个升维的操作来获得更多的特征信息,这样生成的特征层会拥有很多冗余的信息,这些信息保证了神经网络对输入数据的全面理解[18]。但是通过对卷积操作进行可视化,将一次卷积后每个通道上的图片进行对比就会发现很多特征图上的信息十分相似。许多轻量化的设计理念致力于删除这些看似多余的特征图,这样的做法是不妥的。因为特征信息虽然相似,但是细微的区别还是会影响模型最终的精度值,冗余的信息是一个成功模型不可或缺的一部分,所以在轻量化设计中不应该剔除这些信息,而是应该通过廉价的计算代替卷积计算来生成这些信息。
2.1.1 Ghost模块和深度卷积
与一般的通过卷积生成特征层的方式不同,Ghost模块的原理是先通过一次普通卷积生成一个较低维度的特征层,这个较低维度的特征层在每一个通道上进行简单的线性运算,生成指定的特征图,称为Ghost 特征层。再将这个较低维度的特征层和Ghost特征层在通道维度上进行拼接,得到最终的输出层。图2(a)为Ghost模块的结构原理,其中ϕi表示对特征层的线性操作,作用是保留最初特征层的原始映射。其实对线性操作的定义有很多,很多基于Ghost 模块所使用的线性运算也不是唯一的。本文全部采用的是深度卷积以减少计算量来生成Ghost 特征层。实验表明,在网络中采用相同的计算操作可以高效地实现Ghost 模块。图2(b)为深度卷积的操作原理,每个特征图通过一个1层通道的卷积核进行卷积,生成一个对应的特征图,完全符合Ghost模块对线性操作的要求。
图2 Ghost模块结构和深度卷积Fig.2 Ghost module structure and depthwise convolution
假设输入的图像宽高以及通道数分别为W、H、C,卷积核尺寸为K。经过普通卷积和Ghost 模块卷积之后生成的特征层参数是一致的,设为W1×H1×N。其中W1和H1分别为输出特征层的宽和高,N为卷积核的个数。因为Ghost模块中的线性运算均为深度卷积操作,所以可以对比计算出两种卷积方式的计算量。普通卷积的计算量为W1×H1×N×K×K×C,Ghost 模块的计算量为。其中S表示这个原始特征层的通道数被划分成了S份,设定个通道数用来做普通卷积,剩下S-1个做深度卷积。计算卷积操作参数压缩比:
2.1.2 GhostNet网络搭建与特征可视化
在构建完Ghost 模块之后就可以搭建Ghost 瓶颈层,GhostNet 网络就由一层一层的瓶颈层模块堆叠出来,类似于残差模块,每层之后都会进行一次短接操作。在每个Ghost 瓶颈层中主要由两个Ghost 模块组成,第一层主要对输入的图像进行升维,第二层是对升维后的图像进行降维以顺利完成短接操作。SE模块会对每个通道上的特征图进行平均池化操作,对更有意义的通道上的特征图赋予更大的权重。图3为加入SE模块后的Ghost 瓶颈层网络结构,其中绿色模块为普通卷积,蓝色模块为深度卷积操作。
图3 带有SE模块的Ghost瓶颈层结构Fig.3 Ghost bottleneck layer structure with SE module
GhostNet网络搭建完成之后,对深度卷积和普通卷积模块进行了可视化,采用的网络是Pytorch 深度学习框架中自带的MobileNetv2和VGG16,权重设为预训练权重。输入待检测图片后分别提取两个网络中的第一层输出的特征层。以校内班级篮球队的图4 为例进行两种操作的特征图可视化,其中蓝色框中为深度卷积操作的可视化结果,绿色框中为普通卷积的可视化结果。
图4 第一层特征图的可视化Fig.4 Visualization of the first level feature map
神经网络中的卷积层在网络没有加深时,不会去获取更加高级的语义信息,而是对全局的基本信息进行提取。由图4中的两个可视化结果可以看出,廉价的线性操作即深度卷积也能较好地对全局信息进行搜索提取,而且相对于普通卷积操作生成的特征图还是存在着一定的差异性,说明线性操作生成的特征图更加灵活多变。Ghost 模块结合了普通卷积和线性操作,结合了两个操作的优势又大大减少了计算资源,很好地证明了在特定场景下的可行性。
2.2 空间金字塔池化模块
空间金字塔池化模块最早是用于分类模型中的。在传统的卷积神经网络中,最后用于分类的网络大都是由全连接网络组成。全连接网络能够搜索全局的神经节点生成对应类别的概率值,达到较好的分类效果。但是全连接网络输入的节点是固定的,因此带来的缺点是必须保证输入图片尺寸是固定的。然而在实际训练过程中,图像的尺寸不可能是完全统一的,需要对图像进行拉伸或者缩小,这就会导致图像的失真。针对上述问题,SPPNet 网络[19]应用了空间金字塔池化模块,该模块接受来自上一层卷积后的特征图,分别通过3个池化核大小为1×1、2×2、4×4的池化层进行池化操作。这样,在输入的图片存在多种尺度的情况下,经过空间金字塔输出的张量能够得到统一,从而能进行更好的分类。
本文采用空间金字塔模块的设计思想来源于SPPNet 网络,但在结构上又有一定的区别。在池化核大小方面,为了能够快速搜索特征图的局部信息和提升模型的计算速度,将原SPPNet 网络中的池化核大小分别调整为5×5、9×9、13×13。本文设计的空间池化模块池化后3 个分支会输出与原始的输入图像一致的特征图f1、f2、f3。与SPPNet 网络将池化后的3 个张量拼接直接送入全连接层不同,生成的特征图f1、f2、f3会再和原始图像在通道维度上进行拼接,生成图像的尺寸不变,通道数是原始图像的4 倍。这样,与原始图像的融合操作可以加强网络的提取能力,而且池化操作能够使数据降维,提升网络的计算能力,同时也能扩大模型的感受野,在拥挤行人这类多目标场景下有着很大的检测优势和可行性。本文在模型搭建过程中会将空间金字塔池化模块分别搭建在3个预测器之前,对检测精度和检测速度做详细的对比分析实验。
2.3 注意力机制的改进
注意力机制模块的设计原理是加强检测器对图片中更加重要的信息的注意,抑制与检测内容不相关的背景信息,使得检测的效果有很大的提升,是一类简单高效的特征提取模块[20]。
2.3.1 卷积块注意力机制
卷积块注意力机制(convolution block attention module,CBAM)是结合了通道域和空间域的轻量化模块,在结构上两种注意力机制模块采用串行排列,它的优势不仅是提高模型的精度,而且可以与市面上任何神经网络模型相融合[21]。图5为卷积块注意力机制的结构图。通道注意力机制主要是关注图像在通道维度上进行升维之后哪些通道上的特征图更重要,而空间注意力机制更加关注同一特征图上更加重要的信息,通过不断训练更新权重,赋予重要的通道或空间位置信息更大的权重,来加强模型的特征提取。
图5 卷积块注意力机制结构图Fig.5 Convolution block attention module structure
在图像输入进卷积块注意力机制后,首先会通过通道注意力机制在通道维度上对图像信息进行处理。假设输入的原始特征图F的维度为W×H×C,其中W和H为特征图像的宽和高,C为特征层的通道数。在通道域中,输入的图像会分别在通道维度上进行一次最大池化和平均池化操作。池化操作本身就是为了提取更加高级的语义信息,采用两次不同的池化操作使高层次的特征信息更加丰富[22]。通过池化层可以得到两个维度为1×1×C的张量,接着将两个张量分别送入一个由全连接网络组成的多层感知机中。共享网络也是权重分配的关键,通过全连接对全局的神经元节点进行搜索,迭代更新出最优的权重系数分配给原始的输入特征图。再将通过共享网络形成的两个维度不变的张量进行加和操作,再通过Sigmoid激活后输出为图中的Mc。最后将维度为1×1×C的Mc和维度为W×H×C的原始输入特征图F进行全乘操作,输出通道域的结果F′。
输出特征图F′会接着作为空间域的输入特征图,通过平均池化和最大池化的操作将特征图F′进行压缩,即图像的尺寸不变,仍为W×H,而特征图的通道数压缩为1。将这两个压缩后的张量在通道维度上进行拼接,通过维持尺度不变的卷积操作将其维度变为W×H×1,再通过激活函数后输出为图中的Ms。最后同样地将Ms和输入的特征图F′进行点对点的相乘,输出空间域的结果F′。
下面为卷积块注意力机制的计算公式:
其中,σ表示Sigmoid 激活函数,W1和W2分别为共享全连接网络MLP的两层权重,W0∈ℝC/r×C,W1∈ℝC×C/r。f7×7表示以7×7 大小的卷积核进行卷积操作。
2.3.2 更加高效的通道搜索机制
本文针对卷积块注意力机制模块中的通道域进行改进,提出使用一种更加高效的通道搜索机制。在上一小节所述的原始注意力机制模块CBAM 中,将平均池化和最大池化得到的张量送入共享网络是由两层全连接层组成的神经网络。全连接神经网络会对全局的神经节点进行计算,如果上一层特征图有很大的通道数,池化后的通道数是保持不变的,那送入共享网络的神经节点必然很多,也就不可避免地增加了计算开销,从而影响整个网络的计算速度。另外,两个全连接层的设计思路主要是通过对全局通道信息的搜索来捕获跨通道之间的非线性关系,依靠跨通道的学习来确定分配给每个通道的权重。全连接层的降维操作也是让模型保持较低的复杂度。而文献[23]通过实验数据证明了单纯地减少神经元节点的降维操作会对最终的权重分配产生不良的影响,而且联合全局的通道信息来学习通道之间的相关性效率很低且模型的性能提升不大。因此针对上述全连接式的搜索给模型带来的弊端,本文提出了更加客观高效的搜索方式,通过一维卷积对输入参数进行卷积操作,代替了原先共享网络中的全连接层,从而避免了因降维压缩使注意力机制的预测出现负面效果。并且由于神经元节点之间跨度较大,它们所保存的信息相关性也不高。本文提出的搜索方式捕获该神经元节点附近节点的信息,通过对所有神经元节点不断地卷积和学习,生成的神经元节点保存的信息更加丰富,没有过多冗余的信息。如图6 所示,图(a)为全连接层的搜索机制,图(b)为更加高效的通道搜索。
图6 两种搜索机制Fig.6 Two search mechanisms
从图6中可以看出,高效搜索机制对与选定通道相邻近的通道进行交互操作,这种局部的跨通道交互使捕获的信息包含更多细节,经过不断地向下卷积,新生成的节点保存的信息也更加完备。图中的k值即为一维卷积核的大小,也就是该高效搜索机制的搜索广度。文献[23]给出了卷积核k的一个自适应计算公式:
其中,C为输入特征图的通道数,γ和b分别为设定好的参数,γ=2 且b=1。|t|ood表示选取最近的奇数。由式(6)可知,特征图的通道数越多,自适应k值的选取就越大。因为输出的维度不变,所以k值的选取存在多样性,可以将模型中的k值进行固定,也可以根据通道维度的不同,选取多个k值进行模型搭建。实验会将改进后的CBAM 融入进分类网络和目标检测网络中,联合内核k的自适应公式去分析k值的选取和融合后网络模型的性能。
3 实验结果与分析
3.1 实验环境和参数设置
本次实验平台的系统为Windows系统,使用的深度学习框架为Pytorch1.7,CUDA版本为10.1,编程语言为Python3.7。硬件部分为AMD Ryzen 7 4800H、CPU@2.9 GHz、16 GB RAM、NVIDIA GeForce RTX2060。数据集采用的是公开的WiderPerson 行人检测数据集,一共有13 382张图像,且大多图片都拍摄于拥挤复杂的场景,行人较多且遮挡严重。整个数据集大约标记40万个注释,分为Pedestrians、Riders、Partially-Visible Persons、Ignore、Crowd这5个类别。
本文采用Mosaic 算法对数据集进行图像增强处理,即随机选取4张图像拼接在一起输入进网络进行训练。Mosaic算法增加了图片中目标的个数,让一张图像中出现多个类别,增加了数据的多样性。而且网络能够一次性统计多张图片参数,在GPU 计算能力或显存不足的限制下优势更大。Epoch 设置为100,初始的学习率为0.001。WiderPerson 行人检测数据集随机选取9 000 张图片作为训练集,2 000 张和3 382 张图片分别作为验证集和测试集。批量处理图片的大小设置为8。
损失函数上传统的YOLOv3 采用的定位损失函数为对真实框的偏移量和预测框的偏移量求差值平方,但是这样的算法很难反映出两个边界框的重合程度。本文使用引入IOU 概念的损失函数CIOU 来进行损失值的求解。优秀的回归定位损失函数应该考虑到三种几何参数:真实框与预测框的重叠面积、中心距离以及长宽比[24]。图7为真实框A和预测框B的重叠状态。
图7 真实框与预测框重叠Fig.7 Real box and prediction box overlap
从图7中可以看出IOU 为A与B相交的面积与A和B交集的比值,d为A和B中心点之间的欧式距离,c为真实框B和预测框A的所能达到的最长距离。因此CIOU值的计算公式可以表示为:
其中,W、H为预测框的宽和高,Wgt、Hgt为真实框的宽和高。引入CIOU的损失函数最终表示为:
通过式(11)进行损失值的计算,不仅考虑了重叠面积和边界框高和宽的收敛效果,还考虑了对于中心坐标点的收敛,使得模型加速收敛且有更高的定位精度。
3.2 实验结果分析
将上述的所有改进方法都进行一个最优的融合,作为本文所搭建的最终神经网络检测模型。采用平均查准率(mean average precision,mAP)和在IOU=0.5 的条件下各个分类的精度值来对上述改进后的模型性能进行分析。表1 为改进后的模型在各个类别上的精度以及平均查准率。其中Darknet53即为原始YOLOv3的网络结构,SPP1 表示在第一个预测器前融入空间金字塔池化模块,SPP3 表示在三个预测器前都融入该模块。CBAM即为原始的卷积块注意力机制。
表1 改进模型的mAP对比Table 1 mAP comparison of improved models 单位:%
从表1中可以看出,通过池化模块和高效搜索的注意力机制改进后的模型对行人的检测精度达到75.35%,比改进之前的模型主要在Pedestrians 和Riders 这两个类别上精度分别提高了5.76个百分点和4.86个百分点,平准查准率提高了3.28 个百分点。与原始的YOLOv3算法相比,改进后的算法主要在Riders 和Partially 这两类包含标签多数为小目标或者遮挡目标的类别上有所提高,在行人的检测精度和模型的平均查准率上也是基本接近于YOLOv3模型,能够满足对行人车辆的检测要求。
为了体现改进后模型的优越性和该模型针对小型目标检测的泛化性能,本文采用了额外的公开数据集Visdrone。该数据集收集的数据都是采用无人机对地面上的行人和车辆等物体进行高空拍摄的方式获得的,因此每张图片上不仅有很多待检测的目标,而且远景下的目标标注框很小[25]。不仅如此,由于拍摄角度的问题,检测器很难全方位地学习到物体的特征信息,比如在该数据集下检测器只能学习到汽车顶部的一些特征信息,无法学习到类似车门和轮胎这一类侧面视角的特征,这更加考验模型能否获取高质量的空间信息。表2 为市面上的一些轻量级检测器和经典的单阶段检测器在该数据集下的性能对比结果。
表2 不同检测算法检测性能对比结果Table 2 Performance comparison of different detection algorithms
从表2中可以看出,VoVNet算法的平均查准率是最高的,但是较低的检测速率也很大程度上限制了该检测器的实际应用范围。ShuffleNetV2 这一系列的轻量化网络在对小目标的检测准确率和召回率上相对比较低,不能满足实际的检测需求。同时YOLOv3和YOLOv5-x由于深层次的残差模块的叠加也不能同时兼顾检测精度和检测速度。本文设计的整个网络能够很好地兼顾检测精度和检测速率,将原始的Darknet53 骨干网络改为GhostNet网络,通过深度卷积和融合操作让模型参数量从61.9 MB 降低至25.0 MB,整个网络的检测速率从改进前的每秒39 帧提升至每秒60 帧,相比于其他单阶段算法检测速率最高提升了52.1%,能够满足车载单元计算或小型移动设备对实时性的检测要求。另外从表2中可以看出,本文设计的整个网络的平均查准率达到35.6%,检测效果优于ShuffleNetV2系列、GhostNet等轻量化的网络,对于拥挤行人场景下重叠的人群和远景小目标的检测性能接近YOLOv3。
本文对全连接搜索机制和高效搜索机制通过实验进行分析对比,也对高效搜索机制的搜索广度k值进行进一步分析。通过在传统的分类网络AlexNet上添加了改进后的注意力机制,对比分析k值对精度的影响。数据集采用的是自制的3 000 张标注行人、动物等共5 类的图片。实验结果如表3所示,SE为传统的通道注意力机制模型,即共享网络使用的是全连接层,模型的预测精度为0.810,而将全连接层替换为高效的局部搜索时,预测精度最高可以提升至0.843。在模型运算的实时性方面,模型改进前对于一张图的检测速度为2 873 ms,改进搜索机制后的模型检测速度比改进前最高提升了38.6 ms,当k值为7时,模型检测速度最快为2 834.4 ms。可以看出高效的局部搜索相比于全连接搜索,不仅通过避免降维压缩提升了检测速度,而且使得整体模型检测性能都有一定的提升。H-CBAM 为本文最终改进的卷积注意力模型,k=3,5,7 是精度最低的值,可以看出,改进后的注意力机制模型即使精度值最低,也比之前未改进的模型的精度要高,可以证明改进后的模型有很大的优越性。当k值为5 时,精度最高达到0.852,通过内核k自适应公式计算出来的k=5,也可以证明其合理性。
表3 不同k 值在分类网络的精确度和时间比较Table 3 Accuracy and time comparison of different k values in classification networks
为了更好地理解注意力机制模块对网络带来的效果提升,本文利用Grad-CAM算法对融合网络进行了热力图的可视化[26]。Grad-CAM 算法相对于类激活映射CAM 算法的泛化能力更强,不需要修改网络来重新训练,通过对各类别的所有特征图反向传播时的梯度计算并进行线性融合,表征出卷积层激活输出各点位对模型决策分类的重要程度,每个网格位置表示的是对该类别的关注度[27]。如图8 所示,实验在AlexNet 网络的基础上,对比分析了融合卷积块注意力机制前和融合后的热力图可视化结果。颜色越深的地方表示模型对它的关注度越高,即模型主要通过学习该图片上颜色较深的部位来进行检测和定位。可以看出注意力机制就是加强了对这些局部特征的学习,也可以证明通过融合和改进注意力机制去提高模型性能的方法是可行且高效的。
图8 两种网络模型可视化热力图对比Fig.8 Comparison of two network models for visualization of thermodynamic diagrams
4 结束语
本文针对目前用来检测拥挤行人场景的网络模型复杂度高,计算量大,而车载单元的计算能力有限的问题,设计了一种轻量化的网络结构,利用GhostNet 网络来代替传统的骨干网络,通过廉价的线性操作获得与深层次网络相似的特征图,大大减少了模型计算量。为了进一步提高模型的精度和实现多尺度的融合,添加了空间金字塔模块和改进后的高效卷积块注意力机制,联合分类网络来选取最高效的自适应内核k值,采用了Grad-CAM算法对融合前后的模型进行热力图可视化,进一步分析卷积块注意力机制。通过CIOU 算法来加速训练模型的收敛,同时使预测框的回归更加稳定且定位精度更高。结果表明,改进后的网络在WiderPerson行人检测数据集上行人类别查准率达到75.35%,相比改进之前的模型在行人查准率和平均查准率上分别提高了5.76 个百分点和3.28 个百分点。在Visdrone 数据集上,改进后的网络平均查准率达到35.6%,在性能基本接近于YOLOv3的基础上,每秒检测图片的数量可以达到60张,相较于传统的单阶段检测算法,检测速率最高提升了52.1%,能满足移动设备以及车载计算对实时检测速度和精度的要求。