基于YOLOv4卷积神经网络的监控行人重识别方法

2021-06-16 09:36李越穆晓芳郭怡凡
电子技术与软件工程 2021年7期
关键词:行人监控特征

李越 穆晓芳 郭怡凡

(太原师范学院 山西省太原市 030619)

1 引言

随着人们生活水平的提高,对社会安全的要求也更上一层楼,视频监控系统大量普及势在必行。例如校园、公园、小区和车站等公众场所,都需监控系统来为社会安全保驾护航。如此庞大的监控系统,必然产生海量的监控数据。若对如此海量的监控数据进行人工检索,效率极低,且浪费社会资源。若采用计算机视觉技术进行自动化监控,必然可以加提高社会安全,帮助城市安防建设。

行人重识别是计算机视觉领域研究中的一大分支。一般意义上的行人重识别,是在拍摄到的图片或者视频中,检索特定行人的图片或者视频。虽然学者们夜以继日的对行人重识别进行探索与研究,使得准确率越来越高。但目前仍有许多问题决。由于待识别的样例图片与视频拍摄来自不同相机,设备的差异造成不同的成像条件,有些误差相当巨大;不同场景下的环境变化巨大,数据的采集也会产生不同程度的偏差;颜色受光照条件的影响变化巨大;尤其是姿态变化与遮挡问题,都影响着目标辨别的难度。

继2012年AlexNet 成功以后,深度学习成为图像领域研究一大热门,卷积神经网络开始大显身手,并广泛应用于各个分支[1-3]。行人重识别通过深度网络进行图像特征提取,并应用于相应的特征空间上,并使用深度学习或传统方法进行相似度度量,使行人重识别的准确率极大地提高。但由于使用深度卷积网络模型对图像特征进行提取,在判别时也受限于给定的特征,使深度模型的判别能力受到限制[4]。

本文通过对目前行人重识别所存在问题进行研究,本文提出了一种简单、高效地从视频序列中提取并判别行人特征的方法。该方法通过YOLOv4 模型对视频中的行人进行检测,之后对于所检测到的特征用应用于行人再识别系统中。

2 系统模型

2.1 YOLOv4简介

YOLO(You Only Look Once)是一种单级目标检测模型[5],具有检测速度较快的特点,将目标检测任何视为一个回归任务,在目标检测任务中取得了很好的效果。YOLO 检测模型将输入图片划分成为N*N 的网格,网格负责检测目标中心落入网格内的目标。与其他算法相比,YOLO 的多尺度 预测能够更有效地检测目标。YOLO 在实时性方面表现突出,可满足人流量较大时的行人检测需求。YOLOv4 是YOLO 系列的第4 代检测算法,与前几代相比具有更复杂的结构,并使用了很多训练技巧(Tricks)来提升网络的准确率。

YOLOv4 通过使用Mosaic 数据增强方来丰富训练数据,并使用遗传算法来优选超参数。通过对现有方法的改进,使训练门槛降低,能够在计算资源有限的条件下得到更好的结果。YOLOv4 的网络结构如图1所示,其中以CSPDarknet53 作为骨干网络(Backbone),用来提取目标特征。借鉴CSPNet 的特点是保持轻量化的同时维持准确性,可降低计算瓶颈与内存成本[6]。SPP 作为Neck 的附加模块,来进行多尺度特征融合。Neck部分的PANet结构用来进行特征融合,通过上采样的方式将高层的特征传到低层进行特征相融合[7]。再增加从最底层到最高层的信息传输路径,通过下采样加强特征金字塔。最后用不同层的特征图融合来做预测。

图1:YOLOv4 框架图

图2:单层稀疏视频神经网络

2.2 行人检测模型处理

在行人检测中,错终复杂的背景是检测的难点。行人之间相互遮挡,人与环境互相影响,场景中的光照变化,以及行人轮廓类似物,等因素干扰巨大。这些问题使行人精准检测这一任务变的异常困难。在行走过程中千姿百态,或行走静止,或站立下蹲,都影响着对于行人的检测效果。

但是对于安防系统中视频的特殊性,背景几乎处于静止状态,并且对于同一有效的监控场景,人的远近几乎是相同的,这就意味着人的大小变化较平稳。但是由于监控设备的视角大多为顶装式,相比于普通照片的视图角度不同。来自于监控场景的视频帧有时差,并且有时可能会出现运动模糊的情况。并且监控环境中,照明的条件不同,也会影响目标的追踪与捕获。

