李亦伦 成和祥 董 礼 苏宝定 刘方涛
(1.中国广核新能源控股有限公司;2.北京星闪世图科技有限公司)
当前多数风机叶片缺陷检测分两种情况。一是使用物体材料反射率差异巡查,即有缺陷和无缺陷物体反射频率[1]不同,通道检测可以发现缺陷;二是使用计算机视觉技术和深度学习[2]方法选出有缺陷的图片,然后根据拍摄的信息具体定位到缺陷所在的风机叶片上的准确位置,最后派遣人员检修或更换。
玻璃钢复合材料是一种高性能的纤维增强复合材料,具有质量轻、硬度高和耐腐蚀等优点,适用于恶劣气候等实际工况的要求,一直是大中型风机叶片的常用材料。
但是,由于风机内部结构复杂,制造过程复杂,受风蚀、雨蚀等环境因素的影响,如检测和处理不当,叶片可能断裂,造成严重后果。目前,风机叶片检测的方法主要有目视法、超声波检测、传统视觉算法、声发射检测、红外热成像和图像检测技术等[3-4]。超声波检测能对缺陷进行定位和定量描述,但易受主观因素影响,需要有经验的人员进行测试;声发射检测可以识别叶片微小缺陷,覆盖面广,但是需要对设备施加外力才能进行,无法反映检测缺陷目标的准确情况。红外热成像技术是一种无损检测方法,具有非接触、高效、操作简单等优点,但设备成本高[5]。
基于深度学习计算机视觉的目标检测算法主要分为两类:一类是基于区域先验框的二阶段算法,如Faster R-CNN[6];另一类是基于回归的单阶段算法,如SSD[7]、YOLO[8]等。将目标检测算法引入输电线路器件缺陷检测的工作有很多,侯春萍[9]等采用分类网络和Faster R-CNN级联的方法识别绝缘子自爆,白洁音[10]等通过改进Faster R-CNN算法检测绝缘子、防震锤和鸟巢等六种器件和缺陷目标。史晋涛[11]等通过扩充样本,实现电网异物监测。使用计算机视觉技术和深度学习方法,把采集的图片直接送给检测网络,输出图片中缺陷的位置和类别,这种方法存在以下几点不足:1、由于缺陷在整幅图像中相对较小(相对叶片来说缺陷并不小),现有网络对密集目标检测不好,因此这种方法存在较多漏检,存在错过一些重大隐患警告的可能;2、存在把非叶片区域的目标检测为缺陷的虚假检测,要消除这种虚假检测既增加了人力工作量,同时又使缺陷分级不精确。综上所述,现有技术较大地影响风机叶片巡检任务的精度和进度,检出效率低,误解率高,增加了巡检任务人力成本和安全风险。本文对数据做一些增强处理,并且在训练上做了一些改进,缓减上述不足所带来的问题。
Yolov4[12]是一个简单且高效的目标检测算法,该算法可通过普通的GPU(1080Ti或者2080Ti)来训练。由于使用原始固定的Yolov4框架算法来训练验证叶片的缺陷检测,其训练速度慢、模型训练5<loss<8,召回率和精度低[13]。为了改善以上问题,利用Yolov4提供的目标检测网络思想,本文提出一种改进Yolov4用于叶片缺陷检测的网络结构。主要改变backbone(主干网络)网络结构和neck(颈干网络)的池化方法,同时采用一些数据增强扩充数据。
目标检测Yolov4属于one-stage Detector如图1,其中输入图片经过backbone特征提取,再经过neck特征融合,最后Dense Prediction回归预测。
图1 改进整体网络结构Fig.1 Improve the overallnet work structure
本文改进backbone中的ResNet残差网络和CSPDark Net网络[14],对比二者在叶片检测的准确率和召回率,再插入改进的特征金字塔(Spatial Pyramid Pooling neck)网络,与Yolov4的Receptive Field Block(RFB)[15]做对比实验。
ResNet网络[16]在深度上一直加深如图2(b),随着超参数增加,网络训练开销加大,但是模型准确率不再增加,为了解决当下叶片模型识别准确率,本文改进增加网络宽度减少参数的同时增加模型准确率和收敛速度。ResNet采用32个group纵向相加,中间有128个filter,如图2(a)改进的ResNet拆分128个filter为横向4通道3×3独立卷积,然后再输入4通道的1×1卷积,最后再拼接为128维经过1×1卷积,相加合并和残差再相加,这样的结构比较简洁而且速度更快。
而拼接的网络比相加的网络更能很好的保留独立卷积的特征参数,再加上残差的短接融合高层特征来增加识别率。
整个backbone由如图2(a)的残差块组成,如式(1)中c是残差块的个数,τi(x)是一系列卷积操作,τi是由连续卷积(1×1,3×3,1×1)组成,一共有32组;加入残差短接后变为公式2。
图2 残差单元的改进和基本残差单元Fig.2 The improvement of the residual unit and the basic residualunit
由于SPP[17]对目标叶片在图像中不一定居中的情况下,采样效果不佳导致图像特征受影响,叶片特征单一在图片占比较大,为了更好的得到叶片特征,需要增大感受野,所有要改进SPP网络,受到语义分割空洞卷积的启发,如图3红色SPP改为三个3×3的采样率为rates={6,12,18}的空洞卷积,滤波器数量为256,包含BN层,相邻权重之间的间隔为rate-1,普通卷积rate为1,空洞卷积的实际大小为k+(k+1)(rate-1),其中k为原始卷积核大小,会在卷积核元素之间塞入空格。
图3 改进SPP结构图Fig.3 Structure diagram of improved SPP
对于输入输出图像高宽H和W见式(3),(4),Hout,Hin分别表示输出和输入特征图的高,Wout,Win分别表示输出和输入特征图的宽。
1.3.1 缺陷类型
由于大多数风力发电厂都建在沙漠和沿海腹地,叶片的工作条件差,缺陷种类繁多,本文将其缺陷分为四类。
1)砂眼
涂层有损伤,类似麻点,见图4在叶片连续的一片区域有比较密集离散的小孔。
图4 砂眼(黄色轮廓线)Fig.4 Sandhole(yellow outline)
2)剥落
涂层脱落、涂层起皮,发生部位比较浅,表面裸露也有腐蚀、锈蚀情况,见图5。
图5 剥落(红色轮廓线)Fig.5 Spalling(red outline)
3)细长裂纹
狭长划痕,目视发生在表面,损伤不深。裂纹是狭长,宽度较窄,长度较短,发生部位在叶片表面,包括横纵向裂纹,见图6。
图6 细长裂纹(蓝色轮廓线)Fig.6 Slender crack(blue outline)
4)开放式开裂
开裂比裂纹宽,目视发生部位较深,包括横、纵向开裂,形状不固定,见图7。
图7 开放式开裂(白色轮廓线)Fig.7 Open cracking(white outline)
1.3.2 离线叶片数据增强
数据增强为了使模型训练前人为增加一些先验知识。叶片缺陷在图片中占比较小,训练好的模型需要增强图片缺陷数据。如图8所示,其中一个红色区域所示缺陷在原始的1920×1080,图片尺寸为120×80,其所在区域在整幅图像面积比为,当切分原始的1920×1080图片为多个小区域后,上述所示缺陷在其中所示560×400图中尺寸和面积不变,但所在区域在整幅图像面积比为,则切分为小图后相对面积变大了约10倍,对小目标检测是很显著的。
图8 区域裁剪Fig.8 Region clipping
把切分完的这些子区域分别送入检测网络进行检测。将每一个子区域检测完毕后,需要把检测坐标还原到原始大图中去,然后再去掉具有相同类别但有交叠的区域。
1.3.3 在线叶片数据增强
不限于图像旋转、图像饱和度和色调等数据增强方法,本文还加入了用来解决目标遮挡及目标不足的问题,在图像中随机裁剪矩形区域,并用0来填充(CutOut[18]算法)随机裁剪多个矩形区域(hide-andseek,gridmask),如图9;mixup[19]叶片数据增强对样本及其标签的凸组合如图10,把不同4张缺陷样本随机组合在一张图片上,目的是加入一些噪声使检测鲁棒性增加。
图9 CutOut叶片数据增强方法Fig.9 Data enhancement method of cutoutblade
图10 mixup叶片数据增强方法Fig.10 Mixup blade data enhancement method
如图9随机将叶片图像中黑色部分区域用0像素值填充,其中控制填充概率和填充像素大小,通过均匀分布采样,并将矩形区域设置为与图像的其它区域无关的纯色值;遮挡一定的目标缺陷,使训练出的模型鲁棒性增强。
如图10,mixup是将4张叶片图片按比例进行插值来混合样本,将不同像素的叶片图像进行混合,从而来弥补数据样本集单一的情况。
mixup原理公式为:
其中Beat是贝塔分布,mix_batchx是混合后的batch样本公式6,mix_batchy是混合后的batch样本对应的标签公式7。由于权重λ在每个batch样本都会随机产生,在整个训练过程中会有N个batch,权重在N个batch中期望近似为0.5。
算法改进以后需搭建实例工程验证整体原理的可行性。图11是叶片缺陷的流程图,主要分3步骤:(1)数据处理,先数据筛选清洗出有叶片的样本数据,再数据标注,最后数据增强处理;2)环境工程搭建,开始训练数据,实时观察损失收敛情况;3)模型后处理,把识别框和标签映射到原始图片上,呈现可视化结果。
图11 叶片缺陷检测流程图Fig.11 Flow chart of blade defect detection
本文实验使用的环境配置为:CPU型号:Inte i7,GPU型号:NVIDIA GTX 2080Ti,共4块。操作系统是Ubuntu18.04,配置CUDA 10.0,Cudnn 7.6.5,基于darknet深度学习框架,python 3.6实现网络。
清洗好的叶片缺陷数据38500张使用labelImg[20]标注矩形框,为了扩充数据样本多样性,即混合使用随机旋转、翻转、剪裁放大、噪声、亮度变换、光照,颜色通道变换等操作,模拟了拍摄时光线、角度、距离、清晰度的不同,提高模型的鲁棒性,并且开启数据采用了2.3小节的CutOut算法和mixup算法数据增强,目的是加入一些先验知识提高准确率,最后数据分配训练集和测试集的准备如表1。
表1 数据集准备Tab.1 Data set preparation
本文采用随机梯度下降法(SGD)进行训练,动量设置为0.9,权重衰减系数设置为0.0005,batchsize设为4。最大迭代次数epoch为60000,初始学习率设置为0.005,学习率使用warmingup进行初始化。
本文以改进的ResNet网络结合SPP作为baseline,并尝试了对比ResNet-50、ResNeXt-50[21]、CSPDarkNet-50分别进行实验。为确保公平性,输入图片的分辨率和学习率均一致,不使用数据增强,采用了迁移学习的方法,使用了主干网络在相同数据集上面的预训练模型,最终的测试结果见表2。
表2 不同backbone网络模型准确率比较Tab.2 Comparison of accuracy of different backbone net work models
表格中P为准确率(Precision,P),AP是平均准确率(Average Precsion,AP),R为召回率[22](Recall,R),Params是模型参数。从表中可以看出ResNet的效果最差,AP为0.530。而CSPDark Net的AP最高0.687,但是召回率ResNeXt和改进的ResNet最高。考虑到backbone平均精度CSPDark Net和改进ResNet相差不大,且改进ResNet参数更小,所有取较轻量的改进ResNet做backbon。
本文进一步比较CSPDark Net与改进ResNet;同时不同的特征融合网络SPP、RFB与改进SPP做对比实验。表3的实验结果表明,通用Yolov4网络CSPDark Net-50+RFB的准确率最高,但平均准确率AP不理想,叶片缺陷种类多平均准确率越高越优。改进ResNet-50+RFB的召回率最高,但平均准确率AP低于0.6不予考虑。最终采用改进ResNet-50+改进SPP的融合方法,在叶片样本验证集中达最高平均准确率0.787。
表3 不同特征融合方式比较Tab.3 Comparison o f different feature fusionmethods
本文采用业界最优主干网络CSP Dark Net-50+RFB和改进的ResNet-50+改进SPP在叶片缺陷数据集上验证检测效果,如表4经过本文的数据集增强的网络平均准确率都有所提高,但是CSPDark Net-50+RFB网络GPU内存占用1721M较高,所有本实验要用ResNet-50+改进SPP做主干网络其AP为0.787,内存占用较少为1467M,其FPS每秒也达27帧满足要求。
表4 不同模型对数据增强后准确率比较Tab.4 Comparison of accuracy of different models after data enhancement
最后改进算法输入叶片缺陷数据集开始训练,图12是训练loss一直在2上下浮动,平均准确率AP也在0.887左右不再增加,所有在epoch为50000时停止训练,保存最优模型测试集测试。同时验证改进算法在叶片缺陷测试集中与Yolov3[23]和Yolov4比较如表5,Yolov3准确率最差,Yolov4准确率P是0.781最高,但召回率R和平均准确率AP本文改进的算法较高为R=0.823和AP=0.877。对应缺陷问题召回率比较看重,召回率高可能有误判,但人眼可以区分,避免有漏检的可能造成安全隐患。
图12 loss下降曲线Fig.12 Loss decline curve
表5 不同主干网络结果比较Tab.5 Comparison of results of differentbackbone networks
为了进一步检测改进网络的有效性,我们把每个缺陷的平均准确率AP和召回率Recll打印出来比较如表6,数据集测试了建模时的4种缺陷砂眼(sandhole)、剥落(spalling)、细长裂纹(slender crack)、开放式开裂(open cracking),其中细长裂纹召回率Recll的最低是因为单目标标签不止一个,剥落平均准确率最高,相比其他缺陷目标明确训练收敛快。表中也展现了416分辨率整体优于608分辨率的平均准确率和召回率。
表6 不同尺寸对比实验结果Tab.6 Experimenta l results of differentsizes
图13 检测结果Fig.13 Test results
经过实验提出了一种基于改进Yolov4的风机叶片缺陷自动检测方法,主要改进backbone的残差单元和调整了SPP的卷积核,可实现高效率、实时性、低成本的叶片缺陷检测,保障风机运行的安全性和可靠性。也通过研究相关数据增强技术,提出目标遮挡和混合数据增强技术和形态学方法进行缺陷目标数据增强。最终在测试集上Recll从0.798提升到0.823;AP值从0.817提升到0.877,改进效果显著。实验结果表明,所提出的算法具有较高的精度,能满足系统的基本要求。
此改进的叶片缺陷识别模型经过量化和转换,部署到瑞芯微和海思芯片测试,其精度损失在5%之内;模型量化前和量化后余弦相似度为99%。实际安装到无人机测试检测速度为363ms,达到了预期的效果,最后再进一步优化工程的稳定性和模型算法的鲁棒性。