改进的轻量级YOLOv5算法在行人检测的应用

2023-12-24 10:35王子元王国中
数据与计算发展前沿 2023年6期
关键词:锚框行人卷积

王子元,王国中

上海工程技术大学,电子电气工程学院,上海 201620

引 言

行人检测是计算机从视频或者图像中定位出行人目标。随着深度学习的发展,行人检测在安防监控、无人驾驶、机器视觉等方面的应用越来越广泛。由于现实环境复杂,行人通常呈现姿态各异、衣着不同、相互遮挡等情况。如何在复杂环境下保证较高的检测准确率和检测速度,对行人检测算法提出了挑战。

传统的行人检测方法利用人工设置特征算子来完成检测任务,首先基于形状特征、边缘特征、变换特征或统计特征描述图像中的行人信息,然后使用支持向量机分类模型将行人检测转换为分类任务对行人进行定位。Dalal 等[1]首次使用了梯度直方图法(Histogram of Oriented Gradient,HOG),根据图像中不同区域像素的梯度变化情况来提取图像中的特征信息,然后将提取到的图像特征信息通过支持向量机分类。Dollár等[2]将待检测图片中的局部通道特征和增强算法相结合然后开展行人检测。由于人工设置的特征算子只关注图像中某一类特征信息,对原图像中的特征提取能力不足,而且过于依赖人工设定,因此不易泛化,鲁棒性较差。

目前,采用深度学习方式开展行人检测算法可以根据处理流程分为两类:一类是将目标的位置与分类进行回归计算的一阶段检测算法,具有代表性的算法包括SSD[3]、YOLO[4]系列算法等;另一类则首先利用区域候选网络或者选择搜索方法生成包含目标的候选框,然后进一步对目标种类和位置信息进行预测,代表性的算法有R-CNN[5]系列算法。不同算法的性能对比如表1所示。二阶段的算法模型虽然精度较高,但由于需要预先生成候选框而消耗大量的计算资源检测速度较慢。一阶段检测模型直接通过网络预测目标位置以及类别信息,无需生成候选区域,因此检测速度更快。

表1 目标检测算法性能对比Table 1 Performance comparison of target detection algorithms

本文提出了一种改进后的YOLOv5[6]轻量级行人检测算法。主要的工作内容如下:

(1)使用深度可分离卷积替换YOLOv5算法骨干网络中的普通卷积,降低了模型的计算量和参数量,提高模型的检测效率。

(2)在骨干网络的特征融合部分添加通道注意力和空间注意力机制[7](CBAM),让网络关注于图像中行人的位置信息和通道信息。

(3)使用EIOU[8]损失函数优化训练模型,并使用K-means++[9]聚类算法来生成先验框。

1 YOLOv5网络结构

通过YOLOv5 的网络结构图(图1)可以看出,网络主体由4 个部分组成,分别是图片输入端Input模块、骨干网络主体Backbone模块、特征融合Neck 模块以及预测部分Prediction 模块,下面将对这4个部分详细介绍。

图1 YOLOv5网络结构Fig.1 YOLOv5 network structure

1.1 输入模块

在YOLOv5网络输入端,采用了自适应锚框算法、Mosaic 数据增强以及图片尺寸缩放技术。自适应锚框算法是YOLOv5 算法为不同的数据集设定不同的初始化锚框尺寸。在训练的过程中,网络会通过预测锚框与真实锚框的对比计算反向更新并优化网络参数。YOLOv5 算法的图片输入部分采用了Mosaic 数据增强对输入图片采用随机缩放、裁剪与随机排布的方式处理,使检测数据集更加多样,增强了网络泛化能力。图片尺寸缩放则是将输入原始图片缩放到统一尺寸再输入网络。

1.2 骨干网络模块

YOLOv5 的骨干网络由Focus 和CSPNet 结构组成。Focus结构在骨干网络中主要执行切片任务,保持数据量不变,将图像尺寸减小,如图2所示。

图2 Focus中的切片Fig.2 Slices in Focus

YOLOv5 继承了YOLOv4 骨干网络中的CSP 结构,并且将其应用到Neck 模块中。其中CSP_X 结构存在于骨干网络中,CSP2_X 结构则存在于Neck模块中。

1.3 颈部网络模块