由于YOLOv4 的单级特性和在COCO mAP val 上的良好性能。针对以上问题。我们对YOLOv4 检测训练过程中做了如下的改进。

图3:ReID Baseline 结构图

图4:Resblock 与IBN-a 结构对比图

图5:数据扩充方法

图6:YOLOv4 行人训练损失图

(1)由于已有模型是在COCO 数据集上训练的,而COCO 数据集包含一些不必要的类,包含人体实例的图像数量较少,人群密度也较小。无法好地执行行人检测,包此外含人体实例的图像分布与监控频帧中的图像分布有很大不同。所以我们引入了更多拥挤场景和视频监控仰角图来进行模型训练。

(2)由于监控视频数据是视频系列,在大多数情况背景为静止,我们从数据中提取出损失最大的图像,选择了较低的阈值进行数据修正,将错误的标记框和较小的标记框进行删除,并将视频中的附近重复帧进行删除,使视频稀疏化。

(3)由于收集到的数据集种类繁多,各种角度复杂,进行数据清洗以后数据集剩余可用的部分不足。因此,采用了一些数据扩充技术,使训练分布更接近实际用例或测试分布。

(4)收集了包含监控场景下的数据,建了一些真实世界的样本并予以手工标注,继续增加了数据的复杂行。

通过以上的模型训练过程,大约提升了23%的模型检测性能,所选的超参数也是由Yolov4 默认给出。最终模型是在这个精心设计的数据集上训练的,在IoU0.5 的状态下能够从0.43mAP 提高到0.785mAP。其中IoU 为交并比如Eq.(1)所示,AP(Average Precision)为不同召回率下的平均精度,如Eq.(2)所示:

由于监控场景下的行人特殊性,我们对YOLOv4 框架进行了轻微的调整,让它在配置更低的设备中满足实时的要求,在输入层中添加了一个单层的神经网络,用来对视频进行稀疏化。改进图如2 所示。

采用单个边缘卷积核与池化激活操作组成一个用来对视频留稀疏化的卷积块,之后利用分割方法,将特征矩阵分成S*N 块,块内像素求后得到S*N 的特征矩阵。与上帧特征矩阵最差后加入误差矩阵,来判定是否进入YOLO 模型。

通过上述方法来提取帧,减轻逐帧检测的压力,通过判断矩阵来删除单帧周围的附件重复帧给检测系统提升执行效率。判断过程如Algorithm 1 所示。

具体的判断值由视频的分辨率以及稀疏程度相关,通过本文中的算法,在行人监控系统中使用时,可过滤大量无行人活动时的情景。

2.3 行人重识别模型构建

行人重识别部分是利用旷视科技的开源项目基础上进行[8]。其方法使用ResNet50 作为Backbone,一个mini-batch 包含了P 个人的各K 张图片,图片经过Backbone 之后得到全局特征,然后这个特征分别计算一个分类损失(ID loss)和一个triplet loss(batch hard mining)。此方法仅仅利用全局特征,故跨域性能较好,泛化能力强。通过引入一些低消耗的训练Tricks,来进行精确度的提升。与速度较快的YOLOv4 相匹配,显得相得益彰。结构图如图3 所示。

