1. 引言
随着智慧城市和智能交通系统的快速发展,对行人检测的需求显著增加。行人检测是在给定的图像或视频中,准确地检测并定位行人的位置。在许多实际应用场景中,如智能监控、自动驾驶、人机交互等,行人检测都具有极为重要的作用。近几年发生了几起大型人群聚集引发的踩踏事件,这对我们的社会造成了不小的伤害和损失。为了确保公共安全并能够及时处置突发事件,我们需要在聚集场所进行实时传输画面,对人群聚集数量、密度以及人流方向等多种数据进行采集与分析。密集人群检测技术的研究和发展一直是计算机视觉领域的热点和难点问题之一,其难度在于行人在图像中的表现形式非常多样化且背景复杂、遮挡现象普遍存在。随着深度学习技术的不断发展和普及,深度学习方法在行人检测任务中表现出了优异的性能,成为当前行人检测领域主流的技术之一。在本文中,我们提出了一种新的密集行人检测方法,该方法考虑了行人彼此之间的接近性,并利用上下文信息来提高准确性。我们的方法在几个具有挑战性的数据集上具有显著优势,证明了其在现实场景中的有效性。
行人检测发展大致如下:2005年,Viola-Jones算法被应用于行人检测,并取得了一定的成功。但是,在人群密集的场景中,该算法的表现不佳 [1] 。2008年,以人头为特征的行人检测算法被提出,该算法将人头看作行人的重要部分,并通过检测头部位置来判断行人位置。这种算法适用于密集人群场景,但是在低头、带帽等情况下会受到影响。2012年,使用姿态模型的行人检测算法被提出,该算法通过对人体姿态的建模来判断行人位置 [2] 。这种算法在处理复杂情况和姿态变化较大的场景中表现优异,但是对于部分遮挡情况下的行人检测仍有瓶颈。2013年,基于深度神经网络的行人检测算法开始发展,并取得了明显进展 [3] - [8] 。该算法通过大量的数据训练深度神经网络模型,实现对行人的准确识别和定位。这种算法的优势主要在于准确率高、鲁棒性强。
针对上述问题,本文对YOLOv5s-6.0模型进行改进。实验基于YOLOv5s,首先在网络特征融合阶段引入注意力机制,添加1个SE模块提高对有用信息定位的精度;然后使用Soft-NMS代替原有的NMS,保留IOU中等,但置信度较高的框,防止漏检。实验结果表明:Serried-YOLOv5相比原YOLOv5在CrowdHuman数据集上,在保证实时性的前提下,FPS提高了9.091;AP提高了1.5%;召回率Recall提高了5%,检测平均精度均值mAP0.5提升了1.5%,证明了Serried-YOLOv5方法在密集行人检测中的有效性。改进后的Serried-YOLOv5网络在保证实时性的同时,提高了密集行人场景下网络的平均精确度并降低了漏检率。
2. YOLOv5算法
2.1. YOLOv5概述
YOLOv5是Ultralytics团队在2020年提出来的One Stage目标检测算法,YOLOv5采用了一种新的模型结构,将原来的模型简化了,并加强了模型的鲁棒性、速度和精度。相对于其他目标检测算法,YOLOv5具有响应速度快、精确度高等优势,并且可以在较低的硬件条件下进行物体检测任务。YOLOv5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x总计4个模型中,这几个模型的结构基本一样,不同的是模型深度和模型宽度这两个参数。YOLOv5s网络是YOLOv5系列中深度最小,特征图的宽度最小的网络。其他的三种都是在此基础上不断加深、加宽。用户可以根据不同的需求进行应用,极大的满足不同行业的需求。YOLOv5包含4个模块:输入端、特征提取层(Backbone)、特征融合层(Neck)、检测层(Head)。YOLOv5s结构图如图1所示。