Neck 中使用了特征金字塔[10](FPN)与金字塔注意力网络(PAN)的组合结构。如图3 所示,FPN特征金字塔是一种自上而下的金字塔结构,将抽象信息以上采样的方式来传递融合,传达语义特征。PAN 结构则为自下而上的倒金字塔结构,主要传达定位特征从不同的骨干网络层对不同参数进行聚合。

图3 Neck中的FPN+PAN结构Fig.3 FPN+PAN structure in Neck

1.4 预测模块

预测模块主要由两个部分组成,分别是预测框损失函数部分和非极大值抑制组件。在YOLOv5 的网络结构中使用GIOU loss[11]作为预测框的损失函数。考虑了边界框中心点的距离信息和边界框宽高比的尺度信息,有效地解决了边界框不重合时的问题,使预测框的精度和速度有了提高。同时使用NMS非极大值抑制有利于在多目标框重叠以及遮挡情况下筛选出最优目标框。

2 改进YOLOv5算法

针对YOLOv5模型数据量大,行人检测框定位不够准确的问题,本文引入深度可分离卷积来减小网络模型的数据量。引入注意力模块CBAM 使网络重点关注行人检测任务重的关键特征并抑制非关键特征,从而提高算法的检测精度。引入EIOU损失函数作为目标框回归损失函数,改善定位精度低和训练过程中检测框回归速度慢的问题。

2.1 深度可分离卷积

深度可分离卷积[12]将标准化卷积分解为逐深度卷积(depthwise convolution)和逐点1x1 卷积(pointwise convoluton)。深度可分离卷积将普通卷积分解为两个步骤,先进行滤波然后再组合。与普通卷积相比,深度可分离卷积能够减少卷积过程的计算量。

传统的全卷积滤波器如图4所示,使用一个和输入数据具有相同通道数目的卷积核在整个特征图通道上进行乘法累加运算后,得出一个数值作为结果,单次的计算量为M×Dk×Dk,其中M为输入的通道数,Dk为卷积核的尺寸。

图4 标准卷积Fig.4 Standard convolution

一个卷积核处理输入数据时的计算量可表示为公式(1):

其中,DF为输入特征图的尺寸。

假设在某个全卷积层使用N个卷积核,该卷积层的计算量可表示为公式(2):

深度可分离卷积的结构如图5 所示。如果使用逐个深度卷积层的卷积核,则首先处理数据的是一组二维的卷积核,每个二维卷积核只处理输入特征图的一个通道,这一组二维卷积核的数量和输入通道数相同。在逐个使用通道卷积处理之后,再使用全卷积中三维的1×1卷积核来处理之前输出的特征图,使得最终输出的特征图变成1×1卷积指定的通道数量。

图5 深度可分离卷积Fig.5 Depthwise separable convolution

对于一个传统的全卷积层,输入数据是维度为M×DF×DF的特征图F,输出数据是维度为N×DF×DF的特征图谱G,其中DF表示输入特征图的空间尺寸,M表示输入特征图通道数,D表示输出特征图的空间尺寸,N表示输出特征图通道的数量。

若只考虑浮点数运算,则一组二维卷积核完成逐深度卷积的运算量为:M×N×Dk×Dk×DF×DF,而随后的逐点1×1 卷积的浮点运算量为:M×N×DF×DF,综上,深度可分离卷积的计算总量可以表示为:M×Dk×Dk×DF×DF+N×M×DF×DF。用深度可分离卷积的计算总量与普通卷积的计算总量之比来描述不同类型卷积计算量之间的差距,如公式3所示:

使用深度可分离卷积替换YOLOv5 算法骨干网络中的普通卷积,可以使模型的计算量减少,参数量下降。

2.2 注意力机制CBAM

注意力机制[13](Attention Mechanism)是模拟人类视觉特点而设计的一种图像处理方法。为了提高行人检测的速度和准确率,在网络中引入CBAM注意力机制。CBAM全称是Convolutional Block Attention Module,其先后集成了通道注意力模块(Channel Attention Module, CAM)和空间注意力模块(Spatial Attention Module, SAM)。CBAM是一种轻量级的注意力机制,可以提高模型处理图像信息的效率,结构如图6所示。

图6 CBAM结构图Fig.6 CBAM structure diagram

给定一个输入特征图为:F∈RC×H×W,利用CBAM 依次推导出一维通道注意图Mc∈RC×1×1如图7所示。

图7 通道注意力模块Fig.7 Channel Attention Module

二维空间注意图:Ms∈R1×H×W,总的注意过程可以概括为公式4和公式5:

