输电线路巡检图像检测模型的加速与压缩研究

2020-10-23 01:55赵航航江一林睿顾超越李喆
广东电力 2020年9期
关键词:网络结构滤波器卷积

赵航航,江一,林睿,顾超越,李喆

(1. 中国南方电网有限责任公司超高压输电公司广州局,广东 广州 510000;2.上海交通大学 电子信息与电气工程学院,上海 200240)

我国电力系统架空输电线路规模庞大、环境复杂、气候多变,为保证电力系统安全稳定运行,防止事故发生,需要定期巡检排查隐患[1]。由于地理条件复杂、巡检环境恶劣,依靠人工检测不仅费时费力,而且检测效率低,难以满足要求[2]。无人机具有操作简单、响应灵敏、飞行灵活、电池寿命长、成本低等优点,已成为电力巡检的常规方式[3-4]。

利用无人机进行输电线路巡检,不仅提高了输电线路运行维护的效率和质量,而且降低了劳动强度和成本,保证了线路巡检人员的人身安全。目前,电力公司主要由人工对巡线结束后无人机采集的巡检照片进行识别,并对线路中的设备缺陷进行排查。鉴于照片数量多但缺陷比例低,工作人员容易疲劳,造成漏检。无人机作为电力系统的边缘设备,具有一定的自主识别能力,提高了电力检测的效率和质量。

近年来,研究者针对无人机电力巡检及缺陷图像检测方面作了不少相关研究[6-9],文献[6]提出了建立野外路径导航模型和杆塔缺陷库,搭建了图形化巡视功能模型,基于智能算法规划巡检路线,并利用北斗系统定位杆塔,有效提高了巡检效率。文献[7]结合深度学习算法和现场可编程门阵列硬件加速方法,设计了一种基于图像识别的绝缘子前端定位系统,目标检测算法采用单发多盒探测器(single shot multibox detector,SSD)算法,经检测可准确完成对绝缘子的定位,有效提高了巡线效率。文献[8]选取SSD算法,通过实验选取最佳骨干网络并采用特征融合方法优化算法,平均准确率(mean average precision,MAP)达到90.21%。文献[9]提出了基于YOLOv3-tiny的航拍绝缘子自爆自动检测算法,引入跳跃连接思想改进了主干网络,并优化了Anchor box参数,改进后MAP达到92.57%。

深度学习算法具有精度高、泛化能力强的特点,适用于电力检测中的故障和缺陷识别,然而庞大的计算量和复杂的网络结构,使其无法直接在性能较差的嵌入式设备中运行;因此为了在诸如巡检无人机等设备上应用深度学习算法,有必要简化其网络模型,从而减少算法识别所需的计算量和存储空间。许多研究者开展了相关研究,提出了不少有效的压缩方法[10-13]。文献[10]对模型裁剪、轻量化网络设计、知识蒸馏、量化等模型压缩方法的性能、优缺点进行了分析总结。文献[11]提出了Lasso+奇异值分解的融合压缩法,以VGG-16作初始模型,经过实验表明,该方法在保证准确率的同时不仅降低了模型规模,也提升了模型的实时性。文献[12]首先对权值参数进行聚类,再在参数的聚类质心基础上添加随机扰动进行参数重构,重构模型不仅将准确度提升1%~3%,且将模型体量压缩至原来的1/4。文献[13]提出一种结合半波高斯量化与交替更新的混合压缩方法,由CIFAR-10和ImageNet数据集上实验证明,在模型压缩比约为30的前提下模型精度分别提升0.87%和2.00%,加速比提高到原来的10倍。

本文介绍了应用于电力异物检测系统的深度学习模型的压缩加速方法,旨在以尽可能低的成本,减少模型规模和模型推理计算量。压缩方法包括模型剪枝、层融合、奇异值分解等。这些方法的特点是对模型识别精度影响较小,只对训练后的模型进行操作而不进行再训练,处理后的模型可以直接在边缘设备中运行。

1 输电线路巡检图像检测与模型压缩算法

1.1 图像检测算法

目标检测算法分为一阶段和二阶段2种。一阶段目标检测算法网络结构简单,算力要求低,检测速度快,但检测精度较差,代表算法为SSD[14]、YOLO[15]系列;二阶段目标检测算法算力要求高,结构复杂,但检测精度更高。输电线路巡检图像有着背景复杂、检测目标尺度小、干扰因素多等特点,需要精度高和网络结构较为复杂的深度学习算法。Faster 区域卷积神经网络( regional convolutional neural networks,R-CNN)是一种典型的2级检测算法,主要有3个主要部分组成,即区域建议网络、前置特征提取网络和基于感兴趣区域的分类器,Faster-RCNN的网络结构如图1所示。Faster-RCNN检测精度高且检测速度较快,适用于输电线路设备检测。

