基于YOLOv5s剪枝模型的输电线路全景监测研究
2023-02-13闫彦辉武建超张国庆
闫彦辉,张 楠,武建超,张国庆,唐 锐,倪 威
(1.国网新疆电力有限公司巴州供电公司,新疆 库尔勒 841000;2.华北电力大学 电气与电子工程学院,北京 102206)
目标检测是计算机视觉领域颇具挑战性的任务之一,现如今相关目标检测算法已经走进人们的日常生活,例如汽车无人驾驶、无人机图像识别、安全监控、交通监控等。在实际应用中,目标检测算法通常部署在云端服务器和边缘计算设备上,不论是部署在云端服务器还是边缘计算设备上,都对设备的内存和算力提出了较高的要求。在电力行业中,电网的安全可靠运行一直都是重中之重,尤其是输电线路的安全。由于输电线路覆盖区域广,涉及地形较为复杂,所以对于输电线路周边环境进行监测是很有必要的。传统的输电线路监控只能提供视频监控和录像功能,无法对输电线路周围的目标进行主动识别,需要工作人员对图像进行人工分析,增加了工作人员的工作量;而将输电线路影像数据送到云端服务器进行分析则需要考虑到时延问题,不符合实时监测的要求。综上,有必要采取更加轻量级的目标检测算法在边缘计算设备上就地对输电线路周围典型目标进行识别判断。
近年来深度学习理论[1]不断发展,基于深度学习的目标检测算法在检测精度和速度上明显提升,当前基于深度学习的目标检测算法主要分为单阶段(One-Stage)算法和两阶段(Two-Stage)算法。两阶段目标检测算法会在图像上不同区域生成多个大小不一的候选框,然后利用神经网络对在这些候选框区域内提取到的特征进行分类和边框回归并得到检测结果,代表算法有R-CNN[2]、Fast-RCNN[3]、Faster-RCNN[4]等,但是生成候选框数量巨大,会占用大量的计算资源,虽然检测精度高但是推理速度慢,不太适用于实时性需求高的应用场景。单阶段目标检测算法不用生成候选框,省去了庞大的计算量,这类算法直接把目标边界框定转换为回归问题,借此得到目标的类别信息和位置信息,典型的单阶段算法有SSD[5](Single Shot multibox Detection)和YOLO[6-8](You Only Look Once)系列算法。孙翠英等[9]利用SSD结合轻量级网络MobileNet[10]的方法来检测输电线典型故障,在检测精度和模型推理速度上都取得了较好的效果。郑伟等[11]利用MobileNet结合跨阶段层次结构CSPNet[12](Cross Stage Partial Network)构建了轻量级的骨干特征提取网络,利用空洞卷积代替下采样中的深度可分离卷积来减少下采样后信息丢失,实现了多尺度和小目标的精确检测。陈嘉琛等[13]在YOLOv3-SPP(YOLOv3-Spatial Pyramid Pooling)网络基础上对网络进行剪枝处理,在牺牲较少检测精度的情况下加快了网络推理速度,降低了算法对硬件设备的算力要求。本文以YOLOv5s算法为基础对输电线路附近典型目标进行检测,首先,对图像数据进行归一化处理,在YOLOv5s网络上进行基础训练后再进行稀疏训练;然后,在稀疏训练的基础上对网络模型进行剪枝,实验结果表明剪枝后的模型在检测精度和推理速度之间达到较好的平衡。
1 YOLOv5网络介绍
YOLO系列目标检测算法是单阶段目标检测算法中性能比较出色的算法,YOLOv5是由Ultralytics公司于2020年5月提出的,至今一直在保持更新。YOLOv5一共有4种版本,分别是YOLOV5s、YOLOv5m、YOLOv5l和YOLOv5x,4种版本模型大小和精度依次递增,其中YOLOv5s网络模型相比较于其他3个版本更加小巧、推理速度更快、检测速度可达140 f/s,其网络结构如图1所示。由图1可知,YOLOv5s网络结构整体由3部分构成,分别是Backbone、Neck和Prediction。
1.1 Backbone部分
在Backbone部分,网络组成包括Focus结构、BottleneckCSP结构和普通卷积结构。Focus结构是在YOLOv5提出的,核心思想是对图像进行切片操作,并在通道维度进行拼接。当输入为4*4*3的图像,将图像按通道切片为2*2大小的特征图,然后再按通道拼接为2*2*12的特征图,如图2所示。Focus结构有效减少了卷积,通过对张量进行维度变换的方式巧妙地实现了下采样,增加了通道维度并减少了计算量,提升了计算速度。
图2 Focus结构中切片操作
在YOLOv4中,只有主干网络采用了CSPNet结构,在YOLOv5中不仅在Backbone中有CSP结构,在neck部分也有CSP结构,但是两者结构不一样,主要体现在有无残差边,具体差异如图1所示。图1中C1-n模块中bottleneck是有一处残差边,而C2-n模块是没有残差边的。在Backbone末端还有一个SPP[14]模块,通过并行的3个多尺度最大池化来增大感受野范围,避免了直接对特征图进行缩放导致的信息丢失,提高了模型精度。
1.2 Neck部分
Neck部分由特征金字塔(Feature Pyramid Network,FPN)结构和路径聚合网络(Path Aggregation Network,PANet)结构[15]组成,如图3所示。
FPN具有自上而下和横向连接结构,并以此来融合高分辨率的浅层特征图和包含丰富语义信息的深层特征图,实现了从单张图片到多个尺度都具有强语义信息的金字塔,顶层特征做上采样和低层特征融合。而PANet则是在FPN自上而下的路径之后又添加了一个自下而上的路径,将低层的语义信息向高层传递,强化特征提取能力。
1.3 Prediction部分
Prediction部分包含边框损失和非极大值抑制(Non-Maximum Suppression,NMS),YOLOv5使用泛化交并比(Generalized Intersection over Union,GIoU)作为边框损失函数,GIoU对尺度大小敏感度低,当预测框与真实框不重合时仍然可以进行优化。在对预测结果进行处理时,对众多预测框进行筛选,利用NMS操作来获得效果最好的预测框。
2 网络剪枝
从设备性价比的角度考虑,在算力有限的边缘端设备上部署大型目标检测网络模型是比较困难的,为了追求检测速度和精度之间的平衡,通常会采用模型压缩方法来对目标检测网络模型进行“瘦身”。本文采取的是对模型进行剪枝的方法来实现模型压缩,神经网络剪枝方法大致上可以划分为结构化剪枝和非结构化剪枝,非结构化剪枝主要是对权重直接进行修剪,其得到的权重矩阵是稀疏的,如果没有专门的硬件设备和专用库是很难达到压缩和加速模型的效果。结构化剪枝主要是对卷积核和通道进行修剪,当某个卷积核或者通道在评价标准下重要性排序较低,那么将会被移除。剪枝流程如图4所示。
图4 剪枝流程
2.1 稀疏训练
在对模型剪枝前,需要对训练好的YOLOv5s模型进行稀疏训练,以便对通道重要程度进行区分。批归一化(Batch Normalization,BN)层[16]能加速神经网络训练收敛并改进网络泛化性能,被广泛用于神经网络,它的原理是使每层的激活输入在训练时保持同分布,使得激活输入值始终处于激活敏感区域,远离导数饱和区,缓解了反向传播中的梯度消失问题。BN层迭代过程为
(1)
(2)
式中:μβ为对m个输入求得的均值;m为本轮训练样本mini-batch的大小;zi为输入;σβ为对输入求得的标准差,对输入zi进行归一化处理得到zi为
(3)
归一化处理之后得到的zi符合正态分布,ε是为了防止标准差为零而加入的一个正则化参数,归一化处理之后对输入进行重构得到zout如式(4)所示。
zout=γzi+β
(4)
式中:γ为本文使用BN层的尺度缩放因子,是筛选通道重要性的指标。对这些通道的尺度缩放因子计算L1范数,通过对尺度缩放因子L1正则化使其向0逼近,而与0接近的尺度缩放因子对应的卷积核对网络贡献小,将其剪除不会对精度造成太大影响。计算公式为
(5)
在网络损失函数基础上加入对尺度缩放因子γ的L1范数项,得到重构后的损失函数为
L=Llocation+Lclass+Lconfidence+λ‖γ‖1
(6)
式中:λ为稀疏比例因子,用来平衡原损失函数中的坐标损失Llocation与分类损失Lclass两部分对损失函数整体的贡献度。
2.2 模型剪枝
在稀疏训练完成之后,对BN层所有尺度缩放因子的绝对值进行排序,根据设定的通道剪枝率来确定全局阈值δ,对于通道尺度缩放因子γ小于全局阈值δ的通道进行剪枝操作。图5为通道剪枝示意图。
图5 通道剪枝示意图
假定由剪枝率确定的全局阈值δ=0.6,则图中通道尺度因子γ<0.6的通道被去除,不参与前后参数传递过程,减少了通道从而实现剪枝。
3 实验过程
3.1 数据集选取及标注
本文选取的图片数据主要由电网公司在某段输电线路上监控设备拍摄到的视频截取得到,共包含1500张图片,使用图片标注软件LabelImg对图片进行手工标注,数据集共5类,分别是塔吊、施工机械、吊车、导线异物和烟火,其中塔吊类1152个,施工机械类927个,吊车类843个,导线异物类 482个,烟火类305个,标注生成XML文件存储到数据中,其中训练集和验证集按照7∶3进行划分。图6为训练集部分样本,从图6中可以看出,由于摄像头拍摄角度、距离和天气的不同,不同类别目标呈现不同的形态,涵盖了田野、城市多种情况下的图像数据。
3.2 剪枝处理
在剪枝处理时,由于backbone中bottleneck有残差边而prediction中没有残差边,为保证对CSP结构中bottleneck的张量维度可加,没有对其残差边进行剪枝。剪枝的阈值不能大于BN层任何通道的最大γ,同时为避免所有通道被裁剪,设定一个剪枝的安全阈值δ=0.8,确保至少有20%的通道被保留。
3.3 模型训练
在制作的数据集上对网络进行基础训练,批处理大小设置为16,动量衰减系数为0.937,权重衰减系数为0.005,初始学习率设置为0.001,训练轮次设置为100。训练过程中为获得更好的训练效果,采用余弦退火学习率调整策略,为避免数据集样本分布不均匀导致网络偏向样本数较多的类,对样本数较少的两个类采用翻转、缩放等方式对原数据集进行扩充。基础训练过程损失函数变化如图7所示。
由图7可以看出,100轮基础训练之后损失值基本上收敛,而进行基础训练之后每层BN层的γ系数大致服从正态分布,不利于对各通道重要程度进行排序,基础训练γ值分布情况如图8所示。
图8 基础训练γ值分布情况
在进行100轮基础训练后得到的模型基础上,对BN层进行稀疏训练100轮,训练过程中的γ系数变化如图9所示,可以看出,稀疏训练后通道重要程度较低的尺度缩放因子γ被压缩至0附近。
图9 稀疏训练后γ值分布情况
实验对稀疏系数等于0.001的模型进行通道剪枝。设置的全局阈值为50%,模型各项参数对比如表1所示。
表1 剪枝前后对比
4 结果分析
实验平台CPU为Ryzen 4600,显卡为GTX1650,通过对BN层的尺度缩放因子接近于0的通道进行裁剪,剪枝后模型参数量下降了41.95%。在剪枝处理之后对得到的剪枝模型进行50轮次的微调之后mAP达到71.7%,权重文件大小为5.77 MB,相比于原YOLOv5s权重文件大小14.1 MB压缩了41.93%,单张图片推理耗时减少0.4 ms,对计算资源消耗更少,能够满足实时性需求。
另外,将本文模型与YOLOv4、CenterNet和SSD进行了对比,如表2所示。在检测精度方面,剪枝后的模型在输电线路周围典型目标数据集上的平均检测精度优于多数模型,在检测速度上由于剔除了部分通道,模型计算量下降,推理速度显著加快。综合考虑精准率和召回率,剪枝模型显然优于其他模型。
表2 不同模型性能对比
5 结束语
为了实现对输电线周围典型目标检测的准确性和实时性,降低人工成本,提出了一种基于YOLOv5s网络剪枝模型的检测算法,经实验测试该算法能够降低硬件设备计算成本,加快推理速度,准确率仅下降了4.4%,能够满足边缘侧小型算力设备实时检测的需求,为算法部署到边缘测设备上提供了参考。对于输电线路周边环境进行实时监测的实施,可以提供理论和技术上的支持。