刘 冉, 于会群, 王国兵
(1.上海电力大学, 上海 200090; 2.上海华建电力设备股份有限公司, 上海 200090)
在传统配电站房进行开关操作时,为了防止开关动作不到位或开关误操作,需要人工检查以确保开关动作到位[1]。随着工业4.0等概念的提出,单纯依靠人工的监测方式已无法满足智能化、实时化的管控需求,基于机器视觉的检测方法是实现智能监控的有效途径。现有的实时监控方法大多基于传统的机器学习理论,即首先将智能巡检机器人采集的视频分解成以帧为单位的图像,经过预处理操作后手动提取图像特征,然后使用分类器识别物体状态[2]。
以开关设备识别监测为例,其按照形态大致可分为“把手式开关”和“旋钮式开关”。其中,两相把手式开关设备的旋转钮是不对称的,一边代表指向,一边是控制把手,此类设备应用场景居多。国内外学者对开关状态识别做了众多研究,但在检测精度、速度或模型复杂度方面仍有提升的空间,研究提高两相把手式开关识别效率和数据采集精度仍具有重要意义[3]。
因此,本文在配电站房的实际应用研究背景下,将单激发多框探测器(Single Shot Multibox Detector,SSD)算法进行优化改进并应用于两相把手式开关识别中。首先,选择SSD图像识别神经网络作为两相把手式开关识别的基本算法,并将基于卷积块的注意机制(Convolutional Block Attention Module,CBAM)引入到该算法结构中,构造了一种改进SSD算法;然后,使用智能巡检机器人收集开关设备的图像并制作数据集;最后,通过对大量数据样本进行测试,验证了改进SSD算法的有效性和准确性。
SSD目标检测技术的网络结构由基础网络、预测卷积层和辅助卷积层3部分组成。其结构原理如图1所示。
图1 SSD模型结构原理
其中,VGG16是VGG(Visual Geometry Group)模型的一个深化版本,包含了16个卷积层和全连接层;Conv指卷积操作,Conv m_n指网络结构中的第m个卷积层的第n个子层;Classes指对象检测模型需要识别的不同类别的物体或目标的数量;S1和S2分别表示步长为1和2。SSD针对Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2和Conv11_2特征层的每个单元,按照不同长宽比分别提取4~6个先验框,最终获取8 732个先验框。样本的正负通过Iou的计算公式来判断,当计算值小于阈值时为负样本,反之则为正样本。Iou的计算公式如下:
(1)
式中:Gt,Dr——真实框、先验框的集合。
经Iou算法判断后产生的众多重叠检测需要使用非极大值来抑制。其思想为从列表集合中移除得分最多的检测框,并将其添加到最后的检测结果中,从而筛选冗余结果。
SSD损失函数L定义为位置误差与置信度误差的加权和,属于多任务损失函数。其表达式为
(2)
c——类别置信度预测值;
l——预测框;
g——真实框;
N——先验框的正样本数量,当N=0时,损失则为零;
Lconf——置信损失函数;
α——置信度误差和位置误差的权重系数,通常取1;
Lloc——位置损失函数。
置信损失函数Lconf表示预测框与真实框的差值,公式如下:
(3)
(4)
式中:Pos——正样本先验框;
Neg——负样本的先验框;
位置损失函数Lloc公式如下:
(5)
(6)
(7)
(8)
(9)
式中:m——边框回归损失;
cx,cy——先验框d的中心坐标(cx,cy);
w,h——先验框d的宽和高;
SmoothL1——一种针对回归任务的平滑的损失函数,用于目标检测算法中的边界框回归任务;
无论通道特征值含量多少,SSD算法对各个通道处理程度均一致,但这样处理会浪费计算资源。为解决这一问题,先计算出每个通道的特征值含量,再对计算资源进行合理分配,这样就能抑制无关信息,得到更多目标特征,使检测精度得到提高。
目前,CBAM已经广泛地应用到了深度学习的每个领域。其原理是:模拟人的视觉机制,将图像的关注重心放在辅助判断的信息上,忽视无关信息。CBAM主要由通道注意力和空间注意力组成[4]。通道注意力模块如图2所示。其中,Sigmoid函数为神经网络的激活函数,将变量映射到0和1之间。
图2 通道注意力模块
图2中输入特征图记为F∈RC×H×W,W,H,C分别为输入特征图的宽、高和通道数。通道注意力模块的工作原理为:通过对特征图F进行平均池化和最大池化操作,达到压缩特征图F的全局空间信息的目的[5],并生成两个尺寸为1×1×C的特征图S1和S2;然后通过由多层感知器和一个隐含层组成的共享网络层,对每个特征应用共享网络之后,得到两个一维特征图,即平均池化特征和最大池化特征[6]。
将这两个一维特征图按通道进行元素求和,并将合并的特征通过Sigmoid函数进行归一化,得到各通道的尺寸为1×1×C的权重统计值Mc[7]。通道注意力可以表示为
Mc(F)=φ[MLP(AvgPool(F))+MLP(MaxPool(F))]
(10)
式中:φ——Sigmoid激活函数;
MLP——由全连接层FC1,FC2与ReLU非线性激活函数组成的多层感知器;
AvgPool——全局平均池化;
MaxPool——全局最大池化。
空间注意力模块如图3所示。
图3 空间注意力模块
空间注意力模块的工作原理为:在经过通道特征重标定后会得到特征图F′。将其作为输入,并在通道维度上对特征图F′进行平均池化和最大池化操作,使特征图在通道维度上进行压缩,得到特征图P1∈R1×H×W和P2∈R1×H×W。通过通道级联两个特征图,生成一个有效的特征图P3∈R2×H×W。随后经过7×7的卷积层(用f7×7表示),对P3中不同位置的信息进行编码和融合。最后,通过Sigmoid函数操作得到空间加权信息Ms,可用于区分图像不同空间位置的重要程度。空间注意力可以表示为
Ms(F)=φ{f7×7([AvgPool(F′);MaxPool(F′)])}
(11)
CBAM注意力模块结构如图4所示。
图4 CBAM注意力模块结构
将输入特征图F与各通道权重值Mc两个矩阵的对应元素相乘,对F进行特征重标定处理,得到能够有效体现特征关键通道信息的特征映射F′。基于通道加权,串联空间注意力机制,并自适应加权空间特征信息。空间注意力模块的输入为F′,与空间权重系数Ms两个矩阵的对应元素相乘,获得包含通道位置信息和空间位置信息的显著特征图F″,使输入特征强的部分能够得到更多的关注,提升其空间特征选择能力。
其过程用公式表示为
(12)
式中:⊗——两个矩阵对应元素相乘。
为了进一步提高模型的检测精度,将CBAM注意力机制引入到SSD算法中,改进后的网络结构如图5所示。
图5 引入CBAM注意力机制的SSD网络结构
图5中,将注意力机制加入到conv3→conv4和conv7→conv8→conv9→conv10→conv11之间,在卷积层的最后一层检测每一张特征图,并提取相应的先验框,经过各种运算后将其发送到非极大值抑制进行筛选,最终输出检测结果。由于注意力机制的存在,改进SSD算法在前向训练过程中会更加注重两相把手式开关位置的识别,从而提高其占据比例。具体来说,注意力机制会针对输入图像中每个像素进行分类,判断其是否为两相把手式开关位置,从而使得算法更加准确地识别出两相把手式开关的位置。通过引入注意力机制,改进SSD算法能够提高对于两相把手式开关位置的检测精度,从而提高整个系统的工作效率。通过对权重系数不断地调整,不仅能够使两相把手式开关提高必要特征提取的效率,还能在精确定位两相把手式开关损失函数回归时,提高损失函数计算的准确率。
选择嵌入CBAM机制来改进SSD算法时,主要考虑以下几个方面的优势。
(1) 提高识别精度 SSD算法是一种基于卷积神经网络的目标检测算法。其对于目标边界的识别准确度较高,但对于目标的分割准确度相对较低;而CBAM机制可以通过对卷积层的输出进行注意力加权,从而使得网络更加关注对于目标识别重要的特征,减少对于无关特征的捕捉,从而提高识别精度[8]。
(2) 降低模型复杂度 SSD算法在目标检测过程中需要进行多次卷积操作,从而使得模型的参数数量较大,计算复杂度较高[9];而CBAM机制可以通过注意力加权的方式,对卷积层的输出进行优化,从而减少模型的参数数量和计算复杂度,提高模型的可训练性和泛化能力。
(3) 适应不同任务需求 CBAM机制可以通过对卷积层的输出进行注意力加权,从而使得网络更加关注对于目标识别重要的特征,对于不同类型的目标检测任务都适用;而 SSD 算法是一种较为通用的目标检测算法,可以应用于不同类型的目标检测任务,但针对不同的任务需求,可能需要对其进行相应的调整和优化[10]。
综上所述,选择嵌入CBAM机制来改进SSD算法可以显著提高模型的识别精度,降低模型的参数数量和计算复杂度,并且可以适应不同的目标检测任务需求。因此,这是一种较为有效和实用的算法改进方法。
为了使经过训练的SSD目标识别网络更方便地识别两相把手式开关的状态,需要一定数量的对应开关图像作为训练集。本文的两相把手式开关图像数据集主要来自智能巡检机器人的现场拍摄。对智能巡检机器人所采集到的视频进行抽帧处理,生成样本图片,通过对亮度、对比度、镜像翻转的调整来扩大数据集[11],最终建立起1 000张两相把手式开关图像的数据集。其中:包括300张横向状态开关图片,300张纵向状态开关图片,400张横纵混合开关图片。标记的标准为目标完整度大于50%。使用三维标注工具labelImg对数据集进行标注,“horizontal”为横向状态的标注标签,“vertical”为纵向状态的标注标签,采用VOC2007数据集格式标记,生成1 000份XML文件,XML文件中的信息包括图像的路径、名称、大小[12]。
本文所进行训练及测试的实验环境配置如表1所示。
表1 实验环境配置
为了对本文所提出的改进SSD算法的性能进行评价,对检测结果和评价参数进行分析,样本照片按照9∶1的比例随机分配为训练集和测试集。图6为改进SSD算法测试结果的部分图片。从图6中可以看出,在背景杂乱的情况下,改进SSD算法仍能准确检测识别两相把手式开关的状态。
图6 改进SSD算法测试结果的部分图片
为了进一步验证本文提出的改进SSD算法,使用K-最近邻(K-Nearest Neighbor,KNN)法、反向传播神经网络(Back Propagation Neural Network,BPNN)两种较为成熟的图像识别应用方法、传统的SSD算法和本文所提改进SSD算法,分别对测试集的1 000幅图像进行检测。不同算法性能评估指标对比如表2所示,识别结果对比如图7所示。由表2可以看出:改进SSD算法的平均精度(Average Precision,AP)在98.66%以上,说明开关检测精确度非常高,单个目标检测效果非常好;改进SSD算法模型的平均精度均值(meam Average Precision,mAP)达到了99.10%,证明网络的检测性能在准确性上达到了较高水平。
表2 不同算法性能评估指标对比
图7 识别结果对比
根据表2给出的数据,可以得到以下实验结果对比描述。
KNN算法是一种基于实例监督学习的算法,其准确率较高,但对于分类问题存在一定的误分类率。在本文实验中,KNN算法的mAP值为79.25%,误检率较高,处理速度也较慢。
BPNN算法是一种基于神经网络的算法,具有较好的分类能力和鲁棒性,但需要大量的参数调整。在本文实验中,BPNN算法的mAP值为90.74%,误检率较高,参数量较大,处理速度较慢。
SSD算法是一种基于卷积神经网络的算法,具有较高的准确率和较低的误检率,但需要一定的参数调整。在本文实验中,SSD算法的mAP值为95.29%,其参数量较少,处理速度较快。
改进SSD算法是在SSD算法的基础上进行了改进,提高了准确率和降低了误检率。在本文实验中,改进SSD算法的mAP值为99.10%,误检率最低,参数量几乎为零,处理速度较快。
从图7可以看出:在KNN算法、BPNN算法和传统SSD算法中,由于周围环境和开关布局的影响,存在漏检的情况,并且对于两相把手式开关检测的准确性比改进SSD算法要低。
综上所述,改进SSD算法相对于KNN算法、BPNN算法和传统SSD算法具有更高的准确率和更低的误检率,且不需要过多的参数调整,具有较高的实用性和应用价值。
本文提出改进SSD目标检测算法,用于对配电站房的两相把手式开关状态的识别。该识别算法在特征提取模块中嵌入CBAM注意力机制,增强有用特征并抑制无用特征响应,有效地提升了检测的精度。实验结果表明,改进SSD算法模型的mAP达到了99.10%。在智能巡检机器人中运用该算法不仅可以降低人工巡检操作出现问题的可能性,还能提高两相把手式开关状态的识别效率,提高了配电站房的智能化水平。