图1 Faster-RCNN的网络结构Fig.1 Faster R-CNN architecture

本文的特征提取采用VGG-16[16]网络,在其基础上添加了批量标准化(batch normalization,BN)层。在神经网络训练过程中,BN层可以加速网络收敛和控制拟合,但增加了一些运算操作和参数;因此在推理过程中,可以通过合并BN层和卷积层的参数来减少运算量,压缩[17]模型部分。

BN层融合的数学原理如下:

卷积层输出

Y=WX+bconv.

(1)

式中:W为权重;X为数据;bconv为卷积层的偏差。

BN层输入

(2)

式中:m为均值;σ为方差;s为标度;bbn为偏差;ε为滑动系数。

(3)

1.2 模型压缩算法

巡检无人机作为嵌入式设备,其计算力和内存容量有限,若想将缺陷检测算法应用于巡检无人机上,必须对其进行一定程度的压缩与加速。本文研究模型压缩算法,在基本保证精度不下降的基础上,尽可能减少模型参数大小和算法推理速度,进一步提升电力缺陷检测系统的实用性。

1.2.1 剪枝

神经网络的运算量由卷积层主导[18],研究人员提出了卷积核剪枝方法,以减少卷积的运算量。去除无效的卷积核对模型的精度影响不大,但可以有效减少推理所需的计算量。最近人们提出了一种深神经网络的抽奖假设,研究人员证实:稀疏子神经网络相较于原神经网络,不仅有着更小的规模和计算量,且具有与原模型相似、甚至更高的测试精度[19]。

1.2.2 奇异值分解压缩

全连接层占据了模型参数的大部分,因此压缩全连接层有可能获得显著的压缩增益。采用基于矩阵的奇异值分解(singular value decomposition,SVD)算法,在全连接层之前增加1个中间层来压缩全连接层的参数。当正确选择压缩参数时,可凭借较小的精度损失换得极高的压缩比。SVD分解的原理简述如下。

全连通层的权值矩阵为Am×n,矩阵A的奇异值分解式

A=UΣVT.

(4)

式中:U为m×n的矩阵,m、n为常数;Σ为m×n的矩阵,除主对角线上的元素外,其他元素为0,主对角线上的每个元素称为奇异值;V为n×n的矩阵;U和V为酉矩阵。

将奇异值分解算法的平衡系数以r表示,采用奇异值分解算法在全连通层前插入中间层。中间层神经元数目(即平衡系数)为r,中间层、全连接层的压缩权矩阵分别为U′、V′。U′是矩阵U的前r列,矩阵V′为由矩阵Σ中的前r列奇异值和矩阵V的前r行组成的平方矩阵。压缩后,全连通层的参数个数由m×n变为r×(n×n)。

矩阵U、Σ、V的计算方法如下。

对AAT进行特征分解,得到的特征值和特征向量满足

(5)

对ATA进行特征分解,得到的特征值和特征向量满足

(ATA)vi=λivi.

(6)

式中:vi为特征向量;λi为特征值。将所有特征向量组合成n×n的矩阵,即为矩阵V。

矩阵Σ的对角线是按降序排列的奇异值σi,其余位置为0,其中奇异值σi由式(7)计算得到。

σiui=Avi.

(7)

2 实验及结果分析

本文实验所使用的软硬件配置如下:Ubuntu16.04 64位操作系统、Intel i7-8700K CPU、NVIDIA GTX 1080Ti GPU、深度学习框架Caffe和编程语言Python。

2.1 环境和数据的准备

本实验旨在研究每一步的压缩或加速效应。选取无人机巡检输电线路图像检测作为应用场景,包括鸟巢、绝缘子、连接螺栓。样本由巡检无人机或变电站固定摄像头拍摄,图像分辨率为1 500×900像素。电力领域尚无可用的公共数据集,数据量有限,故利用图像水平翻转、微调图像亮度、对比度等方式,增强模型泛化能力。具体样本数量及分布见表1,训练后生成检测模型,部分检测结果如图2所示。

图2 测试结果Fig.2 Test results

表1 数据集构成Tab.1 Data set composition

2.2 压缩和加速