其中,C表示特征图的通道;H、W分别表示输入特征度的高度和宽度;⊗表示元素乘法。F′是通道注意特征图与输入特征图F相乘得到的,F″是空间注意特征图乘以F′得到的最终输出。

通道注意力机制主要对通道中的行人信息进行增强,通过在特征提取网络中添加通道注意力机制可以更加高效地提取到行人的特征信息。通道注意力将不同通道与其相应的权重相乘,以增加对关键通道的关注。通道注意模块使用公式6计算每个通道的权重:

图8 空间注意力模块Fig.8 Spatial Attention Module

空间注意力机制可以用公式7来表示:

其中,σ表示sigmoid 激活函数;f7×7表示滤波器尺寸为7×7 的卷积。

在YOLOv5s 的骨干网络中添加CBAM 机制,以突出行人检测的有用信息并抑制无用信息,以提高行人检测的效率和准确性。使用Grad-cam[14]对改进后的网络特征图进行可视化,如图9、图10所示。

图9 YOLOv5s算法特征图Fig.9 Feature map of YOLOv5s algorithm

图10 引入注意力机制的YOLOv5s算法特征图Fig.10 Feature map of YOLOv5s algorithm with attention mechanism

从图中可以发现,在引入CBAM 注意力机制后,行人特征的大部分区域被网络检测覆盖,行人检测框的精确度也变得更高,这表明了CBAM 注意力机制能够使网络重点关注行人检测图片中的关键特征,提高网络模型的检测效率。

2.3 损失函数和先验框的改进

损失函数一般分为两个部分,分别是对于图像的分类损失函数以及检测框位置的回归损失函数。针对检测框位置信息的回归损失函数,最早使用的是交并比损失函数,也就是IOU[15](Intersection Over Union)。它可以用来评价标签框和输出框的重叠程度。交并比可表示为公式8:

如图11 所示,其中用A 蓝色框表示标签框,用B 红色框来表示预测框。交并比公式可以用来评价网络预测框的检测效果,可以用来度量标签框与预测框之间的距离。

图11 交并比Fig.11 IOU(Intersection Over Union)

交并比函数存在着自身的缺陷,如果预测框和标签框并没有相交的话,计算出来的值就为0,无法反映预测框与标签框之间的距离以及进行梯度回传和下一步的学习训练。另外,由于交并比函数十分简洁,无法精确地反映预测框和标签框之间重合的程度,存在当交并比损失值相同而重合程度差距很大的情况。

在YOLOv5 中使用了GIOU(Generalized IOU loss)损失函数。GIOU对于IOU出现的缺陷进行改进,在IOU 中添加了回归。公式如式9所示:

如图12 所示,Ac 黑色框表示预测框与标签框的最小外接矩形面积,也就是同时包含了预测框和标签框的最小框面积。当预测框与标签框未完全重叠的情况下,GIOU 方法可以衡量两个标签框的重叠程度,但是当预测框在标签框内部的时候,GIOU退化成了IOU,同样无法衡量预测框与标签框之间的距离。

图12 广义交并比Fig.12 Generalized IOU

本文中综合以上情况使用EIOU(Efficient IOU)作为边界框损失函数,EIOU 损失函数可以分为3个部分:分别是预测框与真实框之间的中心距离损失、重叠损失和宽高损失,具体公式如式10所示:

其中,bgt与b分别表示真实边界框与预测边界框的中心点;ρ表示中心点的欧氏距离;c表示包围真实框与预测框的最小外接矩形的对角线距离;Cω表示该最小外接矩形的宽度;Cℎ表示该最小外接矩形的高度。

EIOU对于目标框和预测框的长和宽分别进行计算,综合评估预测框与目标框的中心点距离和重叠面积,使收敛速度更快,回归精度更高。

YOLOv5 算法在训练之前可以设定初始长宽的锚框。YOLOv5 初始锚框的参数为:[116,90,156,198,373,326]、[30,61,62,45,59,119]、[10,13,16,30,33,23]。但是该锚框尺寸并不适用于所有的数据集,对于行人数据集来说,大部分的行人姿态为站立,因此目标锚框多数为狭长的矩形框,针对行人检测任务,可以通过设计具有针对性的锚框尺寸来提升检测的准确率,加速模型的训练。本文采用K-means++聚类方法生成,当所选取的聚类中心数量为9 时,聚类的锚框尺寸如表2 所示,从中可以看出,数据集中大部分行人锚框为狭长尺寸,符合实际行人锚框特点。在整个数据集中,中尺寸的锚框数量占据了绝大部分,其次是小尺寸,大尺寸的行人锚框数量最少。

