胡 鑫 欧阳华 尹 洋
(海军工程大学电气工程学院 武汉 430033)
变电站稳定性要求高,分布范围广,但维护人员少,维护路线长。在这种复杂环境下,仪表的种类繁多。变电站设备的巡检普遍还是采用人工巡检的方式,巡检一次通常要2h~3h,该方式劳动强度大、效率低、检测质量分散性大,巡检人员维护能力不足,对供电保障造成极大影响。所以将先进的识别算法引入工业仪表识别领域,以解决目前自动识别在准确率、泛化能力等方面的不足,并将仪表自动识别应用于机器人巡检[1]之中,通过机器人实时识别仪表类型,解放劳动力,这也将成为未来的发展趋势。1959年Hubel[2]发现在猫的初级视觉皮层之中存在简单细胞和复杂细胞,分别承担不同层次的视觉感知功能。这些细胞对视觉输入空间的子区域非常敏感,我们称之为感受野。而卷积神经网络的正式提出,是由 Yann LeCun[3]于 1998 年提出,在卷积神经网络之中引入了反向传播算法,在手写数字识别上有了很大的成功。进而,卷积神经网络真正开始了深度学习的新篇章,各种基于卷积神经网络的改进模型不断被提出,应用于图像各个领域。例如在2014年3月,一支由汤晓鸥[4]领导的中国人工智能团队发布其原创的人脸识别算法研究成果,准确率达到98.52%,首次超越人眼识别能力。英特尔公司的研究人员提出的LPRNet[5](License Plate Recognition via Deep Neural Net⁃works),采用一种端到端的识别方案,不需要进行图片的分割,速度快,准确度高于95%,在大陆多种车牌上取得了不错的效果。2020年,何配林[6]利用Mask-RCNN识别工业仪表读数,首先将仪表分为指针式和数字式两类,进行仪表类型的识别,对于两类特征区别明显的仪表,其识别的成功率接近100%。本文则针对指针式仪表中最为重要的四类仪表进行分类识别,采用深度学习中卷积神经网络(Convolutional Neural Network)的 AlexNet[7]模型对仪表图像进行自动特征提取,然后进行建模与分类,最后采用改变模型池化层的池化方式的组合形式,改进得到的识别结果准确率和损失程度更低,以满足更高精度要求的工程需要。
目前,并没有找到可以直接应用的数据集,于是针对实验所必须的输入数据,利用实验室已有的吊轨机器人系统,制作了一个仪表为对象的数据集;主要手段是针对已有图片进行扩展,数据量增强,从而提高实验精度和准确度。
1)对已有图片进行旋转操作,模拟相机采集图片时出现的角度偏差问题;
2)对已有图片进行加噪处理,模拟巡检环境现场的各种噪声对图像采集造成的影响;
3)对已有图片进行整体色调的调整变换,模拟户外环境下光照因素带来的影响。
初步得到了一个针对工业巡检十分重要的四类仪表:压力表(图1(a))、电压表(图1(b))、电流表(图1(c)和温度表(图1(d))的数据集,如图1所示。其中电压表640张、电流表640张、温度表360张压力表2000张,四类仪表共3640张图片这样的一个数据集,然后按照8:2的比例划分训练集和测试集,从数据规模来看基本达到了用于深度学习的数据量的标准,可以用来投入使用。
图1 四类仪表
卷积神经网络[8](Convolutional Neural Networks,CNN)是一类通过卷积运算,并且具有局部连接、权重共享等特性的前馈神经网络,是深度学习领域之中的代表作品。卷积神经网络具有表征学习能力,其最早是用来处理图像信息。目前的卷积神经网络一般是由卷积层、汇聚层、和全连接层交叉堆叠而成的前馈神经网络,在结构上有三个特性:局部连接、权重共享以及汇聚。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。上述数据集之中的四类仪表由于形状、字符标志的不同,当其输入卷积神经网络之中,进行局部区域特征提取之后,会得到不同的特征映射,从而得以区分。
AlexNet是在2012年,在Geoff Hinton的实验室由Alex Krizhevsky等设计出的,是第一个现代深层卷积神经网络,其首次运用了很多现代深度卷积网络的技术方法,例如使用GPU来并行训练,非线性激活函数采用了ReLU函数,并使用Dropout来防止过拟合,使用数据增强手段来提高模型准确率等,并且一举夺得了 2012 年 ImageNet[9~11]图像分类竞赛的冠军(top5错误率仅为15.3%),这在当时引起了很大的轰动。AlexNet是一个具有很大历史意义的网络结构,AlexNet诞生之后,卷积神经网络(CNN)受到极大重视,在领域内被不断改进并且层次越来越深,这也使得CNN成为在图像识别分类的核心算法模型,并且将其应用到工业、医学、农业等各大领域。
AlexNet网络结构共有8层,分别是前面5层的卷积层和后面3层的全连接层,其中最后一个全连接层是使用了Softmax函数的输出层。其结构如图2所示。
图2 AlexNet网络结构图
AlexNet的输入为224*224*3的图像。
第一个卷积层:通过使用两个大小为11*11*3*48的卷积核,设定为4的步长,为3的零填充,能够得到两个大小为55*55*48的特征映射组;
第一个汇聚层:通过使用大小为3*3的最大汇聚层,设定为2的步长,能够得到两个27*27*48的特征映射组;
第二个卷积层:通过使用两个大小为5*5*48*128的卷积核,设定为1的步长,为2的零填充,能够得到两个大小为27*27*128的特征映射组;第二个汇聚层:通过使用大小为3*3的最大汇聚层,设定为2的步长,从而得到两个13*13*128的特征映射组;
第三个卷积层:比较特殊,是两个路径的融合,通过使用一个大小为3*3*256*384的卷积核,设定为1的步长,为1的零填充,能够得到两个大小为13*13*192的特征映射组;
第四个卷积层:通过使用两个大小为3*3*192*192的卷积核,设定为1的步长,为1的零填充,能够得到两个大小为13*13*192的特征映射组;
第五个卷积层:通过使用两个大小为3*3*192*128的卷积核,设定为1的步长,为1的零填充,能够得到两个大小为13*13*128的特征映射组;
第三个汇聚层:通过使用大小为3*3的最大汇聚层,设定为2的步长,能够得到两个6*6*128的特征映射组;
最后是三个全连接层,神经元数量分别为4096、4096和1000。
卷积层的计算公式为
Ii表示输入矩阵,Wij表示卷积核,bj表示偏置,f(·)表示激活函数。
池化层的计算公式为
down表示池化操作。
全连接层最后利用SoftMax函数进行分类,其计算公式为
Ii为所有输入组合中的第i个输入,K为输入神经元个数。通过Softmax函数,输出值能够映射到了[0,1]范围内,利用Softmax分类实际上就是根据概率值来进行分类操作。
另外,AlexNet在前两个汇聚层之后还进行了局部响应归一化(Local Response Normalization)。一般而言,在神经网络中用激活函数对输出进行非线性映射,并且对于ReLU激活函数而言,值域没有一个区间,因此要对这个进行一个结果的归一化。
局部响应归一化公式如下所示:
通过局部响应归一化,增强了模型的泛化功能。
实验环境为64位的Win10系统,计算机的CPU 为 Intel(R)Core(TM)i5-9300H,CPU 的主频为2.4GHz,内存为8GB,显卡为GTX1650。模型训练是利用Anaconda下基于Python语言的Pycharm编译工具,采用Keras深度学习框架。
分类指标包括训练准确率、训练损失率、验证准确率和验证损失率。准确率和训练损失率用来判断模型本身的性能,可以分别用下面公式表示出来:
将数据导入AlexNet网络中运行,并且调整ep⁃ochs(训练轮数)和batch size(一次训练所选取的样本数)用来进行对比。仿真识别结果如图2~4所示。
仿真结果分析如下。
本次实验考察的是图像识别的准确率和损失率,图2~4的横坐标为训练轮数,左图纵坐标为准确度,右图纵坐标为损失程度。针对batch_size和epochs这两个超参数进行对比分析。
图2 batch_size=16,epochs=20
图4与图3相比batch_size更大,收敛更快,但精度略低,且出现了损失程度较大的情况。说明batch_size设的大一些,收敛得更快,也就是需要训练的次数少,准确率上升的也很稳定,但是实际使用起来可能精度不高。batch_size设的小一些,收敛得慢,可能准确率会来回震荡,因此需要把基础学习速率降低一些,但是实际使用起来精度较高。
图3 batch_size=16,epochs=50
图4 batch_size=32,epochs=50
图3与图2相比epoch更大,可以看到图3的收敛情况更好,损失程度更低。梯度下降本身是一个迭代过程,所以经过单个epoch更新权重远远不够。随着epoch的增加,神经网络中权重更新迭代的次数增加,曲线从开始的欠拟合,慢慢进入最佳拟合,epoch继续增加,最后过拟合。从上述结果可以判断出图2还未进入最佳拟合状态。
根据上图结果显示,本次仿真识别结果较为理想,特别是当batch_size=16,epochs=50时,识别的准确度最高。经过一段时间训练,训练集的准确率保持在95%以上,其个别特殊样本会引起极小程度的波动,但是影响并不大。对其四个指标计算平均值,得到的结果较好,能够对仪表类别达到初步效果。
表1 指标精度
从AlexNet的结构分析,可知,此网络包含3个池化层[12~13](pooling)且运用的都为最大池化(Max⁃pooling)。为了能够提取局部感受野中精确的图像特征,研究了最大值池化和均值池化的特点,最大值池化可以提取图片局部的特征信息,通过局部的特征信息可以组合成为全局的特征信息。但是在特征的细节处理上效果表现欠佳,而另外一种均值池化(Averagepooling)恰恰与之相反。因而提出两者结合运用的池化方式,既保留了轮廓的完整性,又能在细节的处理上更加精确。
最大池化公式为
均值池化公式为
vm表示图像中T个像素点中的第m个像素点,m表示该点在滑动窗口中的方位,池化即把vm映射到对应的统计值上。
经反复实验对比分析池化方式的选择得出,当第一次使用均值池化,在低维数据时着重细节处理,在后两次还是使用最大值池化,在高维时提取全局特征信息。即由(Maxpooling*3)改为(Aver⁃agepooling+Maxpooling*2),此时得出的结果为最优。通过结合两者的优点,提取出更加精确的特征信息。
对其进行仿真实验,取第一次仿真中效果最好的一组,即取batch_size=16,epochs=50进行实验。
结果如图5~6。
图5 原模型的仿真结果
图6 改进后的仿真结果
表2 改进之后的指标精度
根据仿真结果进行分析可得:通过改进之后,测试结果收敛性更好,并且四项指标都得到了小幅度提升,验证准确率达到了97.68%,验证损失率降低至9.37%,这也反映了本次改进的有效性。
本文利用AlexNet网络模型针对四类常见的变电站仪表进行识别分类,通过构造实时环境的数据集,使得训练模型具有更好的适应性。并且根据网络模型的结构,针对池化层进行研究,并且进行对比分析,验证了改进方案的模型可靠性,得到一个效果更好的池化组合方式,使得识别的准确率有了小幅度的提升,为后续的变电站智能无人巡检提供了更好的性能支撑。