杨献瑜
(浙江理工大学计算机科学与技术学院,浙江 杭州 310018)
随着深度学习的快速发展,基于深度学习的目标检测算法精度得到不断提高,但算法的参数量和计算量也日益增大。智慧电梯安全感知系统是目前常见的保障电梯运行安全的措施,主要用于电梯运行环境监测、禁入目标检测等,其对维护社会公共秩序具有重要作用[1-2]。电梯作为一种边缘设备,内存以及计算资源往往有限。面对日益增大的检测算法,难以完成主流检测算法在智慧电梯安全感知系统上的部署。2021年徐奕森等人[3]通过减少YOLOv3的残差层,实现施工电梯人数检测。2023 年郭奕裕等人[4]在YOLO-s中引入深度可分离卷积以及改进注意力机制,实现电梯内电动自行车和煤气罐的检测。
虽然以上算法在不同程度上实现了轻量化,但参数量和计算量仍然较大,难以达到在电梯边缘设备上部署的要求。本文针对上述算法的缺陷,提出基于改进YOLOv4 的电梯内电动车检测算法,实现模型的轻量化以及快速推理。首先使用GhostNet替换YOLOv4中的主干特征提取网络CSPDarkNet53;其次在GhostNet和PANet 之间引入CBAM 注意力机制,使网络关注通道和空间两个维度的特征信息;最后使用Focal Loss对正负样本损失赋予不同的权重,以提高模型的检测效果。
YOLOv4[5]由Alexey Bochkovskiy等人提出,是YOLO 系列的第四代。该网络采用CSPDarknet53 作为特征提取网络,使用SPP 模块以及PANet 加强网络特征,利用检测头对加强后的特征层进行预测。图1展示了YOLOv4的网络结构。
GhostNet[6]由华为诺亚方舟实验室提出,是一种轻量化神经网络。在相似计算量下,相较于MobileNetV3,GhostNet分类效果更好、精度更高。
Ghost 模块是GhostNet 中的核心组成成分,其原理是通过廉价操作生成冗余的特征图,从而减少网络的参数量。Ghost 模块主要分为三部分,第一部分是1×1 的卷积,用于通道数的压缩;第二部分是逐层卷积,用于生成冗余的特征图;最后部分是对压缩后的特征图以及冗余特征图的拼接操作。图2(a)展示了Ghost模块的结构。
图2 Ghost模块、Ghost Bottleneck模块
Ghost Bottleneck 模块是GhostNeck 的基本组成成分,其分为两个部分。第一部分为主干部分,包含两个Ghost 模块。第二部分为残差边部分,负责传递特征信息、改善网络性能。Ghost Bottleneck 的结构与倒残差结构类似,第一个Ghost 模块用于扩张通道数,第二个Ghsot 模块用于降低通道数并与残差边相连。图2(b)展示了Ghost Bottleneck的结构。
注意力机制源于对人类视觉的研究。面对一些事务时,人们会着重关注对这些事务有帮助的信息,选择性的忽略不重要的信息。在深度学习中,注意力机制就是让网络自适应地关注重要的信息。目前常见的注意力机制可以分为通道注意力机制、空间注意力机制、混合注意力机制。
CBAM 由Sanghyun Woo 等人[7]在ECCV2018 上提出,是混合注意力机制的典型代表。CBAM 将通道注意力机制和空间注意力机制相结合,使网络关注到更多通道和空间上的重要信息,图3 展示了CBAM 注意力模块的结构。
图3 CBAM注意力模块
在通道注意力模块中,输入特征图(H×W×C)首先经过基于宽度和高度的最大池化和平均池化,得到两个1×1×C特征向量。随后特征向量被输入共享的多层感知机中,进行通道权重上的分配。最后将感知机处理后的结果进行相加,并进行Sigmoid 激活,得到输入特征层每个通道的权值。
在空间注意力模块中,输入特征图(H×W×C)首先经过基于通道的最大池化以及平均池化,得到两个H×W×1 的特征图。随后对特征图进行堆叠以及卷积操作,输出一个H×W×1 的特征图。最后进行Sigmoid激活,得到输入特征层每一个特征点的权值。
在单阶段目标检测时,会生成大量的先验框。且由于一张图片中通常只包含少量要检测的目标,因此大部分的先验框会被定义成负样本。在训练时,尽管每个负样本造成的损失值较少,但是大量负样本损失堆叠,使模型偏向于训练负样本,从而忽视更加重要的正样本信息。
FocalLoss 由何凯明等人[8]提出,通过控制正负样本权重以及难易分类样本权重来解决上述正负样本不平衡问题,被首次用于RetianNet的分类损失中。在YOLOv4 中,损失函数主要分为3 类:置信度损失、类别损失以及定位损失。其中定位损失使用的是CIOU损失函数,置信度损失以及类别损失使用的是二值交叉熵损失函数。由于在YOLOv4 中类别损失和定位损失只包含正样本损失,因此在本文中,将Focal Loss应用到置信度损失计算中,实现正负样本平衡,提高检测精度。Focal Loss损失函数表达如下:
其中,p 为当前先验框包含前景的概率,αt为正负样本权重系数,pt为难易分类样本权重系数,γ为调制系数。在本文中,取α=0.25,γ=2。
本文对YOLOv4检测模型进行改进,使用GhostNet作为骨干特征提取网络,减少模型的参数量和计算量;使用CBAM 注意力模块,让网络同时关注到通道以及空间上的重要信息,提高模型性能;使用Focal Loss 损失作为模型的置信度损失,以提高检测精度。改进后的YOLOv4检测模型命名为YOLO-GCF,网络总体结构如图4所示。
图4 YOLO-GCF网络结构
本实验在Ubuntu20.04.2 操作系统下,CPU 为Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz,GPU 为NVIDIA GeForce RTX 3080 12GB,使用PyTorch1.8.1深度学习框架。
本文实验设置网络输入大小为416×416×3,采用SGD 优化算法进行参数更新,引入迁移学习的方式获得预训练权重。模型初始学习率设置为0.001,批处理大小设置为16,迭代次数为150轮。
本实验数据集为自制数据集,主要通过爬虫、网上搜索、实地拍摄得到。数据集一共包含4000张电梯内电动车图像,并按8:1:1的比例划分为训练集、验证集以及测试集。在训练过程中,使用Mosaic 数据增强方式。Mosaic数据增强后的图片如图5所示。
图5 Mosaic数据增强后的图片
为了验证改进算法YOLO-GCF 的可行性,以及每个改进方法的有效性。本文对改进的模块进行消融实验,实验结果如表1所示。首先,使用轻量化网络GhostNet替代YOLOv4中的CSPDarkNet53,将改进后的模型命名为YOLO-G。实验结果显示,YOLO-G 模型的计算量和参数量得到大幅降低,但同时也造成了约5%的mAP 精度损失。其次,在YOLO-G 中加入CBAM注意力模块,将改进后的模型命名为YOLO-GC。实验结果显示,相较于YOLO-G,YOLO-GC 的mAP值提升了2.35%,同时只增加了微量的计算量和参数量。最后,在YOLO-GC 中引入FocalLoss 损失函数,将改进后的模型命名为YOLO-GCF。实验结果显示,YOLO-GC 检测精度得到进一步提升,mAP 值从89.47%上升到90.14%。在FPS 方面,YOLO-GCF 检测速度比YOLOv4 提升8.8 帧/秒,实现了模型的快速推理。综上所述,YOLO-GCF模型同时具备轻量化和快速推理的特点,符合智慧电梯安全感知系统对于检测算法的要求,适合部署于边缘设备上。
表1 实验结果对比
为了进一步研究CBAM注意力模块在整个模型中起到的作用,本文比较了未加注意力模块的YOLO-G和加入CBAM 注意力模块的YOLO-GC,对电梯内电动车图像检测的热力图,如图6所示。
图6 YOLO-G和YOLO-GC热力图对比
从图6 可以看出,YOLO-G 存在感兴趣区域范围较小的情况,无法很好地聚焦于电动车头部区域的学习。而YOLO-GC 扩大对电动车头部区域的学习,实现对电动车头部特征的学习,验证了CBAM 注意力模块的有效性。图7 展示了改进后的YOLO_GCF 对电梯内的电动车图像进行检测的结果。
图7 YOLO-GCF检测结果
本文提出一种基于改进YOLOv4 的电梯内电动车检测算法。首先将YOLOv4 中的CSPDarkNet53替换为GhostNet,大幅度减少网络的计算量和参数量,使模型更加轻量化;其次在骨干网络后引入CBAM注意力模块,增强网络对重要特征信息的提取,提高模型的检测性能;最后改进YOLOv4 的损失函数,将FocalLoss机制应用到置信度损失中,平衡正负样本以及难易分类样本。实验结果表明,改进的YOLOGCF 的mAP 值达到90.14%,计算量和参数量分别为YOLOv4的10.98%和17.21%,检测速度提升8.8帧/秒。证明该算法可行有效,能够满足智慧电梯安全感知系统对检测算法轻量化以及快速推理的要求。