Figure 1. YOLOv5s-6.0 structure diagram
图1. YOLOv5s-6.0结构图
2.2. 输入端
YOLOv5的输入端采用了Mosaic数据增强,该算法将多张图片按照一定比例组合成一张图片,使模型在更小的范围内识别目标。自适应锚框计算在YOLOv3、YOLOv4中,训练不同的数据集时,是使用单独的脚本进行初始锚框的计算,但在YOLOv5中,是将此功能嵌入到整个训练代码里中。所以在每次训练开始之前,它都会根据不同的数据集来自适应计算anchor。YOLOv5还使用了自适应图片缩放,简单的改进使得计算量大大减少,推理速度得到了37%的提升。
2.3. 特征提取层Backbone
主干网络能从图像中提取到特征,在YOLOv5中主要使用C3模块和SPPF模块。其中使用C3模块能减少模型计算量和提高推理速度,使用SPPF模块能对同一个特征图进行多尺度特征提取,有利于提升模型的精度。C3模块其包含了3个标准卷积层以及多个瓶颈模块(bottleneck),增强了算法的学习能力,并且能够在保持算法检测精度的同时实现轻量化。SPPF模块原理和空间金字塔池化(spatial pyramid pooling, SPP)基本一致,但池化核选用不一样。SPP在YOLOv5中默认使用4个池化核,分别是:5 × 5、9 × 9、13 × 13和1 × 1。SPPF在YOLOv5中默认使用两个池化核,分别是:5 × 5和1 × 1。SPPF在提取特征时速度会更快。
2.4. 特征融合层Neck
YOLOv5的Neck和YOLOv4中一样,都采用由特征金字塔(feature pyramid network, FPN)和路径聚合结构(path aggregation network, PAN)组成。FPN同时使用低层特征高分辨率和高层特征的语义信息,在网络中自上而下传递语义信息。PAN是自下而上传递定位信息,使低层信息更容易传播到顶层,YOLOv5在YOLOv4的基础上做了一些改进操作:YOLOv4的Neck结构中,采用的都是普通的卷积操作,而YOLOv5的Neck中,采用CSPNet设计的CSP2结构,从而加强了网络特征融合能力。
2.5. 检测层Head
检测层Head中,YOLOv5采用了非极大值抑制(NMS)将交并比(intersection over union, IoU)超过设定阈值的重叠预测框丢弃。输出20 × 20、40 × 40、80 × 80共3个不同尺寸的特征图,依次检测图片中的大目标、中目标、小目标。
3. 改进YOLOv5
改进后模型简称Serried-YOLOv5。在原始模型的主干网络添加压缩与激励模块(squeeze and excitation, SE),提升模型对关键特征的提取能力,从而提高目标检测的精度;然后使用Soft-NMS代替原有的NMS,保留IOU中等,但置信度较高的框,防止漏检。
3.1. 主干网络(Backbone)改进
在自动驾驶场景下进行目标检测 [9] ,由于复杂的环境会使模型学习到较多背景特征,这不利于目标区域的特征学习,进而影响目标检测的精度 [10] [11] [12] 。原始YOLOv5骨干网络3 × 3的Conv模块采取的是卷积核加激活函数直接连接的设计,对于非密集场景下行人检测的特征提取往往有不错的效果,但是对于密集遮挡现象,往往很难有效地进行特征提取。为此引入压缩与激励模块(简称SE模块)并对其进行修改。
SE模块主要包含压缩(squeeze)和激励(excitation)两部分。SE模块对输入的特征信息先经过压缩操作,然后经过激励操作,最终得到模块的输出。它能使模型更加关注目标区域的通道特征,而抑制不重要的通道特征。SE模块显式地建模特征通道之间的相互依赖关系,通过学习的方式获取每个channel的重要程度,然后依照这个重要程度来对各个通道上的特征进行加权,从而突出重要特征,抑制不重要的特征。简单说就是训练一组权重,对各个channel的特征图加权。
本质上,SE模块是在channel维度上做attention或者gating操作,这种注意力机制让模型可以更加关注重要的channel的特征。SE模块可以轻松的移植到其他网络架构,能够以轻微的计算性能损失带来极大的准确率提升。
本文将主干网络中的SPPF模块前的C3结构改成了一个SE模块。改进后的主干网络,如图2所示。主干网络加入的SE模块能使模型更加关注目标区域的通道特征,并能抑制不重要的通道特征,提升模型对关键特征的提取能力,从而提高目标检测的精度。
3.2. NMS改进
NMS (Non-Maximum Suppression)的基本思想是:利用得分高的边框抑制得分低且重叠度(IOU)高的边框。虽然传统的NMS简单有效,但在某些特殊要求场景下,存在以下缺陷:简单地过滤掉得分低且重叠度高的边框可能会导致漏检问题,比如密集和拥挤情况下,容易漏检,降低召回率;NMS阈值无法确定,如果阈值较低,则很容易将本属于两个物体的预测框抑制掉一个,造成漏检。而阈值过高,很可能会在两个物体之间多了一个错误预测框,造成误检;将得分作为衡量标准,某些情况下,得分高的边框不一定位置更准,此衡量标准待考虑;执行速度,NMS的实现存在较多循环判断步骤,擅长并行化处理的GPU执行效率不高。