表2 行人锚框聚类结果Table 2 Pedestrian anchor box clustering results

3 实验结果与分析

3.1 实验环境与参数

网络训练在Ubuntu18.04 系统上进行,系统的运行内存为16GB,显卡为英伟达RTX3060。使用深度学习框架PyTorch编写改进的YOLOv5模型进行训练。GPU 的加速库为CUDA11.3 和CUDNN8.2.1。

基于改进的YOLOv5 目标检测模型的实验环境如表3所示。

表3 实验环境Table 3 Experimental environment

在网络的训练过程中,使用自适应锚框、图片尺寸缩放和Mosaic 数据增强技术对输入图片进行数据增强,使用深度可分离卷积替换YOLOv5 中骨干网络的普通卷积记为M-YOLOv5,并且在改进的M-YOLOv5 网络模型中使用EIOU loss替换原始损失函数。网络模型的图片输入(input size)大小设置为608×608,动量参数(momentum)设置为0.9,迭代次数(epoch)设置为100,批量大小(batch size)设置为8。

本文中的学习率使用热身的方式进行设置,以较低学习率逐渐增大至较高学习率的方式实现网络训练的“热身”阶段,学习率(learning rate)的设置采用warmup[16]方式,在最初3轮的训练过程中由0 开始增加并达到0.0001,达到之后则以余弦函数方式减小,如公式11所示。

其中,lrmin表示最小学习率;lrinit表示初始学习率;warmup_step表示热身阶段迭代次数;cur_step表示当前迭代次数,函数曲线如图13所示。

图13 学习率设置Fig.13 Learning rate settings

模型在经过一个批次的数据训练之后,会更新网络模型从该批数据中学习到的权重参数,并计算出损失值,可以通过对损失数据的统计来判断模型训练的效果。在一轮训练结束之后,模型会自动保存当前权重文件,并与上个周期得到的权重文件做对比,保存损失最小的权重数据。

3.2 数据集

INRIA[17]行人数据集主要包含不同场景下的站立或行走的行人数据,包含训练集和测试集,在训练集和测试集中又分别包含正样本和负样本。在数据集的行人数据样本中,行人所处背景复杂、姿态也比较多样,而且含有光照等环境因素的变化,更加符合实际场景。行人数据集可以分为训练集和测试集,训练集正样本图片共有614 张,包含1,237 个行人数据框,负样本图片有1,218 张;测试集正样本图片共有288 张,包含589个行人数据框,负样本图片有453张。

3.3 评价指标

在计算机视觉领域,对于目标检测的性能通常使用召回率(Recall)、精确率(Precision)和准确率(Accuracy)等指标来进行评价,如表4所示。

表4 目标检测的评估指标Table 4 Evaluation index of target detection

如表4中所示,True和False表示预测是否正确,Positive 和Negative 表示预测结果是正类还是负类。TP 表示将正类预测为正类,FN 表示将正类预测为负类,FP表示将负类预测为正类,TN表示将负类预测为负类。

精确率表示在预测到的正样本中实际为正样本的概率,召回率表示在实际的正样本中预测为正样本的概率,准确率表示预测正确的概率,具体公式如式12所示:

以召回率为X轴坐标,以准确率为Y轴坐标,设置相应的阈值后画出的曲线就是PR 曲线。PR曲线与坐标轴围成图形的面积被称为平均精确度(Average Precision)。

AP 就是平均精准度,对PR 曲线上的Precision 值求均值。对于PR 曲线来说,使用积分来进行计算如公式13所示:

此外,对于视频流存在检测速度指标FPS(Frame per Second),代表了每秒钟检测的画面帧数,在行人检测算法中普遍使用。硬件性能对该指标影响较大,通常使用同一硬件来比较不同算法的检测速度。当每秒处理帧数达到或超过30时,可以认为该算法具备处理实时视频流的能力。FPS的计算如公式14所示:

3.4 实验结果

将在YOLOv5s骨干网络中引入深度可分离卷积的网络记为YOLOv5s-D。在此基础上添加CBAM 注意力机制的改进网络记为YOLOv5s-DA,将改进模型与原始模型从内存占用、参数量和计算量3 个方面进行对比,具体数据如表5所示。

表5 改进模型的参数量Table 5 Parameters of the improved model

