面向扶梯不安全行为的改进型深度学习检测算法
2022-01-18李伟达叶靓玲郑力新朱建清曾远跃林俊杰
李伟达, 叶靓玲, 郑力新,朱建清, 曾远跃, 林俊杰
(1. 华侨大学 工学院, 福建 泉州 362021;2. 华侨大学 工业智能化与系统福建省高校工程研究中心, 福建 泉州 362021;3. 福建省特种设备检验研究院 泉州分院, 福建 泉州 362021)
近年来,因为扶梯行人摔倒、头部探出扶手带、扶梯上逆行、携带宠物或婴儿车等不安全行为而引发的安全事故层出不穷,造成了大量的人员伤亡和经济纠纷案件.然而,传统的视频监控系统仅提供视频的获取、存储和回放等简单功能,只能依靠监控人员时刻监看视频来预防此类事故的发生.但是监控人员容易疲惫,尤其在面对多路监控时,往往目不暇接,很难及时对乘客的不安全行为做出反应.因此,迫切需要设计一套扶梯不安全行为检测算法,来辅助监控人员的工作.
目前,国内外在异常事件检测方面的研究已经取得一定的进展.杨冠宝等[1]提出了基于全景视觉的自动扶梯节能及智能监控系统,使用基于混合高斯背景差分的方向梯度直方图(histogram of oriented gradient,HOG)特征匹配算法,对逆行、越界、意外摔倒等异常行为进行自动识别.管业鹏等[22]基于动态粒子流场,将视频运动对象的运动行为映射为有效反映其运动变化状态的动态粒子流,从而进行异常行为的分类与识别.Fust[2]提出基于主题隐马尔可夫模型的实时检测异常行为方法,但该方法不能进行异常行为的分类.田联房等[3]提出了基于人体骨架序列的手扶电梯乘客异常行为识别方法,基于支持向量机 (SVM) 人脸分类器对异常行为进行判别.吉训生等[4]提出了基于深度神经网络的扶梯异常行为检测,改进Tiny-YOLOv3模型用于扶梯异常行为的判别,能够满足实时性要求.目前,我国多数场所配备给监控系统的电脑配置较低,不具备图形处理器(GPU),且中央处理器(CPU)的性能较差.由于现有高精度的目标检测算法所需参数量和计算量普遍较大,导致算法的推广成本较高.因此,保持高检测精度的情况下,降低检测算法所需的参数量和计算量进而降低推广成本,是解决扶梯不安全行为检测算法实用化的一个方向.
目标检测领域当下流行的算法可以分为两类,一类是以YOLO(you only look once)算法[5-8]、SSD(single shot multibox detector)算法[9]等为代表的基于回归的一阶检测算法,另一类是基于候选区域以RCNN(regions with convolutional neural network features)系列算法[10]为代表的二阶检测算法.一般来说前者的检测速度更快,但检测精度相对较低.2020年,由Ultralytics公司LLC团队开发的YOLOv5系列算法,整合了近年来卷积神经网络领域优秀的算法与模型,达到了较高的检测精度和检测速度.综合考虑当前扶梯不安全行为检测算法的不足和目标检测算法的发展,以及受到田联房等[3]、吉训生等[4]的启发,本文提出基于深度神经网络设计面向扶梯不安全行为的改进型深度学习检测算法.
1 改进型深度学习检测算法
1.1 检测系统的检测流程
扶梯不安全行为检测系统的检测流程,如图1所示.首先,将监控摄像头的实时视频流推送到视频引入模块后,视频流被解码成图像帧,送入训练后的检测模型进行检测;然后,使用方框标出检测到的不安全行为的类别和在图片中的位置;最后,将检测后生成的图像再编码成视频流,推入WEB播放器中播放.在整个流程中,核心模块就是检测模型,它决定了检测系统对扶梯不安全行为的识别能力并消耗了绝大部分的计算资源.因此,改进模型的检测精度、降低其所需的参数量和计算量是提高检测系统性能的关键.
图1 检测流程Fig.1 Inspection process
1.2 YOLOv5s模型优化
YOLOv5s网络结构延续了之前YOLOv3的特点,可分为输入端、主干网络、颈部网络、预测头等4个模块.输入端主要是对数据进行预处理,采用Mosaic技术进行数据增广,将输入的随机4张图片通过随机缩放、随机裁剪、随机排布的方式进行拼接,从而提高模型的泛化能力.主干网络采用Focus结构和CSP结构[11]用以提取输入图像的特征.颈部网络在特征金字塔FPN[12]的基础上,引入了空间聚合网络PANet[13]和空间金字塔池SPP[14],用来对主干网络所提取的特征进行特征融合等再加工操作,其在整个模型中起承上启下的作用.预测头模块采用GIOU_Loss损失函数,通过从颈部网络接收的3个尺度的特征信息对目标类别和位置进行预测.
图2 CBAM模块原理图Fig.2 CBAM module schematic diagram
扶梯不安全行为检测算法的检测对象是扶梯上的乘客,扶梯以外的背景信息对不安全行为检测没有帮助.根据这一特点,引入注意力机制CBAM模块[15]来强调扶梯上的信息而抑制背景信息.注意力机制是一种数据处理方法,其作用在于使神经网络能够将注意力集中在图片或文字序列中需要关注的地方.具体操作是对神经网络提取的特征信息生成一个掩码,对任务需要关注的点进行评价打分,通过评分进行强调或抑制信息的操作.注意力机制可以分为通道注意力机制和空间注意力机制,它们分别将通道信息和空间信息作为评价对象.引入的CBAM模块依次应用了通道和空间注意力机制,对输入的特征信息从通道和空间两个方面进行评价,通过强调扶梯上的信息和抑制背景信息,提高模型对扶梯不安全行为的识别能力.CBAM模块的原理图,如图2所示.
根据YOLOv5s网络的结构特点,在主干网络末端和颈部网络送入预测头模块的3个尺度特征加工模块后面分别嵌入1个CBAM模块,总计使用4个注意力机制CBAM模块,从而改进模型针对扶梯不安全行为检测任务的识别能力.所嵌入的CBAM模块的结构,如图3所示.引入多个CBAM模块的YOLOv5s模型称为YOLOv5s-4CBAM.
(a) CBAM模块 (b) 通道注意力模块 (c) 空间注意力模块图3 CBAM模块结构图Fig.3 CBAM module structure diagram
1.3 基于Ghost模块重构模型卷积操作
YOLOv5s网络使用了大量的卷积Conv模块和BottleneckCSP模块来进行输入图像的特征提取、特征融合等操作,消耗了大部分的参数量和计算量,其结构如图4所示.
(a) BottleneckCSP模块 (b) Conv模块 (c) Bottleneck模块图4 BottleneckCSP模块结构图Fig.4 BottleneckCSP module structure diagram
为了使检测模型轻量化,基于Ghost模块[16]重构了这两个卷积模块.Ghost模块与剪枝[17]、量化[18]、紧凑的模型设计主流的减少神经网络消耗方法不同,通过采用传统卷积生成少量的本征特征图;然后,利用廉价的线性运算去扩充特征和增加通道的方式,在影响检测精度极小的情况下,大幅降低检测所需参数量和计算量.Ghost原理示意图,如图5所示.
(a) 传统卷积 (b) Ghost卷积 图5 Ghost原理示意图Fig.5 Schematic diagram of Ghost principle
从图5(a)可知:对于传统卷积神经网络,给定一个输入X∈Rc×h×w,其中h和w分别为输入数据的高和宽,c为输入数据的通道数.使用一个具有n个大小为k×k卷积核的卷积层f跟输入X进行卷积操作,则其特征图的计算公式是Y=X*f+b,其中b为偏置项.为简化计算,假设输入与输出的尺度大小完全相同,并忽略掉偏置项.根据以上条件,可以算出传统卷积操作的计算量为n×c×h×w×k×k,其中,因为卷积核个数n和通道数c在YOLOv5s网络中经常是512和1 024级别,这就导致一个卷积层的计算量非常大.
在传统卷积生成的特征图中,有很大一部分是相似的,即存在冗余问题.Ghost模块将相似的特征图当成一些少数的传统卷积生成的本征特征图的“伪影”.从图5(b)可知:Ghost卷积模块使用传统卷积生成一部分本征特征图,然后将其放入不带激活函数的线性卷积层中,通过线性变换的方式来得到它们的“伪影”;最后将这两部分特征图进行拼接,从而减少了卷积消耗的参数量和计算量.于是同上,给定一个相同的输入数据X∈Rc×h×w,使用一个具有p个大小为k×k卷积核的卷积层f′ 跟输入数据X进行卷积运算,得到输出特征图Y′=X*f′,其中p≤n.于是,为了获得冗余的n-p个特征图,利用卷积核大小为l×l的线性卷积层对这输出的p个本征特征图进行t-1次线性运算,其中t=n/p,而减掉的“1”即为图5b中相同特征的部分.最终将本征特征图与其线性运算生成的冗余特征图拼接成n个特征图.其线性操作可以表示为
(1)
Y=[y1,y2,…,yn]=[y1,1,y1,2,…,y1,t,…,yp,1,…,yp,t].
(2)
根据式(1),(2),可以算出Ghost卷积跟传统卷积之间的计算量之比rf和参数量之比rp为
(4)
式(3),(4)中的所有符号含义同上所述.
当t≪c且l×l≤k×k时,可以将上述公式进一步地简化为
(5)
由此可以发现,使用Ghost模块,其计算量和参数量与传统卷积之比理想情况下约等于1/t.Ghost模块通过线性运算Φ来替代部分传统卷积操作,从而达到降低计算量和参数量的目的.
(a) GhostBottleneck模块 (b) GhostConv模块图6 GhostBottleneck模块结构图Fig.6 GhostBottleneck module structure diagram
综合考虑上述t的取值及YOLOv5s原有卷积模块在各个网络中的效果,将t的值设为2,即输出特征图的一半来自传统卷积,另一半来自廉价的线性操作.将图4所示的YOLOv5s中所有的Conv模块和主干网络中的BottleneckCSP模块替换成GhostConv模块和GhostBottleneck模块(图6),而对颈部网络中的BottleneckCSP模块维持不变.这样,可在对算法检测精度影响最小的同时,达到大幅降低检测模型参数量和计算量的效果.
模型修改完成后,检测模型的网络结构图如图7所示.输入图像在输入端进行数据增广后,送入主干网络提取特征;然后,在颈部网络进行特征加工等操作,最后将3个不同尺度的特征信息送入预测头模块进行目标类别和位置的预测.
图7 检测模型的网络结构Fig.7 Network structure of detection model
3 实验结果与分析
3.1 实验环境
本次实验的硬件配置为Inter Core i7-10700K处理器;NVIDIA GTX 2080Ti显卡*1;操作系统为Ubuntu 18.04;软件环境为CUDA Toolkit v10.2,Cudnn7.6.5;使用深度学习框架Pytorch1.7.0。
3.2 实验数据集
由于没有现成公开的扶梯不安全行为数据集,因此自制了扶梯乘客的不安全行为实验数据样本集,包括扶梯行人跌倒、逆行、越界、携带宠物、携带婴儿车共5种不安全行为.采集扶梯不安全行为数据的方式包括人员现场模拟及收集网络数据.采集的每种不安全行为数据各1 200张图片,共6 000张图片,使用LableImg软件标注出图像中不安全行为的类别及位置信息.最后通过加高斯噪声、翻转、平移等方法对数据集进行数据增广,最终获得24 000张图片,每种扶梯行人不安全行为各4 800张.图8为各类扶梯不安全行为示例.
(a) 逆行 (b) 跌倒 (c) 携带宠物 (d) 越界 (e) 携带婴儿车图8 各类扶梯不安全行为示例Fig.8 Examples of unsafe behaviors of various types of escalators
3.3 算法对比实验
将融入CBAM模块并替换Ghost卷积模块的YOLOv5s-4CBAM-Ghost算法(文中所提算法)分别与YOLOv5s算法、融入多个注意力机制CBAM模块的YOLOv5s-4CABM算法,以及目前的主流目标检测算法如YOLOv5x算法、传统的方向梯度直方图(histogram of oriented gradient,HOG)算法[19]、神经网络YOLOv3算法、Tiny-YOLOv3算法、FCOS算法[20]和RetinaNet算法[21]等进行对比,比较它们在扶梯不安全行为数据集上的表现,结果如表1所示.其中:RetinaNet算法与FCOS算法的主干网络均采用残差网络ResNet50;所有实验模型的输入图片尺寸均为640 px×640 px;评价指标为在CPU环境下推理1张输入图片所需浮点型运算量(FLOPs)、参数量、检测时间(t),以及各类不安全行为的平均检测精度(mAP).
表1 不同算法模型在扶梯不安全行为数据集上的表现对比Tab.1 Performance comparison of unstable escalator behavior data set in different algorithm models
为了降低推广的成本,扶梯不安全行为检测算法应适应没有GPU加速的环境,在维持高检测精度的条件下,尽可能减少参数量与计算量,同时检测速度还要达到10 F·s-1以上.即检测一张图片的时间要小于100 ms,以满足扶梯不安全行为检测的实时性要求.YOLOv5s-4CBAM-Ghost模型部分识别效果,如图9所示.
(a) 逆行1 (b) 跌倒1 (c) 携带宠物1 (d) 越界1 (e) 携带婴儿车1
(f) 逆行2 (g) 跌倒2 (h) 携带宠物2 (i) 越界2 (j) 携带婴儿车2
(k) 逆行3 (l) 跌倒3 (m) 携带宠物3 (n) 越界3 (o) 携带婴儿车3图9 YOLOv5s-4CBAM-Ghost模型识别效果Fig.9 YOLOv5s-4CBAM-Ghost model recognition effect
从表1可知:融入了4个CBAM模块后,YOLOv5s-4CBAM模型虽然略微增加了计算量、参数量和检测时间,但检测精度比原有模型提高了1.5%.在使用Ghost卷积模块重构主干网络的卷积操作后,计算量相比原始YOLOv5s模型降低了44.7%,参数量降低了41.1%,检测时间减少了0.8%,检测精度仍比原模型提高了1.3%.即文中所提算法在各个指标上均有较大优势,检测精度更高、检测速度更快、所需的计算量和参数量更少.
从表1还可知:对比于YOLOv5系列模型中精度最高、消耗最大的YOLOv5x模型,其计算量是文中所提算法的23倍,但检测精度仍略低于文中所提算法.将改进方法应到到YOLOv5x中,达到众模型中检测精度最优,但计算量仍较大,同时检测时间过长.因此,不适合将其应用于扶梯不安全行为检测这个任务上.
4 结论
针对当下扶梯不安全行为检测算法难以兼顾高检测精度和低计算量要求的问题,提出一种面向扶梯不安全行为的改进型深度学习检测算法.基于YOLOv5s检测模型,融入多个注意力机制CBAM模块,并利用Ghost卷积模块重构模型主干网络的卷积操作.
根据实验结果可知,相较于原始YOLOv5s算法,文中所提算法的浮点型计算量减少44.7%,参数量减少41.1%,检测精度提高1.3%,达到98.5%,在CPU环境下检测速度仍能满足实时性要求,从而降低了算法在资源有限的实际监控系统上的部署成本,这说明文中所提算法具有较强竞争力.
然而,文中所提算法仍存在一部分进步空间.下一步的工作是,将聚焦两个方向提高扶梯不安全检测算法的性能.一是通过模型剪枝等模型压缩方法,来尝试进一步降低模型所需参数量和计算量;二是通过生成对抗网络等数据增广方法,来扩充数据集进而提高模型的泛化能力.