Figure 2. Improved partial backbone network structure
图2. 改进后的部分骨干网络结构
Soft-NMS [13] [14] [15] 解决方案是对IOU大于阈值的边框,Soft-NMS采取得分惩罚机制,降低该边框的得分,即使用一个与IOU正相关的惩罚函数对得分进行惩罚。当邻居检测框b与当前框M有大的IOU时,它更应该被抑制,因此分数更低。而远处的框不受影响。Soft-NMS完整算法:
Input : B= {b1, .., bN},S= {s1, .., sN}, Nt
B is the list of initial detection boxes
S contains corresponding detection scores
Nt is the NMS threshold
begin
D←{}
while B ‡ empty do
m←argmax S
M←bm
D←DUM;B←B-M
for bi, in B do
if iou(M, bi) ≥ Nithen
B←B- bi ;S←S- si;
end NMS
Si←si f(iou( M, bi))
Soft-NMS
end
end
return Di S
end
于是在不改变网络结构的前提下,在utils/general中增加一个Soft-NMS模块,进行训练,原因是传统的NMS在出现较为密集时,本身属于两个物体的边框,其中得分较低的框就很有可能被抑制掉,从而降低了模型的召回率,Soft-NMS加入可以减少边框的漏检、提高召回率。
4. 实验结果与分析
4.1. 实验环境
本文实验环境为:11th Gen Intel(R) Core(TM) i7-11700@2.50GHz,内存为16 G;显卡为NVIDIA RTX A4000;操作系统为Windows 10,64位;深度学习框架为pytorch 1.11.0;编程语言为python;Cuda11.3。
4.2. 实验数据集
CrowdHuman数据 [16] 集相比于传统的行人检测数据集Caltech [17] 和Citypersons [18] ,行人更加密集和拥挤,并且所涉及场景更加广泛。其中CrowdHuman数据集包含15,000张训练图像、4370张用于验证的图像和5000张用于测试的图像,其中训练集约有340 K人类实例,平均每张图片包含23个人类实例。考虑到CrowdHuman数据集没有开放测试集的标注,本文挑选CrowdHuman数据集中训练集和验证集3000和500张图片。CrowdHuman数据集中遮挡小目标较多,可视化结果如图3所示。

Figure 3. Dataset target visualization results
图3. 数据集目标可视化结果
4.3. 训练模型
模型参数depth_multiple表示模型深度倍数,设置其值为0.33,参数width_multiple表示模型宽度倍数,设置其值为0.50。改进后的检测模型在CrowdHuman目标检测数据集上训练,模型具体训练参数:输入尺寸640 * 640;批次大小为16;训练轮数为300次。
4.4. 评价指标
本文实验采用3个指标,包括类别的平均精度(average precision, AP);平均精度均值(mean average precision, mAP)、帧率(frames per second, FPS)和召回率(recall, R)。
计算公式如式(1)~(4)所示:
(1)
(2)
(3)
(4)
式中:TP (true positive)代表的是预测框中预测为真实际也是真的例子,FN (false positive)代表的是预测框预测为假实际为真的例子;AP指的是P(R) (precision-recall)曲线所围成的面积大小。FPS指的是检测器每秒钟检测图片的个数,即检测图片数量与检测时间的比值。
4.5. 消融实验与改进实验
为了验证改进算法对YOLOv5各个模块改进优化效果,在CrowdHuman数据集上设置了1组消融实验。消融实验包括2个改进模块的对比,首先使用Soft-NMS代替原有的NMS,保留IOU中等,但置信度较高的框,防止漏检;然后在网络特征融合阶段引入注意力机制,添加1个SE模块提高对有用信息定位的精度,其中√表示加入此模块。

Table 1. mAP ablation experimental results
表1. mAP消融实验结果
由表1可知,在CrowdHuman数据集下,在加入第1个模块SE后,mAP0.5上升了1.1%;Soft-NMS替换了传统NMS,mAP0.5上升1.4%。经过2个模块改进后,相比于原始YOLOv5s,mAP0.5上升1.55%。虽然mAP0.95下降了0.1%,但是就密集人群重叠问题上,检测框IOU ≥ 0.5,该检测改进有提升。
由表2可知,在CrowdHuman数据集下,在加入第1个模块SE后,AP上升了0.9%;Soft-NMS替换了传统NMS,AP上升1.4%。经过2个模块改进后,相比于原始 YOLOv5s,AP上升1.5%。速度FPS上升了9.091,召回率Recall提升了5%。但是就密集人群实时检测来讲,这符合密集场景下的实时性要求。
YOLOv5s与改进后的Serried-YOLOv5算法检测效果部分对比图如图4(a)和图4(b)所示。白色箭头指出部分为提升部分。

Table 2. Ablation results of other detection indicators
表2. 其他检测指标消融实验结果
(a) YOLOv5s
(b) Serried-YOLOv5
Figure 4. Partial comparison of algorithm detection effect
图4. 算法检测效果部分对比图
5. 结论
本文在YOLOv5s-6.0的基础上提出了一种改进的密集行人检测方法 [19] [20] 。经实验数据证明,本文提出的Serried-YOLOv5算法能够很好地解决密集场景下的实时行人检测任务。在原始模型的主干网络添加压缩与激励模块(squeeze and excitation, SE),提升模型对关键特征的提取能力,从而提高目标检测的精度;然后使用Soft-NMS代替原有的NMS,保留IOU中等,但置信度较高的框,防止漏检。此外,在研究时发现,正负样本比例不平衡引起的漏检误检问题是制约密集行人检测算法的一个很大难题。之后,将继续着眼于优化算法网络结构,提升网络精度,将尝试对正负样本比例和分配问题进一步优化,对检测层后处理阶段进一步进行提高,在保证实时的前提下,继续提高AP大小,降低漏检率。
NOTES
*通讯作者。