基于压力容器裂纹图像检测及识别算法研究
2022-07-28张天峰冉秉东
张天峰,冉秉东,王 楷
(1.河南省锅炉压力容器安全检测研究院,河南 鹤壁 450016;2.重庆大学 自动化学院,重庆 400044)
压力容器是一种承压类特种设备,它承载着巨大压力且相当广泛,一旦发生爆炸或泄漏往往会引起火灾、中毒等灾难性事故,给人民生命财产和环境造成严重损害[1]。但是它又是现代化工业必不可少的生产设备,许多关键性的工艺流程更需要一些特殊的压力容器来保证运行,压力容器承受各种不同压力,包括恒定的压力、变化的压力或交替变化的压力,有些还有附加的温度或机械应力,因此容易由于压力问题导致容器产生裂纹。压力容器裂纹的检测及识别直接影响压力容器的安全运行,传统人工检测不仅影响工厂的加工生产,而且检测效率低下、准确率不高,因此实现压力容器裂纹的自动化检测及识别成为现代化工业领域的一个重要任务。
压力容器裂纹的检测及识别方法主要有:1)基于传统图像处理检测及识别;2)基于深度学习的检测及识别;3)基于超声波的检测及识别。在传统图像检测识别方面,基于真实裂纹像素始终比周围环境暗的假设,阈值分割法简单高效及计算速度快的优点,Oliver等人对裂纹检测分为2个阶段,并使用2个不同级别的阈值来检测裂纹[2]。R.Kapela等人利用梯度直方图的方法对裂纹进行分割,然后利用SVM对其进行分类[3]。D.Ai等人提出基于SVM算法和概率生成模型融合的算法来检测裂纹[4]。在深度学习检测识别方面,H.Maeda等人利用SSD来检测裂纹[5]。Li等人使用了一种叫做OLCMNet轻量级卷积神经网络,用于在有限的计算预算下检测驾驶员的注意力分散[6]。Yang等人在HED网络的基础上引入了特征金字塔模块和自上而下的体系架构来检测裂纹[7]。J.Cheng等人采用Unet网络来检测裂纹任务[8]。在超声波检测识别方面,马桂振等人利用超声检测方法来研究检测锅炉裂纹信息[9]。JH.Jang等人采用高重复率脉冲激光器和高速激光多普勒测振仪来产生非线性交互超声波[10]。R.Wang等人提出了基于裂纹波相互作用的非线性超声技术来研究疲劳裂纹,以此来检测金属材料在长期使用下出现的疲劳裂纹[11]。
以上方法在裂纹检测识别中取得了不错效果,但还存在很多问题:超声波方法需要操作者具备相应的先验经验和知识,否则难于实现缺陷的检测,该方法要求较高、较难推广;传统图像方法易受到噪声干扰,稳定性差、自适应能力差;深度学习方法利用神经网络自己学习数据的特征,可以提取压力容器裂纹图像更深层次特征,更加准确定位和分类压力容器裂纹。虽然深度学习算法要求相对较高,但以其识别精确度高、识别效率高和应用范围广等优势,受到了许多研究学者的喜爱。因此笔者选择压力容器裂纹图像为研究对象,采用深度学习方法实现压力容器裂纹的自动检测及识别。
图像的检测及识别常用深度学习模型有Faster R-CNN和YOLO模型。Faster R-CNN识别准确率高但存在模型复杂、检测速度慢等问题,YOLO把检测问题转换为回归问题,运行加快但存在精度欠佳。在研究中将YOLO v3主干网Darknet-53替换成为New Efficient Net-B0以此减少模型的参数量和存储空间进而降低算法模型的复杂程度,并且增加一个104x104的特征图以此提升检测识别准确率。
1 基于深度学习压力容器裂纹检测及识别方法
1.1 卷积神经网络
卷积神经网络是一种深层人工神经网络。相较于人工神经网络,它具有局部连接、共享权重2种特性。卷积神经网络组成主要包括卷积层、池化层、激活层、全连接层。最重要的卷积层也叫特征提取层,卷积层通过不同的卷积核卷积前一层,每个卷积核对应一个提取特征,与前一层的感受连接。卷积核共享网络权重,每个卷积核提取有限的信息,因此通常使用多个卷积核来获取更多特征[12]。
1.2 卷积神经网络模型
1)卷积神经网络已经形成了很多成熟的网络模型,经典的如Alex Net、VGGNet、Google Net、Res Net和DenseNet等。在目标检测领域,杨祖莨等人直接使用卷积神经网络实现隧道内停车检测[13];何育欣等人使用VGGNet进行熊猫面部检测[14]。基于经典的卷积神经网络基础上,出现了更加优秀的检测算法模型。Ren S等人设计出基于候选区域的深度学习目标检测算法Faster-R-CNN[15]。Redmon J等人在2016年提出基于回归的目标检测算法YOLO v1(you only look once),实现了目标识别与定位的统一[16]。之后经过Redmon等人继续研究,先后提出改进版本YOLO v2[17]和YOLO v3[18],准确率得到了进一步提高。
2)Faster-RCNN:是由微软Shaoqing.Ren等提出。他们设计了一种区域建议网络RPN来生成建议区域,它和检测网络共享全图的卷积特征,使得区域建议检测几乎不花时间。
3)YOLO v1:其总体思想是输入图像被划分成SxS的网格,如果一个目标的中心点落在某个网格中,那么这个网格就负责这个目标的检测。
4)YOLO v2:针对YOLO v1的不足,主要有以下几点改进:①缩减网络;②利用区域生成网络(RPN网络)来得到候选框;③使用K-means聚类算法得到更加符合数据集的锚框;④删除了全链接层和最后一个pooling层,使得最后的卷积层可以有更高的分辨率;⑤设计出全新的骨干网络Darknet-19。
5)YOLO v3:使用新的Darknet-53网络作为基础网络,Darknet-53引入了ResNet[19]网络的残差结构以减少深层网络的训练。
2 基于NewEfficientNet-B0-YOLO v3算法压力容器裂纹检测模型
算法的具体改进分为2个部分。1)更换YOLO v3原有主干网络Darknet-53替换成为NewEfficient Net-B0以减少模型的参数量和存储空间;2)改进多尺度预测,增加了一个104x104特征图,方便对细小裂纹检测。改进后YOLO v3的检测网络结构图如图1所示。
图1 改进YOLO v3检测网络结构图Fig.1 Improved YOLO v3 detection network structure
2.1 基于NewEfficientNet-B0的轻量化方法
算法模型要部署在小型移动设备或嵌入式设备上,会受到内存空间、处理器计算能力等多方面条件的制约,因此精简模型和降低模型的参数量以减少其存储空间和计算消耗成为一个关键技术问题。对于缩小网络模型尺寸目前有2种思路:1)改变当前已有的网络结构,直接设计一种新的轻量级基础网络结构;2)以目前正在使用的骨干网络基础上,利用模型剪枝等各种削减参数的方法,压缩模型大小得到衍生的轻量级基础网络结构。选择1)提出了一种基于New Efficient Net的轻量化方法来对算法模型进行精简、压缩,以便减少所需的存储空间和计算资源。
2.1.1 改进算法检测模型的轻量化方法
Mingxing Tan等人提出了Efficient Net网络结构,通过使用神经网络搜索设计得到的新型卷积神经网络模型[20]。笔者使用Efficient Net系列模型中最小的Efficient Net-B0来替换传统YOLO V3中的Darknet-53作为骨干网络。但是在使用Efficient Net-B0替换Darknet-53之前,需要对原Efficient Net-B0做出一点修改,修改后的Efficient Net-B0网络结构如表1所示。
表1 修改后的EfficientNet-B0Table 1 Modified EfficientNet-B0
2.1.2 移动翻转瓶颈卷积
MBConv其实就是MobileNet V3网络中的InvertedResidualBlock。不同的是一个是采用的激活函数不一样,Efficient Net的MBConv中使用的都是Swish激活函数,另一个是在每MBConv中都加入了SE(queeze-and-Excitation)。MBConv结构如图2所示。
图2 MBConv结构Fig.2 MBConv structure
2.1.3 SE通道注意力机制
Efficient Net模型中的核心组成结构为移动翻转瓶颈卷积(MBConv,mobile inverted bottleneckconvolution)模块,该模块引入SENet(Squeeze-and-Excitation Networks)[21]中SE通道注意力机制,增强通道关联信息的提取能力。SENet模块如图3所示,它在旁路中调整每个通道的权重,根据不同的数据集和任务环境提升或减少不同通道的重要性。SENet的核心思想在于通过网络根据loss去学习特征权重,使得有效的feature map权重大,无效或效果小的feature map权重小的方式训练模型达到更好的结果。SEblock嵌在原有的一些分类网络中不可避免地增加了一些参数和计算量,但是在效果面前还是可以接受的。SEblock并不是一个完整的网络结构,而是一个子结构,可以嵌到其他分类或检测模型中。在这种结构中,Squeeze和Excitation是2个非常关键的操作。
图3 SE模块的示意图Fig.3 Schematic diagram of SE module
2.2 改进多尺度预测方法
YOLO v3系列算法借鉴了FPN结构,融合了3个不同尺寸的特征图,为了提高了对于微小裂纹的检测精度。因此把输出的张量扩增到4个尺度,改进后的特征图结构如图4所示,改进部分为红色部分。52×52尺寸的特征图经过上采样后和104×104尺度进行拼接,融合之后作为第4个尺度输出。改进后的YOLO v3将网络中4个检测层的特征图分别划分为104×104,52×52,26×26,13×13每个检测层提供了3种不同尺寸的anchor。
图4 改进特征图结构Fig.4 Improved feature map structure
2.3 边界框预测与分类
在算法检测识别过程中,首先将输入的压力容器裂纹图像处理成为416像素x416像素,然后再将压力容器裂纹图像划分成为4个SxS的网格。最后每个单元网格负责检测落入其中心的裂纹,同时输出多个预测框及其置信度。每个边界框包含参数(tx,ty,tw,th,tc),其中(tx,ty)为候选框的中心坐标,(tw,th)为候选框的中心点。C为置信度。在位置预测上,假设Anchor Box设置在每个网格单元的左上角,坐标位置为(cx,cy),宽度和高度为(pw,ph),最终生成的预测坐标为(bx,by,bw,bh),其公式为其中:(bx,by)为预测边界框的中心坐标;(bw,bh)为预测框的高度和宽度。在输出多个预测框之后,将抛弃掉置信度低的预测框并通过非极大抑制获得裂纹位置。
笔者采用Logistics分类器。假设训练样本集合X={x1,x2,x3,…},其中样本xi由一系列的属性表示即x1=(a1,a2,a3,…),样本中的类别为0或1。引入参数θ=(θ1,θ2,3,…),那么logistics函数公式为
若hθ(x)>0.5则分类为1,即属于压力容器裂纹图像。如hθ(x)<0.5则分类为0,即不属于压力容器裂纹图像。
3 实验分析
3.1 压力容器裂纹数据集构建
数据来源于河南省锅炉压力容器安全检测研究院鹤壁分院,经过数据扩充之后,部分数据集如图5所示。
图5 压力容器裂纹图像数据集Fig.5 Pressure Vessel Crack Image Dataset
3.2 实验环境及配置
针对基于压力容器裂纹图像检测及识别实验,具体实验环境配置如下所示:
1)操作系统:Ubuntu16.04操作系统;
2)编译器:Pycharm2020;
3)处理器:IntelⒸXeon(R)CPU E5-2650 v4@2.20 GHz×24;
4)内存:1T;
5)显卡为:RTX2080Ti;
6)显存容量:12 GB;
7)编译语言:Python 3.7.5。
3.3 评价指标
3.3.1 m AP
平均精度AP是以召回率为横坐标,准确率为纵坐标,得到的曲线(又称P-R曲线),AP值为P-R曲线下方的面积值。AP代表每个类别的测试模型的性能,而m AP代表所有类别的测试模型的性能,这是所有AP的平均值。m AP公式为
3.3.2 检测速度
算法模型对一幅压力容器裂纹图像检测识别的所花费多少时间。
3.3.3 参数数量
算法模型的参数数量。
3.4 实验结果
3.4.1 算法模型主要实验参数表
改进YOLO v3模型主要设置参数细节如表2所示。
表2 算法模型主要实验参数表Table 2 The main experimental parameters of the algorithm model
3.4.2 压力容器裂纹图像检测及识别效果
部分压力容器裂纹的检测及识别效果如图6所示。
图6 检测识别效果图Fig.6 Detection and recognition effect diagram
3.4.3 不同算法模型loss
对于每个网络模型在300个批次训练过程当中,保存其所有的loss值,在1 820训练集当中以7∶3作为训练和验证,每1个batch size存一次loss则获得300*40个loss值,再对loss值进行可视化,不同算法模型的loss曲线对比如下图7所示。
图7 loss图Fig.7 loss diagram
3.4.4 算法模型测试结果与分析
在本次实验中使用780张压力容器裂纹图像数据进行测试实验,Faster-RCNN、YOLO v3、改进YOLO v3模型测试实验结果如表3所示。
表3 测试结果Table 3 Model test results
由实验测试结果知,改进YOLO v3的m AP在原基础上由0.74提升到0.81,效果提高9%;检测速度由0.26提升到0.11,效果提高42.3%;模型参数数量由61.5 M减少到16.8 M,减少72.6%;FLOPs由154.6GFLOPs减少到35.6GFLOPs,减少76.9%。
4 结束语
1)从理论上分析了以卷积神经网络为基础的Faster-RCNN和YOLO检测识别算法,分析了其优缺点后,通过分析训练时loss变化曲线和模型测试结果结果,选择了改进YOLO v3网络模型。该算法模型能够提取压力容器裂纹图像更加深层次的特征,并且还能能够防止网络层次增加导致梯度消失问题。
2)为精简模型和降低模型的参数量以减少其存储空间和计算消耗,提出基于New Efficient Net-B0的轻量化方法。为提高对微小压力容器裂纹的识别精度,提出改进多尺度预测方法,增加了一个104×104的特征尺度方便对微小压力容器裂纹的检测识别。通过最终的实验的测试结果的对比与分析,可以得到改进YOLO v3在检测识别的准确率和降低算法模型参数数量效果相比其他模型更好。