输入的图像经过本文所提出的数据增强方法后,经过Backbone(将ResNet50 中的last stride 改为1,通过BNNeck 后进入全连接层,全连接层将分类损失结合Loss 一起计算。整个网络使用warm up 学习率去优化,在训练过程中与多个数据集联合训练,例如Market1501、CUHK03 等。并引入了2.2 中制作的新数据集。还使用了IBN-Net 中的IBN-a 提高了泛化能力,其中IBN-a 如图4所示提升了Backbone 性能但不增加计算成本。其中IN(InstanceNormalization,实例标准化)学习到的是不随着颜色、风格、虚拟性、现实性等外观变化而改变的特征[9]。

表1:YOLOv4 对比图

图7:YOLOv4 行人检测对比图

图8:行人检测效果图

3 系统实验

3.1 数据集的制作

为了比较我们这项工作对于模型提升的效果,使用了COCO(Common objects in context)的公共数据集[10],为YOLOv4 模型的基准。该数据集80 个类和150 多万个对象实例,因此该数据集是初始模型选择的最佳基准。但是在行人检测的过程中COCO 数据集包含一些不必要的类,包含人体实例的图像数量较少,人群密度也较小。此外,包含人体实例的图像分布与行人检测分布有很大不同。所以为了便于贴近实际情况,公开数据集中使用如下操作使数据扩充,如图5 所示。

对已有数据集进行如此操作,更接近于实际情况,且在实际操作中提升了行人监控识别的准确率。还有部分数据集直接来自于监控摄像头与网络爬虫,以及贴合实际监控场景的数据集,例如:CAVIAR,CALTECH Pedestrian dataset,WiderPerson 等。并同时使用YOLOv4 自带的Mosaic 数据增强方法,对数据集随机选取四张图片,随机缩放,再随机分布进行拼接。这样不仅大大扩充了原始采集的数据集,而且还丰富了图片的背景增强数据的丰富性。由于随机擦除会使得网络学习到背景相关信息,影响行人检测,舍去了此方法。

3.2 实验设置

实验环境采用 Windows 10,深度学习框架为pytorch,GPU 为RTX 3080S 显存为11G,并行计算平台CUDA 11.1,cuDNN7.6.4。训练初始化设置为:衰减系数0.0005,学习率0.001,选择step 模式更新学习率,在训练迭代次数达到30000 和35000 次时,学习率衰减至初始值的1%和0.5%。

3.3 结果与实验分析

通过上述设置后,进行了对yolov4 的训练。训练完成后,从日志文件中读取每次迭代的损失值,并绘制曲线,结果如图6 所示。图6 为多个数据集和自制数据及联合训练时最后一次训练得到的损失图。

实验发现,模型在经过多次迭代之后,训练损失维持在1.0 左右,迭代次数达到50000 次基本可以停止训练,过程中每1000 次迭代进行依次验证。本文改进的YOLOv4模型和原始YOLOv4网络,在监控视频下进行行人识别任务中的检测结果对比,如表1 所示。

如图7 所展示了改进的算法在测试图片上的检测结果样例。图片来自于网络上的监控视频图片。

图7(a)为原始YOLOv4 行人检测图,7(b)为本文算法检测图。从图中可以看出,算法模型对行人检测有较好的效果,在某些特定的情况下,行人较小的情况也能够被检测出来,弥补了原始YOLOv4 在行人检测方面的缺陷。

行人重识别使用了自制数据集与Duke 进行联合测试,并对tricks 进行了消融对比实验,测试的效果Rank1 达到了71.9,mAP也有56.1。从实验结果观察来看,平均进度与Rank-1 都有所提升,结果如表2 所示。

为使行人检测与行人重识别相结合。行人重识别中的行人检测允许较高的误检率,因为误检样本可以通过行人重识别中的相似度判别排除,因此行人重识别需要较高的回归率。但是如过置信度阈值设的太低,行人检测中会有很多的行人要进入行人检测模型,降低模型的速度。因此,本文进行了合理的设置,通过实验精度与测试最终我们将目标执行度阈值[5]与非极大抑制阈值[10]设置为0.01与0.45。如8 图所示,行人检测系统最终效果图。

4 结论

本文通过对行人监控数据集的特征进行分析,清洗了数据集并改进了目标检测模型 YOLOv4,用于行人监控。并在旷视科技的Reid-baseline 的基础上引入IBN-a 结构和行人监控数据集,以此来完成行人重识别系统,可运用于未来的智慧安防,以及人员查询系统中。实验结果表明,本文的数据清洗方法,以及调整结构,在精度方面与速度方面都略有提升,在实际场景中运用效果较好。但系统存在一些不足,如支持系统的设备昂贵,算力需求较大等,之后机选研究提升检测效果,降低算力要求等方向。

猜你喜欢
行人监控特征
The Great Barrier Reef shows coral comeback
如何表达“特征”
你被监控了吗?
不忠诚的四个特征
Zabbix在ATS系统集中监控中的应用
抓住特征巧观察
PDCA循环法在多重耐药菌感染监控中的应用
线性代数的应用特征
行人流综述