首先将每个BN层与卷积层融合,该步在数学上与原模型是等价的,所以不会造成任何精度损失。

由于caffe模型的结构限制,需要对卷积核的权值进行2次遍历。第1次遍历的目的是找到权重低于阈值的滤波器(它们被视为空闲滤波器),根据遍历结果,修改模型对应的prototxt文件(即网络结构文件)。第2次遍历将清除空闲滤波器,并对模型进行SVD。SVD是删除冗余参数的操作,对于不同的模型,即使网络结构相同,使用SVD压缩后也可能产生不同的效果;因此对于特定的模型,需要尝试不同的SVD平衡系数r以确定最佳的压缩效果。

2.3 结果分析

VGG-16具有13个卷积层,相应地包含13个BN层,BN层中的参数数目很少。实验发现,BN层合并后,模型尺寸减小了10 KB,计算量略有下降。实验测试发现:权重小于10-9的卷积滤波器很难起到推理的作用,因此将被移除;遍历各卷积层后,各层滤波器权重低于该阈值的空闲滤波器数量见表2。

表2 每层空闲过滤器的数量Tab.2 The number of idle filters

去除空闲滤波器后,测试集上的识别精度和置信度没有显著变化;从算法模型规模上看,去掉空闲滤波器后,模型大小下降340 KB,压缩效果不明显,但在减少计算量方面效果比较明显,见表3。卷积层的计算量

表3 每层计算量减少值Tab.3 Reduction of calculation amount of each layer

CA=(I×J)(M×N)KL.

(8)

式中:I×J表示卷积核的大小,I、J为常数,在VGG-16中为3×3;M×N表示输出特征映射的大小,M、N为常数;K为输入通道的数目;L为输出通道的数量。

模型的原始计算量为3.67×1012,而该操作减少了计算量6.73×1011,卷积层上的计算量减少了18.3%。

在模型的全连通层上进行SVD,平衡系数r随模型的变化而变化,因此通过实验尝试了一系列的平衡系数r值。模型的尺寸由模型结构决定,检测目标类别和数量对其影响很小,不同平衡系数对应的模型尺寸如图3所示。VGG-16有2个全连接层,故有2个r值(r1和r2),随着r1和r2的减小,模型的大小显著减小。

图3 不同平衡系数对应的模型尺寸Fig.1 3. Model size corresponding to different balance coefficient

图4给出了模型的识别效果的变化图例:当r1和r2均取为16时,模型识别的效果没有显著变化,仍可以准确检测目标,如图4(a)所示;当r1和r2均取为8时,鸟巢检测矩形框的位置有所移动,且产生多个矩形框,如图4(b)所示;当r1和r2均取为4时,发生误识别,如图4(c)所示;当r1和r2分别取为2和4时,该算法基本失去检测能力,如图4(d)所示。

图4 具有不同平衡系数r的模型检测效果Fig.4 Detection effects of the model with with different balance coefficients

由上述实验可知:对于本实验所使用的模型,r1和r2均取为16时,可以在基本不影响识别性能的情况下有效地压缩模型,此时识别效果几乎与原模型相同,而模型规模已经从约550 MB下降至约71 MB。对于不同的模型,需要通过多次实验来寻找合适的r值,以保证在基本不损失精度的情况下尽可能的压缩模型规模。

3 结束语

本文介绍了一些深度学习模型压缩和加速的方法,所有方法都不需要重新训练模型。

通过将BN层与卷积层合并,可以略微减少模型的参数个数和计算量,同时识别精度不受影响;适当的剪枝可以有效地减少计算量而基本不影响识别精度,本文使用剪枝技术将卷积层的计算复杂度降低了18%。利用SVD对模型进行压缩可以明显减少模型参数量,从而显著减小算法模型的规模。本文使用SVD,在保证识别性能的前提下,使模型的规模减少了87%。

为了保证模型的识别率尽可能不受影响,本文只选择了几种易于控制、对精度影响较小的优化方法,这些方法不需要再训练即可减少大量工作量。在深度学习领域尚有很多有效的方法,如果能够针对电力行业的特点进行特别优化,则相应的优化模型能够达到更好的压缩和加速效果。

猜你喜欢
网络结构滤波器卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
基于傅里叶域卷积表示的目标跟踪算法
基于广义混合图的弱节点对等覆盖网络结构
体系作战信息流转超网络结构优化
基于Canny振荡抑制准则的改进匹配滤波器
基于互信息的贝叶斯网络结构学习
基于TMS320C6678的SAR方位向预滤波器的并行实现