基于改进YOLOv4 的输电线路目标检测算法
2023-10-17熊君伟叶世顺胡志祥
王 统 熊君伟 叶世顺 胡志祥 舒 冬
(湖南三一智慧新能源设计有限公司)
1 YOLOv4 算法介绍
YOLOv4 图像识别算法与YOLOv3 算法[1-2]相比,改进了网络结构和模型训练技巧等多个方面。YOLOv4 利用CSP 与Darknet-53 残差网络相结合,能够提取图片深层次网络特征数据,同时减小计算量;增加SPP 网络模块,增大感受野,提取更高层次的语义特征,能够适应不同尺寸和背景特征的目标识别。
YOLOv4 网络结构主要包括主干网络、Neck 模块[3]。主干网络采用CSPDarknet53 结构形式,将CSPNet 网络结构应用于Darknet-53 中残差模块,使上层的特征图一个分支进行残差运算,同时另外一个分支和经过残差运算后的特征图相结合[4]。
Neck 模块包括SPP 网络结构和PANet 网络结构。其中,SPP 网络结构采用1×1、5×5、9×9、13×13最大池化层分别对上层特征图进行处理,PANet 采用高低层特征融合方法实现3 个不同大小的特征图Y1、Y2、Y3 输出,用于不同大小的目标识别[5-6]。
2 基于YOLOv4 输电线路外破隐患目标识别的改进
本文为改善自身因素的影响, 提出基于K-means++聚类算法,领域自适应和注意力机制的改进YOLOv4 输电线路外破隐患目标检测算法。
2.1 改进K-means++聚类算法
YOLOv4 采用的K-means 算法每次选取k个随机值作为初始簇中心,这使得每次运算结果存在一些差异,导致目标框定位的稳定性较差。本文采用K-means++算法对数据集进行目标框聚类,该方法优化一次性选取所有k个簇中心的方案,减少初始簇值对算法结果的影响,使得每个簇尽可能地分散从而获取更为精确的目标聚类框,具体算法如下:
1)统计数据集中所有样本的尺寸然后进行归一化操作;
2)随机从样本中选取1个样本作为初始的簇中心;
3)计算每个簇中心和各个样本之间的距离,公式如下:
式中,d(box,C)为簇与样本中心距离;IOU(box,C)为目标框与簇中心的交并比。
4)挑选距离最大的样本作为新的簇中心,距离越大说明当前样本和簇中的相似度较低;
5)重复步骤3 和步骤4 直到获取k个簇中心,直到簇中心不再变化或者变化很小的时候结束聚类算法。
2.2 CBAM 注意力模块
为了降低干扰,本文在YOLOv4 算法主干网络结构中加入注意力机制模块以提升算法模型的特征提取能力[7]。
CBAM 本质上是通道注意力与空间注意力的融合,以中间特征图F=RH×W×C为输入,沿着两个独立的维度(通道和空间),依次计算出注意图,然后将注意图乘以输入特征图进行自适应特征细化。在特征图信息提取时同时使用全局平均池化和最大池化,减少信息丢失。
通道注意力模块利用特征图通道间的关系,采用全局平均池化和最大池化聚合特征图空间信息,再经过多层感知器MLP 和Sigmoid 激活函数处理,生成通道注意图,侧重于提取检测目标的轮廓信息特征,通道注意图Mc计算公式为:
式 中,δ为Sigmoid 激活函数;分别为利用平均池化和最大池化在空间上生成的特征映射;MLP 为CBAM 的共享网络;W1、W0分别为MLP 的隐藏权重和输出权重。
通道注意力模块之后,再引入空间注意力模块,提取目标特征图的空间位置信息作为通道注意特征图的补充。通过卷积操作,并同样使用两种池化方法聚合位置信息,拼接之后再利用卷积及Sigmoid 激活函数得到一个具有空间注意力的空间矩阵,得到新的特征图。计算公式为:
式中,δ为激活函数;F'为F与Mc相乘得到的模块输入。
将引入CBAM 模块前后效果可视化后,前后对比如图1 所示,引入CBAM 模块后,图像特征覆盖了更多位置。
图1 CBAM 效果可视化图
3 实验结果及分析
本文实验部分所使用的硬件平台是联想高性能计算服务器ThinkServer SR658,配备两块GPU 显卡NVIDIA GeForce RTX 2080Ti。 软件平台使用Ubuntu18.04 系统,CUDA10.2、cudnn8.1、Anaconda3软件版本,在此基础上搭建基于开源框架darknet 的深度学习环境,通过对YOLOv4 算法进行改进最终实现架空输电线路通道环境内外破目标的检测和预警[8-9]。
3.1 数据集预处理
输电线路防外破预警的核心是对通道环境内可能的外破目标进行识别和检测,需要原始的数据集样本和一一对应的数据标注文件[10]。本文所使用的数据集样本均来自电网某项目所安装的智能可视化监拍装置拍摄后的结果,原始拍摄结果中涵盖多种天气状况、光照条件、拍摄角度下的拍摄效果。收集整理后数据集中包含施工机械、塔吊、吊车这3 种常见的外破隐患目标,共计3867 张。各类别的数量依次为施工机械类1370 张,吊车类1196 张,塔吊类1301 张,各类别间的图片数量比接近1:1:1。
数据标注文件的产生借助Labelimg 软件,得到与训练数据同名且唯一的xml 文件,该文件中包含目标的标签和位置信息。为了加速训练过程,对输入目标的位置信息进行归一化处理,归一化公式如下:
式中,x和y为归一化后目标框的中心点位置横纵坐标值;w和h为归一化后目标框的宽度和高度;xmin,ymin,xmax,ymax分别为xml 文件中目标框左上角和右下角的横坐标和纵坐标值;width 和height 为xml 文件中目标框所在图像的宽度和高度值。
将训练集中归一化操作后的(x,y,w,h)作为K-means++算法的输入,经过聚类分析后,可以得到最能反映样本中框的尺寸的9 个锚框,将获得的9 个(w,h)分别乘以原图的宽度和高度值获得锚框的实际尺寸。
3.2 模型训练与测试
针对本项目数据集特点及硬件条件相关限制,修改开源框架darknet 的部分参数值,如表1 所示。将上述K-means++算法聚类分析后获得9 个锚框替换darknet 框架配置文件中的相应锚框。然后加载预训练模型,将归一化后的(x,y,w,h)和对应的数据集样本送入网络进行训练。
表1 配置文件主要参数值
完成上述训练流程后,可以获得模型文件,结合数据集中测试集样本,可以进行模型性能的测试。测试集样本涵盖不同光照、不同背景以及目标不同姿态、多个目标同时出现等多种情况。图2 为实际场景中多个检测目标同框时模型的检测效果,表明模型具备多目标检测的能力。
图2 实际场景中多个检测目标同框时模型的检测效果
3.3 结果分析
本文中实验部分采用的评价指标是精确率(precision)、召回率(recall)、均值平均精度(mAP),具体公式如下:
式中,TP 代表的是预测结果为正样本的集合中确实为正样本的数量;FP 代表的是预测结果为正样本的集合中实际是负样本的数量;FN 代表的是预测结果为负样本的集合中确实为负样本的数量;n代表的是预测类别的数量,本文中n=3,代表的是第i个类别的精确率,本文中实验部分采用的是各类别输出阈值为0.6 时的统计结果。
为了进一步研究本文提出的算法改进措施对于模型检测效果的影响,实验部分设计了消融实验,具体结果如表2 所示。表格中“*”号表示添加了该措施,可以看到,在添加了改进措施的YOLOv4 算法中,算法精确度precision 实现了4.1%的提升。在加入CBAM 领域自适应网络后,算法召回率recall 实现了3.1%的提升。单独加入CBAM 领域自适应网络后,精确率和召回率获得了2.9%和1.5%的提升,证明了自注意力机制的有效性。
表2 算法消融实验结果
将本文中改进的YOLOv4 算法与常用的目检测算法FasterRCNN、SSD 相比较,结果如表3 所示。
表3 不同算法对比结果
可以看出,改进后的算法在施工机械、吊车、塔吊类别上获得了性能指标AP 和mAP 的提升。由于本文借助开源框架darknet,其底层代码使用C 语言来实现,编译运行效率高,在实际工程应用中单张图片的检测时间更短,检测速度获得了明显提升。
4 结束语
文中提出基于YOLOv4 的输电线路外破隐患识别算法,采用 CSPDarknet-53 残差网络提取图片深层次网络特征数据,结合SPP 算法对特征图进行处理增加感受野,提取更高层次的语义特征。其次,在算法改进策略中,采用改进K-means++算法对图片样本集目标的大小进行聚类分析,筛选出针对检测目标特征分析的锚框,用于模型训练及检测,引入 CBAM 自注意力结构,增强模型在复杂背景下对目标检测物的特征提取能力,提高模型检测精度。最后,采用本文算法和其他两种常用的图像识别算法对实际的输电线路现场图片样本集进行测试,实验结果表明本文算法具有更高的识别准确率,且平均单张图片识别速度更快,满足模型前端部署的要求,验证了该算法的优越性。