基于生成对抗网络和RetinaNet的销钉缺陷识别
2020-03-14王健王凯刘刚周文青周子凯
王健 王凯 刘刚 周文青 周子凯
(华南理工大学 电力学院,广东 广州 510640)
为了确保电力系统稳定运行,巡检人员需定期对架空输电线路进行巡视。由于架空输电线路分布广,所处地形复杂多变等因素,传统人工巡检方式受到了极大的限制[1- 2]。
针对此问题,无人机智能巡检获得了广泛的应用,无人机携带拍摄装置沿着输电线路走廊飞行,近距离拍摄电力部件,这种方式虽然在某种程度上提高了巡检效率,但其产生大量的图像仍需借助人工分析以获取相应的缺陷信息。人工分析费时费力,还容易出现漏检、误检情况。针对此问题,有必要研究一种智能化的缺陷检测技术[3- 5]。
目前,架空输电线路的缺陷检测主要分为基于人工特征设计的检测方法和基于深度学习模型的检测方法。前者集中于手工特征的设计,如文献[6]针对高压绝缘子裂纹缺陷,通过第二代小波变换提取图像局部突变特征,以实现局部裂纹缺陷检测;文献[7]使用离散正交S变换提取绝缘子特征,并借助支持向量机实现了绝缘子的定位;文献[8]借助核主元分析法融合不同颜色空间的颜色特征,完成了绝缘子污秽等级的划分。手工设计特征不仅繁琐,还存在弱鲁棒性的问题[9],无法实现端对端的缺陷检测。于是有人提出了基于深度学习算法的缺陷检测,如文献[10]采用深层卷积神经网络自动提取图像样本特征,并对网络进行改进,实现了绝缘子自爆缺陷的识别;文献[11- 12]对比分析了DPM、SPPnet、Faster R-CNN等深度学习算法在绝缘子、防震锤等电力部件上的识别性能。
这些方法虽然能够较为精确地识别研究对象,但仍然存在以下不足:①未考虑模糊图像识别精度低问题,无人机现场采集图像时由于自身的飞行和抖动使得相当一部分图像清晰度下降,增加了检测难度;②以上研究大多集中于绝缘子、防震锤等体积较大的电力部件,而对于销钉、螺丝、螺栓这种令巡检人员十分棘手的小型电力部件的研究相对匮乏。
根据以上问题,文中针对销钉常见缺陷,借助深度学习算法RetinaNet实现销钉缺陷的自动识别。对于无人机现场采集到的模糊图像识别精度低问题,文中通过生成对抗网络(GAN)的生成器和鉴别器之间的博弈来改善此类图像质量,提高图像的清晰度,增强局部纹理等细节信息;由于用于GAN训练的模糊-清晰图像对在现实情况下是很难获得的,为此,文中对马尔可夫过程生成的轨迹矢量进行子像素插值形成模糊核,随后对无人机采集得到的清晰图像和生成的模糊核作卷积运算,以形成模糊-清晰图像对。最后通过实验分析文中所提出的方法的识别性能。
1 生成对抗网络模型的构建
GAN主要包含生成器和鉴别器[13]。其中,生成器接收噪声生成样本,其目标是让鉴别器无法区分真实数据和生成的数据,目标函数如式(1)所示;鉴别器用于接受真实样本和生成样本,并试图区分它们,其目标函数如式(2)所示。两者互相博弈以获取最优输出。
(1)
(2)
式中,D(x)为鉴别器的输出结果,Pr和Pg分别为真实数据和生成数据的分布情况。
1.1 损失函数的选取
损失函数作为GAN不可或缺的一部分,直接决定了网络性能的好坏,根据GAN架构将损失函数表示为对抗损失和内容损失之和:
(3)
在对抗损失函数选择的问题上,为了提高模型训练的稳定性和模型架构选择的鲁棒性[14],生成高质量的图像,文中使用WGAN-GP作为最终的优化目标函数,具体损失计算式如下:
(4)
式中,DθD(GθG(IB))表示生成网络输出的重构图像GθG(IB)被预测为真实图像的概率,IB为生成的图像。
内容损失大都以均方误差(MSE)作为优化的目标函数,这样生成的图像虽然有较高的峰值信噪比,但往往会丢失高频细节信息,导致模糊伪像的产生,使得图像趋于平滑。于是,文中采用感知损失(PL)来替代均方误差[15- 16]。PL基于生成图像卷积特征图和目标图像卷积特征图之间的差异,使生成图像和目标图像在语义和风格上更加接近,其定义如下:
(5)
式中,φi,j、Wi,j和Hi,j分别是VGG-19网络第i个最大池化层之前通过第j个卷积获得的特征映射及其特征图的宽度和高度,IS为输入图像。
1.2 网络结构
为了确保生成器能够处理模糊图像,输出所需的清晰数据,文中将噪声输入改为模糊图像输入,构建了如图1所示的生成器网络架构。生成器架构包含3个前向卷积单元、9个残差单元和2个反卷积单元。每个卷积单元由卷积层、实例归一化层和激活层组成,卷积层中卷积核大小依次为7×7、7×7和3×3。为了进一步加快网络的训练速率,增加网络的非线性拟合能力,卷积层后紧接着使用了归一化层,并且在激活层使用了线性整流函数(ReLU)。考虑到浅层网络无法提升网络识别效果,而常规网络的堆叠又会使得梯度消失现象更加明显[17],于是文中使用残差块提取更加抽象的特征,每个残差块由两个卷积层、实例归一化和一个激活层组成。为了获取重构的清晰图像,网络最后部分采用了反卷积结构,通过获取的特征图重构图像。
鉴别器接收真实数据和生成的数据,并对两者进行区分,相当于二分类器,其网络结构如图2所示[18]。结构中包含4个卷积层,卷积核大小依次采用3×3、3×3、3×3、1×1,卷积层后紧跟激活层,为了提高神经网络模型的表达能力,激活函数采用带泄露线性整流函数(LReLU),其表达式如下:
t=max(0,b)+amin(0,b)
(6)
式中,a是一个常数,文中取值为0.2。
图1 生成器结构Fig.1 Structure of generator
图2 鉴别器结构Fig.2 Structure of discriminator
由于鉴别器用于二分类任务,输出层使用Sigmoid函数进行数值的转化。
2 缺陷识别算法RetinaNet
深度学习算法主要分为两大类,分别是以Faster R-CNN为代表的“双阶段算法”和以SSD、YOLO为代表的“单阶段算法”,后者检测速度往往优于前者,但检测精度偏低。为了进一步提高“单阶段算法”的识别精度,文献[19]在损失函数方面进行了改进,并构建了以特征金字塔网络(FPN)为主要框架的RetinaNet,其结构如图3所示。由图可知,RetinaNet是由FPN和特定任务的网络组成的“单阶段检测器”。其中,FPN主要负责计算输入图像的卷积特征图,并实现特征图的多尺度融合,具体来说就是将低分辨率、高语义信息的顶层特征和高分辨率、缺少语义信息的低层特征进行自上而下、自下而上的横向连接;特定任务的网络则分别在主干网络的输出上执行卷积对象分类任务和边框回归任务。
图3 智能检测算法RetinaNet的结构Fig.3 Structure of intelligent detection algorithm RetinaNet
“单阶段”目标检测算法的低精度归因于候选区域的“类别不平衡”,对于部分数据,由于待检测目标在整幅图像中占据不大的比例,而背景所占的比例远远超过了前景物占据的比例,这样使得包含背景的候选区域占据主导地位。针对此问题,RetinaNet采用如下的分类损失函数:
FL(pt)=-αt(1-pt)γlnpt
(7)
(8)
式中:αt为平衡因子;γ为起调节作用的参数,γ∈[0,5];p∈[0,1],表示模型将类别预测为正类(c=1)的概率。
由式(8)损失函数的特性可知,预测概率值pt越高,损失值会越低,反之亦然,如此便起到了对占据主导地位的包含背景的候选区域的反馈抑制作用。考虑到RetinaNet在检测精度方面均优于双阶段检测器Faster R-CNN和单阶段检测器SSD、YOLOv1,因此,文中选取RetinaNet作为最终的缺陷识别框架[19]。
3 销钉缺陷检测流程
在电力系统中,金具起着支持、固定和接续导线以及将导线和绝缘子连接成串的作用。然而,由于多数电力金具长期工作于户外,不仅要承受外部恶劣环境(如雷雨的侵蚀、风力的作用等)带来的不利影响,还要承受外部机械负荷张力和电力系统内部的电力负荷的作用,从而导致金具上的部分销钉出现缺失现象。销钉的长期缺失,会降低金具与电力部件连接的紧密程度,从而影响电网的稳定运行。图4列出了无人机巡检航拍图中缺失状态和正常状态下的销钉示例图。
无人机现场采集图像时,由于无法保证与采集对象相对静止,会造成部分图像模糊化。另外,外界的风力、光照、湿度等不可控因素会进一步加剧图像模糊程度。如果直接对这类模糊图像进行识别,往往无法保证较高的识别率。针对此问题,文中提出了一种基于GAN的无人机巡检航拍图的去模糊方法,以提高图像清晰度。另外,考虑到用于GAN训练的数据集除了需要清晰图像外,还需要与之相对应的模糊图像,于是,文中结合马尔可夫过程以及子像素插值[20]生成运动模糊核,根据无人机采集到的清晰图像生成GAN去模糊用的训练集,相应的流程图如图5所示,具体过程如下:
1)采用马尔可夫过程生成轨迹矢量,随后对轨迹矢量进行子像素插值以获取运动模糊核,对无人机采集得到的清晰图像和生成的运动模糊核做卷积运算,生成用于GAN训练的一组数据;
2)分批次加载模糊图像和清晰图像并随机排序,根据加载的图像对鉴别器进行优化,达到指定优化次数(5次)后停止鉴别器的优化,比较生成图像和清晰图像之间的差异(使用VGG-19提取的特征进行比较),转而优化生成器,重复执行上述过程直至GAN训练结束;
3)将难以检测的模糊图像输入到训练好的生成器,输出重构的图像,最后通过训练好的RetinaNet缺陷检测模型完成缺陷的识别。
图5 无人机航拍模糊图像的缺陷检测流程图
Fig.5 Defect detection flowchart for aerial photography of drones
4 实验结果与分析
实验是在基于Keras的深度学习平台上开展,为了提高卷积神经网络的训练速率,在服务器上安装了带有张量核的RTX 2080显卡,并且配置CUDA来加速计算。
针对金具上小部件销钉的常见缺陷,实验用的数据根据销钉所处的状态分为正常类和缺失类。为了对输出模型进行有效测试,将数据样本按照4∶1的比例随机划分为训练集和测试集,其中训练集包括501幅正常类图像、507幅缺失类图像,测试集则由101幅正常类图像和100幅缺失类图像组成。
4.1 销钉缺陷检测模型的训练与测试
为了避免RetinaNet算法的网络权重初始化带来的不确定性,实验中调用了在ImageNet数据集进行预训练的ResNet-50作为FPN网络的主要框架。由于损失函数值能够直观地反映出模型在训练过程中的收敛状况,同时考虑到电力系统缺陷检测领域中缺陷类的正确识别的意义远超过正常类,于是文中通过观测模型收敛速率、缺失类别的平均准确率来优化销钉缺陷检测模型,最终获得如下的超参数优化组合:学习率为10-5,优化器为Adam,调节因子γ=2,平衡因子αt=0.25。
在上述参数设置下训练网络结束后,使用测试集对输出模型进行测试,得到正常类别和缺陷类别的平均准确率分别为84.2%和86.8%,均超过了80%,整体的平均准确率达到了85.5%;在检测速度方面,对于每一幅分辨率为600×600的图像,平均检测时间为0.072 s。由此可见,无论是检测的准确度还是检测的实时性,深度学习算法RetinaNet在小部件销钉识别上可以表现出较好的性能。
为了进一步提高识别率,笔者反复使用训练好的模型对测试集进行测试,深入分析了测试集的标注结果,发现测试结果出现了“两极分化现象”:对于清晰图像,模型拥有较强的泛化能力,即能够在清晰图像中获得很好的标注结果,不仅准确地找到了销钉所处的位置,还能够给出正确的类别,如图6所示;而对于清晰度不是很高的图像,测试结果不尽人意。图7给出了部分识别结果不够理想的模糊图像,从图中可以看出该类图像的清晰度远低于图6中的图像,虽然模型可以找到销钉的位置,部分图像也给出了正确的标签,但图像的模糊性增加了前景物和背景的区分难度,使得模型不仅容易将杆塔上的螺丝(这类螺丝是不需要销钉进行固定的)错误识别为销钉缺失类别,还会造成错误的分类。另外,模型在识别这类模糊图像时,会出现多个锚框重叠、相互遮挡的现象。
Fig.7 Some blurred images with unsatisfactory identified results
4.2 GAN的训练与测试
为使训练好的GAN能够改善无人机现场采集到的模糊图像的质量,在训练GAN时,文中使用模糊图像替代噪声作为网络的输入,而输出为与输入的模糊图像完全对应的清晰图像。
这种图像对在现实情况下是很难通过无人机采集得到的,因为无人机操作人员无法在同一时刻获得两张清晰度不同但图像内容完全一致的数据。针对此问题,文中采用马尔可夫随机过程生成运动轨迹,并对运动轨迹进行子像素插值,得到如图8所示的部分模糊核。由于马尔可夫运动轨迹生成过程是一个随机过程,因此这种方法可以产生各种非线性的模糊核。
Fig.8 Fuzzy kernel generated by combining Markov process and sub-pixel interpolation
对于同一幅清晰图像,选取不同的模糊核进行卷积运算,会生成不同类型的模糊图像。为了提高GAN训练的稳定性以及图像的生成效果,在众多的模糊核中随机选取一种与清晰图像做卷积运算,得到用于GAN训练的一组数据。
训练集构建完成后,分批次加载模糊图像和清晰图像并随机排序,按照前面提及的训练方式依次训练GAN中的生成器和鉴别器,待达到指定训练次数后,将无人机现场采集到的模糊图像输入到生成器中进行重构,部分结果如图9所示。从图中可以看出,无论是背景还是待检测对象,模糊图像都会给人造成一种虚化的感觉,这种虚化不仅会增加背景与前景物之间的区分难度,还会掩盖小型部件(如螺丝、螺栓和销钉)的一些局部纹理、边缘等特征。使用文中训练好的生成器对模糊图像进行处理后,发现处理后的图像的局部特征信息得到了明显的放大,如螺丝和销钉的纹理特征与处理前相比更加的清晰化。另外,经过生成器重构后的数据,会给人一种舒适的感官感受,明显增强了背景和前景物之间的区分度。
图9 图像重构结果对比Fig.9 Comparison of reconstructed results of images
4.3 基于GAN的销钉缺陷检测
为了进一步验证文中提出方法的有效性,采用训练好的生成器对原测试集中的模糊数据进行重构,将重构后的数据与原测试集中清晰图像组合作为新的测试集,然后使用4.1节中训练好的模型进行检测,得到的查准率-查全率曲线[21- 22](PRC)如图10所示。从图中可以看出,无论是正常类别还是缺失类别,使用GAN的文中方法的查全率均有所提高,其中,缺失类别提高了将近6个百分点,即从原先的91%增加到97.3%,正常类别则增加了4个百分点。图10(a)中,结合GAN后绘制出的曲线与横、纵坐标围成的区域面积为0.876,即缺失类别的平均准确率为87.6%,这与原先的86.8%相比,平均准确率有小幅度的增加。同理,根据图10(b)中的PRC计算而得的平均准确率发现,文中方法对正常类别的平均准确率增加了大约8个百分点,即由原先的84.2%增加到92.5%。然而,由于在数据层面有GAN的存在,检测速率有所下降,即对于每一幅分辨率为600×600的图像,所用的平均检测时间从原来的0.072 s增加至0.307 s。
经生成器处理后的模糊图像的识别结果如图11所示,从图中可以看出,原先检测难度较大的模糊图像经过GAN处理后,RetinaNet模型都能够给出较好的检测结果,表明文中方法可以在某种程度上提高模糊图像的清晰度,增强图像中待检测物的局部纹理、边缘等特征描述,有利于RetinaNet模型提取更加丰富的特征。
图10 两种方法的PRC比较Fig.10 Comparison of PRC between two methods
图11 经生成器处理后的模糊图像的识别结果
Fig.11 Recognition results of blurred images processed by generator
5 结论
针对销钉常见缺陷,文中借助深度学习算法RetinaNet实现销钉缺陷的自动识别。考虑到无人机现场采集到的部分图像存在清晰度偏低的问题,而深度学习算法对此类模糊数据往往无法表现出较好的性能,文中借助GAN来提高图像的清晰度,从而提高此类数据的识别精度。最后,针对GAN训练的图像数据对在现实情况下很难获得的问题,文中借助马尔可夫过程生成的轨迹矢量和子像素插值来实现模糊-清晰图像对的构建,得出如下结论:
(1)在小部件销钉常见缺陷的识别问题上,直接采用深度学习算法RetinaNet进行检测,容易出现“两极分化现象”,即对于大多数的清晰图像,不仅可以准确地找到销钉所处的位置,还能够给出正确的类别,而对于部分模糊数据,会出现分类错误、多个锚框重叠、相互遮挡的现象;
(2)生成对抗网络在某种程度上提高模糊图像清晰度的同时,还可以增强图像中待检测物的局部纹理、边缘等特征信息,有利于RetinaNet模型提取更加丰富的特征,从而进一步提高模糊图像的识别率;
(3)对马尔可夫随机过程生成的运动轨迹进行子像素插值,可以产生各种非线性的模糊核,不同种类的模糊核可以模拟出各种模糊程度的图像。