[0045] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0046] 本发明提供一种基于自训练深度神经网络的水利系统管螺纹缺陷检测方法。图1为本发明方法流程图。下面通过具体实施例来进行说明。
[0047] 实施例一:
[0048] 基于自训练深度神经网络的水利系统管螺纹缺陷检测方法包括:
[0049] 步骤一,对管道内螺纹原始灰度图像进行阈值化处理、边缘检测,得到管道轮廓图像。
[0050] 考虑到管道的特性与需要采集的管螺纹的特性,本发明采用环形光源背部打光的方式搭建拍摄环境。设置环形光源,将管道置于环形光源前。采用鱼眼镜头灰度相机获取管道内螺纹原始灰度图像G,如图2所示。
[0051] 根据阈值,对管道内螺纹原始灰度图像G进行二值化处理。阈值的获取方法有多种,比如最大类间方差法、固定阈值法。
[0052] 最大类间方差法的计算过程如下:
[0053] 假设图像的尺寸为M×N,图像中小于等于阈值T灰度值即背景像素的个数记为N0,灰度值大于阈值T即前景像素个数记为N1。则有:
[0054] w0=N0/M×N
[0055] w1=N1/M×N
[0056] 其中,w0为背景像素占比,w1为前景像素占比,N0+N1=M×N,w0+w1=1。
[0057] μ′=w0*μ0+w1*μ1
[0058] 其中,μ′为灰度累计值,μ0为背景平均灰度值,μ1为前景平均灰度值。
[0059] g=w0(μ0-μ′)2+w1(μ1-μ′)2
[0060] 其中,g为类间方差。
[0061] 根据上述公式可以得到类间方差最终简化公式:
[0062] g=w0w1(μ0-μ1)2
[0063] 遍历所有0到255灰度级的阈值分割条件,获得最大类间方差对应的灰度级即为最大类间方差法获得的阈值。根据所得阈值对管道内螺纹原始灰度图像进行图像分割处理。
[0064] 实施者也可以根据需求自行设置固定阈值,对管道内螺纹原始灰度图像进行阈值化处理。在自行设置阈值时,应注意尽可能将管道接近于光源的圆环分割出来。
[0065] 对阈值化结果进行连通分析、筛选。逐行扫描阈值化后的图像,将具有相同值的像素组成团,从而检测出阈值化结果的连通域。进一步地,对检测到的连通域进行筛选,获得管道圆环图像,如图3所示。进行连通域筛选时,可以根据连通域面积等因素制定筛选规则。对管道圆环图像进行边缘检测,获得管道轮廓图像,如图4所示。具体地,可以采用Canny边缘检测方法,该方法是本领域常用的边缘检测方法,具有较好的检测效果,方法是周知的,在此不再赘述。
[0066] 步骤二,基于最小二乘法拟合圆方法对管道轮廓图像进行处理,得到管道圆心的位置。
[0067] 采用最小二乘法对管道轮廓图像进行圆拟合。
[0068] 假设管道轮廓圆方程为:
[0069] R2=(x-A)2+(y-B)2
[0070] 其中,R为管道半径,(A,B)为管道圆心坐标。
[0071] 展开后可以表示为:
[0072] R2=x2-2Ax+A2+y2-2By+B2
[0073] 令a=-2A,b=-2B,c=A2+B2-R2
[0074] 将步骤12的a,b,c代入步骤11公式:
[0075] x2+y2+ax+by+c=0
[0076] 管道轮廓上的点(xi,yi)到管道圆心(A,B)的距离为di:
[0077] di2=(xi-A)2+(yi-B)2
[0078] 则点(xi,yi)到圆心的距离与半径之间的误差可以表示为:
[0079] δi=di2-R2
[0080] 令Q(a,b,c)=∑δi2
[0081] 对Q(a,b,c)进行求解,找到使Q(a,b,c)最小的a,b,c值。
[0082] 采用偏导的方法得到极值,具体求解方法是众所周知的,本发明不做保护。
[0083] 采用最小二乘法对管道轮廓图像进行拟合圆计算,获得管道圆心:(A,B)。
[0084] 步骤三,以管道圆心为原点,对管道内螺纹原始灰度图像进行极坐标变换,得到管道内螺纹极坐标图像,对管道内螺纹极坐标图像进行线性灰度变换。
[0085] 对管道内螺纹原始灰度图像G以直角坐标系图像的圆心(A,B)为坐标原点,进行极坐标变换,即:
[0086]
[0087]
[0088] 其中,(x,y)为管道内螺纹原始灰度图像G中的像素点的位置,(r,θ)为管道内螺纹原始灰度图像的像素点在对应极坐标系下的位置,得到管道内螺纹极坐标图像P,如图5所示。将管道内螺纹原始灰度图像的像素值赋予极坐标系下对应点位置。通过极坐标转换,可以降低缺陷检测的难度。
[0089] 对管道内螺纹极坐标图像P进行线性灰度变换,将像素值变换到0-170之间,降低图像亮度。即:
[0090]
[0091] 其中,P'为线性灰度变换结果。
[0092] 步骤四,设计两个不同大小的滤波窗口分别对线性灰度变换结果进行均值滤波,基于背景差分法,将两个均值滤波结果做差,得到管道内螺纹前景图像。
[0093] 设计两个不同大小的滤波窗口对图像P'进行均值滤波。实施者可以根据图像宽度设置滤波窗口尺寸。根据经验,可以采用图像横向尺寸除以30得到的数值作为小滤波窗口的横向尺寸,纵向尺寸设为3;采用图像横向尺寸除以3得到的数值作为大滤波窗口的横向尺寸,纵向尺寸设为3。本实施例采用21×3的窗口对线性灰度变换结果进行均值滤波得到图像X,采用231×3的窗口对线性灰度变换结果进行均值滤波得到图像Y。
[0094] 将两幅图像X、Y做差得到管道内螺纹前景图像D:
[0095] D=X-Y
[0096] 通过做差方法抑制了管道内螺纹图像的背景信息,增强了缺陷位置的灰度响应值。
[0097] 步骤五,对管道内螺纹前景图像进行阈值分割,对阈值分割结果进行连通域分析、筛选,得到管螺纹缺陷图像。
[0098] 基于最大类间方差法,获取管道内螺纹前景图像的阈值,根据阈值对图像进行阈值化处理。对阈值化处理结果进行连通域分析、筛选。
[0099] 实施者应知道,连通域分析,筛选的方法是众所周知的,且实现方法颇多,可以嵌入各种度量形式的筛选算法,本发明不在此进行保护。一种实施方式是逐行扫描阈值化后的图像,将具有相同值的像素组成团,从而检测出阈值化结果的连通域。进一步地,对检测到的连通域进行筛选,可以根据连通域面积等因素制定筛选规则。图6为管螺纹缺陷图像。
[0100] 步骤六,将管螺纹缺陷图像从极坐标系变换至直角坐标系,变换结果作为标注图像。
[0101] 将管螺纹缺陷图像从极坐标系变换至直角坐标系,变换结果如图7所示。将变换结果作为标注图像。
[0102] 实施者可以根据需求通过参数微调等操作对标注图像进行优化。至此,完成了本发明第一部分,即基于计算机视觉的检测。
[0103] 步骤七,采集多个管道的内螺纹原始灰度图像,根据步骤一至六生成对应的标注图像,将标注图像与管道内螺纹原始灰度图像作为样本数据集;对样本数据集进行样本增强处理:以管道圆心为坐标原点,对样本数据集中的图像做旋转操作,得到不同角度的样本图像;设置不同的gamma系数,对管道内螺纹原始灰度图像做伽马变换,得到不同亮度的样本图像;将增强后的样本数据集输入预设语义分割深度卷积神经网络,基于交叉熵损失函数对网络进行训练;当损失曲线出现震荡时停止训练,保存训练好的语义分割深度卷积神经网络。
[0104] 采集多个原始管螺纹图像,并生成相应的标注图像。将标注图像与原始管螺纹图像作为用于训练语义分割深度卷积神经网络的数据集。
[0105] 语义分割深度卷积神经网络是一种众所周知的技术,如UNet、ENet、ICNet、DeepLabV3等都是经典的网络结构。由于深度卷积神经网络的结构与最终功能之间相关性较小,有诸多变种和改进的方法,因此实施者可以根据需要确定使用何种网络结构。
[0106] 对于深度卷积神经网络的训练而言,样本增强、损失函数和自动化训练终止识别方法是本发明的创新所在,因此,围绕样本增强、损失函数和自动化训练终止识别进行阐述。
[0107] 由于管螺纹的样本数量有限,属于一种小样本训练,对于一般的小样本训练而言,样本增强和损失函数的设计是需要根据应用来进行更优化的设计的。
[0108] 进一步地,对样本数据集的增强进行详细说明。从两个方面对样本数据集进行增强。一方面,由于管螺纹是一种同心圆的特征,因此,对原图和标注数据同时进行以图像中的圆心为圆心,角度随机的旋转来增强数据。另一方面,由于管道内材质不一导致的亮度问题,需要模拟亮度不一的问题,使用随机的gamma亮度曲线映射来增强样本,gamma亮度曲线的参数主要是gamma值,本发明中,随机数范围设定在0.2至2.4是合理且有效的。
[0109] 众所周知,本发明所解决的问题是一种二分类问题,对于语义分割而言,可以使用交叉熵损失函数、Dice损失函数、均方误差损失函数等。对于小样本训练深度卷积神经网络而言,一般使用交叉熵损失函数和Adam优化器来保证训练的成功性,但对于小面积的缺陷检测而言,前期会存在损失下降速度过慢难以迅速收敛的问题。为了加速训练,同时一定程度上提高检测精度,对交叉熵函数做更大梯度的改进:
[0110]
[0111] 其中,S1为语义分割深度卷积神经网络通道1的输出结果,L1为标注图像,S1(i,j)是输出结果在位置(i,j)处的像素值,L1(i,j)是标注图像在位置(i,j)处的二值标签,缺陷处为1,其余位置为0。
[0112] 深度卷积神经网络的训练并非持续训练就可不断提高精度,尤其对于小样本训练而言,虽然使用了梯度更大的损失函数、样本增强等创新,但小的样本仍然更容易降低网络对缺陷特征的泛化能力。因此,在此确定基于信噪比的简单判定方法,来及时停止训练并节省训练时间。
[0113] 对于损失的下降曲线而言,众所周知,当网络训练到接近收敛的时候,损失函数会发生震荡,尤其是对于本发明中使用了强度较大的样本增强处理后,震荡会更加明显。因此,对于损失的曲线,可选取50个样本点组成原始样本序列S0,对其进行窗口为5的均值滤波得到平滑样本序列S1,并与原曲线求近似SNR。取平滑后的样本序列S1和原始样本序列S0,对其使用基于Top-K的度量方式得到Top-3的损失强度值s1,s0,即分别对序列S0、S1进行降序排序,取前30%数据的均值作为损失强度值s0、s1。当 时即可停止训练,实施者可以提高阈值来更晚结束训练。
[0114] 至此,完成了语义分割深度卷积神经网络的训练。
[0115] 步骤八,将待检测管道内螺纹原始灰度图像输入训练好的语义分割深度卷积神经网络,得到缺陷分割结果,实现管螺纹缺陷检测。
[0116] 实施者取网络输出所对应的通道,将待检测管道内螺纹原始灰度图像输入训练好的语义分割深度卷积神经网络,进行二值化分割即可得到缺陷分割结果,实现管螺纹缺陷检测。基于深度卷积神经网络的结果相较于单纯的计算机视觉方法更具有鲁棒性。
[0117] 语义分割深度卷积神经网络的二值化后处理是一种公知的方法,在此不再赘述。
[0118] 基于识别结果,不断加入数据集,还可以进一步训练深度卷积神经网络,这样可以达到类似半监督的效果。
[0119] 对于微调训练,不能很好地提高泛化能力,对此建议是,当数据集累计到足够多,例如先前的10倍左右,需要重新训练深度卷积神经网络,而不是继续训练。
[0120] 本发明使用计算机视觉技术,在环形光照下获得管螺纹内部图像,通过极坐标变换将图像变换到极坐标表示,采用自动化阈值、形态学处理方法获得缺陷的位置。同时,缺陷的数据会作为数据集供深度神经网络训练使用,最终形成准确度愈来愈高的自训练闭环,进一步通过样本增强、损失函数设计以及自动化训练终止识别方法不断提高网络的检测准确度和网络泛化能力,实现了智能化的管螺纹缺陷检测,检测效率更高,检测精度更高。
[0121] 以上实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。