从表5中可以看出,改进模型YOLOv5s-DA占用内存空间为8.0MB,参数量约为3.8M,计算量为7.5B。与原始模型相比,所需内存减少了约46%,模型复杂度和计算量都大幅下降,模型轻量化效果显著。

引入EIOU 损失函数的算法记为YOLOv5s-DAE,在INRIA数据集上测试网络性能。模型开始训练之前在图片输入端采用图片尺寸缩放和Mosaic数据增强方法,增加了样本中中小目标的出现概率,丰富行人数据集的多样性,让网络模型的适应能力更强。输入图片示例如图14所示。

图14 Mosaic数据增强Fig.14 Mosaic data augmentation

从检测效果对比图15 中可以看出,对于遮挡行人,YOLOv5s原始算法存在漏检现象,在街道场景中,被遮挡的行人没有被检出。在不同姿态的行人数据中,背面朝向的行人容易被漏检。在室内光照不足的场景中,漏检了远处的行人以及图片边缘的行人。而使用本文改进算法进行检测时,街道场景中的拥挤人群下的遮挡行人被成功检出,并且检测框更加精确,在室内光照不足的场景中,远处的小目标行人和图片边缘的行人也成功检出。由此可见,本文改进YOLOv5s-DAE 模型对于行人的检测框更加精准,对于遮挡行人和密集行人有更好的检测效果。

图15 本文算法与原始算法的检测效果Fig.15 The detection effect of the algorithm in this paper and the original algorithm

为了进一步验证改进算法的有效性,在使用INRIA数据集和相同硬件设备的条件下,将本文的算法YOLOv5s-DAE 与其他行人检测算法做对比试验。详细数据如表6 所示,从准确率、召回率、精确度以及检测速度4 个方面进行评价,从表中可以看出,YOLOv5s-DAE 算法的准确率相比于原始YOLOv5 算法提高了7.6 达到89.2%,与二阶段行人检测算法Faster RCNN[18]相比,本文方法的AP提高了15.8,每秒的检测速度提高了约90 帧。SAF-RCNN[19](Scale-aware fast R-CNN)是对Fast RCNN[20]的改进,使用RPN 网络针对小尺度行人进行优化,其检测效果虽然优于Faster RCNN,但与本文算法相比检测速度仍有差距。RepLoss[21](Repulsion loss)使用联合的损失函数来提升行人检测的精度,检测精度提升较为明显,但增加了网络模型的计算量,速度略慢。本文算法与经典单阶段目标检测算法SSD相比,在检测精度与速度上均保持优势。ALFNet[22](Asymptotic localization fitting network)算法使用渐进定位拟合方式来改善SSD 算法的锚框位置,检测精度较SSD 算法有了一定的提升。CSP[23](Center and Scale Prediction)采用高级语义抽象方式通过预测性行人的中心点和尺度来定位行人位置,对于遮挡行人效果较好但是对于图像中提取信息有限,容易在训练和测试过程中产生不稳定因素。

表6 不同检测算法性能对比Table 6 Performance comparison of different detection algorithms

4 结论与展望

本文在YOLOv5s 检测模型的基础上,提出了一种引入注意力机制和深度可分离卷积的轻量化行人检测算法。通过引入深度可分离卷积替换原始网络模型中的传统卷积,降低了原始模型的参数量和计算量,提高了行人检测的速度。同时,引入CBAM 注意力机制,使模型关注图像中的行人信息。最后使用EIOU 损失函数,改善定位精度低和训练过程中检测框回归速度慢的问题。YOLOv5s-DAE 算法在INRIA 数据集上取得了89.2%的检测精度,检测速度达到每秒106 帧,满足实时检测的需求。在接下来的工作中,将针对密集人群和遮挡较多的人群对模型进行优化,在精简模型的情况下提升检测精度和检测速度。

利益冲突声明

所有作者声明不存在利益冲突关系。

猜你喜欢
锚框行人卷积
基于YOLOv3锚框优化的侧扫声呐图像目标检测
锚框策略匹配的SSD飞机遥感图像目标检测
基于SSD算法的轻量化仪器表盘检测算法*
基于GA-RoI Transformer的遥感图像任意方向目标检测
基于3D-Winograd的快速卷积算法设计及FPGA实现
毒舌出没,行人避让
从滤波器理解卷积
路不为寻找者而设
基于傅里叶域卷积表示的目标跟踪算法
我是行人