一种基于ResNet64网络的紧固件产品鼓包缺陷的检测结构及其方法与流程

文档序号:23729487发布日期:2021-01-26 19:45阅读:119来源:国知局
一种基于ResNet64网络的紧固件产品鼓包缺陷的检测结构及其方法与流程
一种基于resnet64网络的紧固件产品鼓包缺陷的检测结构及其方法
技术领域
[0001]
本发明涉及深度学习领域和缺陷检测领域,特别是涉及一种基于resnet64网络的紧固件产品鼓包缺陷的检测结构及其方法。


背景技术:

[0002]
当前,科技发展越来越快,更多的工业生产商在追求质量的同时对生产效率提出了更高的要求,产品质量和生产效率把握着生产厂商的发展。工业产品检测则是保证产品质量,反映生产工艺问题的重要环节。
[0003]
由于科学技术的限制仍然主要采用人工检测的方法去检测产品表面的缺陷,这种方法由于人工的限制和技术的落后,不仅检测产品的速度慢、效率低下,而且在检测的过程中容易出错,从而导致了检测结果的不合格。
[0004]
而且由于设备成像的质量层次不齐,导致无法很规范的去检测一系列工业产品,会遇到图像不清晰,关键部分拍摄不到位等问题,这给智能工业缺陷检测系统带来了不小的挑战。
[0005]
随着计算机技术的发展;出现了基于计算机视觉技术的表面缺陷检测技术。这种技术的出现,大大提高了生产作业的效率,避免了人工因作业条件,主观判断等影响检测结果的准确性,计算机视觉能更好更精确地进行表面缺陷检测,快速的识别产品表面瑕疵缺陷。


技术实现要素:

[0006]
有鉴于此,本发明的目的在于提供一种基于resnet64网络的紧固件产品鼓包缺陷的检测结构及其方法,本发明主要解决的问题是:在现有技术中,对于紧固件产品,其鼓包缺陷检测识别准确率低的问题。
[0007]
为实现上述的目的,本发明提供一种基于resnet64网络的紧固件产品鼓包缺陷的检测结构,包括:输入骨干、训练模块、残差模块和输出层;
[0008]
所述输入骨干、输出层分别与训练模块连接,所述训练模块包括多个依次连接的卷积模块,所述卷积模块包括多个残差模块,由残差模块组成;
[0009]
所述输入骨干为resnet64网络,用于对图片进行预处理以及图像增强;
[0010]
所述卷积模块用于对数据集进行多次卷积、池化实现下采样,得到不同尺度下的多维度特征图;
[0011]
所述残差模块用于连接整合不同尺度下的图像特征;
[0012]
所述输出层用于提取特征之后,对产品进行预测并输出结果。
[0013]
进一步的,所述训练模块包括多个下采样单元,所述下采样单元包括依次连接的多个卷积模块和一个最大池化层;所述卷积模块包括依次连接的:卷积层、批归一化层、relu激活函数层、自适应平均池化层以及一个全连接层;
[0014]
所述卷积模块的第一层为卷积层,所述卷积层的卷积核为7x7,步长为2,输出尺寸为112x112特征图;
[0015]
所述卷积模块的第二层为批归一化层bn1,批归一化层bn1经过l2正则化;
[0016]
所述卷积模块的第三层为relu激活函数层;
[0017]
所述卷积模块的第四层为最大池化层maxpool,步长为2,padding为1,尺寸为3x3;
[0018]
所述卷积模块的第五层至第八层为残差block,尺寸分别为64x64,128x128,256x256,512x512;
[0019]
所述卷积模块的第九层为1x1的平均池化层avgpool;
[0020]
所述鼓包缺陷检测结构包括63个所述的卷积模块,最后一个卷积模块之后,连接一个512x2的全连接层fn。
[0021]
进一步的,所述残差模块的结构为:
[0022]
第一层为1x1的卷积层conv1,用于产品图片中特征的提取;
[0023]
第二层为批归一化层bn1;
[0024]
第三层为3x3的卷积层conv2,并夹带一个shortcut;
[0025]
第四层为批归一化层bn2;
[0026]
第五层为1x1的卷积层conv3;
[0027]
第六层为批归一化层bn3;
[0028]
以上为一个完整的残差模块,每个卷积模块中有4个残差模块,用于改变特征向量的维度。
[0029]
本发明还提供一种基于resnet64网络的紧固件产品鼓包缺陷的检测方法,包括如下步骤:
[0030]
步骤s1、采集产品图片,并且获取所述产品图片的类别信息;
[0031]
步骤s2、建立数据集,所述数据集包括:所述产品图片和所述产品图片的标签;
[0032]
步骤s3、对所述数据集进行预处理和图像增强的操作;
[0033]
步骤s4、对所述数据集按照7:2:1的比例进行划分得到训练集,验证集和测试集;
[0034]
步骤s5、选择resnet64网络作为神经网络结构的输入骨干,并且使用所述训练集对神经网络结构进行训练得到鼓包缺陷检测模型;
[0035]
步骤s6、使用所述测试集对所述鼓包缺陷检测模型进行测试,得到测试结果。
[0036]
进一步的,在所述步骤s2中,按照所述类别信息对所述产品图片进行分类打标,生成标签,所述标签包括:f和g,所述f标签表示为合格产品,所述g标签表示为鼓包缺陷产品。
[0037]
进一步的,所述s3具体包括:
[0038]
步骤s301、将数据集中的产品图片从原始的raw格式转为jpg格式,并且将产品图片归一至224x224;
[0039]
步骤s302、对产品图片进行数据增强,然后将产品图片全部转换为rgb格式之后再转换为灰度格式,并且将数据集中像素差异小于50的产品图片剔除,剔除之后,对数据集中的产品图片进行按序命名。
[0040]
进一步的,在步骤s302中,所述数据增强包括:图像形变、图像放缩,双边滤波去噪和对比度提升;
[0041]
所述图像形变和图像放缩通过opencv里的resize函数、rotate函数以及
transpose函数实现,
[0042]
所述双边滤波去噪通过opencv里的bilateralfilter函数实现;
[0043]
所述对比度提升通过伽马变换算法实现,具体包括:
[0044]
首先,将输入图片的像素值除以225,在归一化至[0,1]的区间;
[0045]
然后,计算其γ次方值;
[0046]
最后,当0<γ<1时,增大图片的像素值,当γ>1时,降低图片的对比度。
[0047]
进一步的,在所述步骤s5中,所述神经网络结构进行训练时采用的损失函数为交叉熵+sigmoid,表达式为:
[0048]
y
i
log(h
θ
)+(1-y
i
)log(1-h
θ
)
ꢀꢀꢀ
(1)
[0049]
公式(1)中,y
i
表示样本i的标签,正类为1,负类为0,h
θ
表示样本i预测为正的概率;其中:
[0050][0051]
公式(2)中,h
θ
(x)表示为标签预测为正的概率,y表示标签,a
i
表示为标签i预测概率,y
i
表示样本i的标签,h
θ
表示样本i预测为正的概率。
[0052]
进一步的,在所述步骤s5中,在所述神经网络结构进行训练时,使用动量和自适应学习率adam作为优化器,具体包括:
[0053]
步骤501、产品图片经过上述神经网络结构后输出一个得分值score;
[0054]
步骤502、将得分值score输入所述损失函数后计算误差loss;
[0055]
步骤503、然后进行adam优化,包括反向传播和正向传播,所述反向传播为对所述神经网络结构求导,所述正向传播为重复上述网络结构的操作;
[0056]
步骤504、循环往复直至规定的次数或误差小于设定值,训练完毕;
[0057]
步骤505、输出鼓包缺陷检测模型。
[0058]
进一步的,在所述步骤s6中,所述测试具体为:向所述鼓包缺陷检测模型中输入一张标注过但未参与训练的图片,让所述鼓包缺陷检测模型进行判断,若为合格品则输出f,否则输出g,测试完毕。
[0059]
本发明的有益效果是:
[0060]
本发明采用resnet64的残差神经网络作为特征提取的基础网络,tensorflow作为开发框架,并且在此基础之上,对网络结构进行新的设计,网络的深度对卷积网络的效果影响非常大,但是单纯地增加网络深度并不能简单地提高网络的效果,由于梯度发散,反而可能损害模型的效果,所以本发明提出的残差模块中都有一个shortcut连接层用于整合之前的特征,来解决深度网络中梯度发散,难以训练的问题。
附图说明
[0061]
图1为本发明实施例1中提供的基于resnet64网络的紧固件产品鼓包缺陷检测方法的流程框图。
[0062]
图2为本发明实施例2中提供的基于resnet64网络的紧固件产品鼓包缺陷检测结构的结构图。
[0063]
图3为本发明实施例2中提供的基于resnet64网络的紧固件产品鼓包缺陷检测结
构的卷积块结构图。
[0064]
图4本发明实施例2中提供的基于resnet64网络的紧固件产品鼓包缺陷检测机构的恒等残差块结构图。
[0065]
图5是本发明实施例1中步骤s3的流程框图。
[0066]
图6是本发明实施例1中步骤s5的流程框图。
[0067]
图7是本发明实施例1中步骤s6的流程框图。
[0068]
图8是本发明实施例1中伽马变换函数示意图。
[0069]
图9是本发明实施例1中精准度与召回率曲线示意图。
具体实施方式
[0070]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0071]
实施例1
[0072]
参见图1,本实施例提供一种基于resnet64网络的紧固件产品鼓包缺陷的检测方法,包括如下步骤:
[0073]
步骤s1、采集产品图片,并且获取产品图片的类别信息;
[0074]
具体的说,人工采集产品的图像,对采集到的样本数据打标签,合格品以f开头,序号跟在f的后面(比如f0001.jpg,f0002.jpg),同理鼓包缺陷品以g开头,如(g0001.jpg,g0002.jpg);
[0075]
步骤s2、建立数据集,数据集包括:产品图片和产品图片的标签;
[0076]
步骤s3、对数据集进行预处理和图片增强的操作,具体的说:
[0077]
参见图5,步骤s301、将数据集中的产品图片从原始的raw格式转为jpg格式,并且使用cv2.resize()函数,将其尺寸归一至224x224;
[0078]
步骤s302、对产品图片进行数据增强,用opencv库中的cv2.imread()函数读取图片,并判断图片格式,若图片属于bayer格式,或者其他的非rgb格式,那么将该图片转化成rgb格式后再进行操作;将转化完成的rgb图片,利用opencv库的cv2.color_bgr2gray函数转化成灰度图;然后再进行异常数据判断,通过计算每张图片的最大和最小像素值的差,找出差值小于50的图片,设为异常值并删除,剔除之后,对数据集中的产品图片进行按序命名,名称就是新的标签。
[0079]
上述数据增强的操作包括:图像形变、图像放缩,双边滤波去噪和对比度提升,具体如下:
[0080]
步骤s3021,图像形变和图像放缩的操作是通过opencv里的resize函数、rotate函数以及transpose函数让图像发生形变,用来给图像增加随机性,增强模型的泛化能力,提高鲁棒性;
[0081]
步骤s3022,双边滤波去噪的操作是利用opencv里的cv2.bilateralfilter()函数,结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点;
[0082]
步骤s3023,参见图8,对比度提升的操作是利用opencv里的伽马变换函数实现提升图片对比度,将输入图片的像素值除以255,归一化到[0,1]区间,然后计算其γ次方值,用公式表示如下,其中i(r,c)为归一化后的像素值,当γ=1时原像素值不影响,当0<γ<1时,增大像素值,提高图片对比度;反之γ>1时能降低图片对比度,伽马变换函数的表达式如下:
[0083][0084]
r为灰度图像的输入值(原来的灰度值),取值范围为[0,1]。o为经过伽马变换后的灰度输出值。c为灰度缩放系数,通常取1。γ为伽马因子大小。控制了整个变换的缩放程度。
[0085]
步骤s3024,经过上述三个步骤处理的图片仍然存在或多或少的噪声,所以本步骤利用opencv的cv2.gaussianblur()函数对图片进行集中去噪。对图片邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值,对图片进行平滑的同时,同时能够更多的保留图片的总体灰度分布特征,从而使得噪声得到很好的抑制,公式如下:
[0086][0087]
步骤s4、对数据集按照7:2:1的比例进行划分得到训练集,验证集和测试集;
[0088]
具体是,生成随机种子seed,随机将样本图像数据的70%作为训练数据,20%作为验证数据,10%作为测试数据。
[0089]
步骤s5、选择resnet64网络作为神经网络结构的输入骨干,并且使用训练集对神经网络结构进行训练得到鼓包缺陷检测模型;
[0090]
具体是:参见图6;
[0091]
步骤s501、编写config配置文件来初始化一些常量和超参数,包含root数据路径,list数据列表,class产品类别,batchsize单次训练样本数量,learning rate学习率,epoch批次数,early_stopping停止标识等;
[0092]
步骤s502、加载resnet64网络模型,初始化常量参数
[0093]
步骤s503、初始化resnet64网络模型的超参数,设置损失函数和优化器;
[0094]
步骤s504、判断程序是模型训练还是模型测试;
[0095]
步骤s505、加载resnet64网络模型的预训练权重;
[0096]
步骤s506、将图像尺寸resize至224x224,执行随机旋转和翻转操作;
[0097]
步骤s507、将图像数据转化成tensor,便于计算和加速处理;
[0098]
步骤s508、对tensor进行归一化操作;
[0099]
步骤s509、将tensor送入resnet64网络模型并加载配置参数常量;
[0100]
步骤s510、按照设置好的batchsize获取数据作为一轮样本训练量;
[0101]
步骤s511、预设置最佳精度为85%,当实际精度大于预设精度时,进行替换并保存网络权重参数至chenckpoint;
[0102]
步骤s512、开始训练,设置时间计时;
[0103]
步骤s513、使用gpu加速训练过程;
[0104]
步骤s514、将数据送入网络模型,然后经过卷积层,批归一化,池化,relu激活后,得到输出结果output;
[0105]
步骤s515、将output送入损失函数,求得误差loss;
[0106]
步骤s516、将loss进行反向传播(求导),更新误差;
[0107]
步骤s517、优化器记录导后得到的参数进行对应超参数调整;
[0108]
步骤s518、更新批次,更新时间;
[0109]
步骤s519、打印日志包括训练过程中的具体信息:训练批次,损失值,学习率,训练准确率和验证准确率;
[0110]
步骤s520、重复上述步骤s512至步骤s519,直至一个batchsize结束;
[0111]
步骤s521、更新网络模型的权重参数和优化器的权重参数;
[0112]
步骤s522、记录误差最小的模型的权重参数并保存至checkpoint;
[0113]
步骤s523、重复上述步骤s510至步骤s522,直至所有epoch循环结束;
[0114]
步骤s524、找出精度最高的模型权重,并保存至文件best_checkpoint。
[0115]
上述步骤中,卷积的含义为卷积核不停的在原图上进行滑动,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,公式如下:
[0116][0117]
其中x(p)是卷积速度,t为当前时刻,p是某一时刻(p<t),h(t-p)dp表示当前速度卷积的效果。y(t)表示连续一段时间卷积后,系统累积状态。
[0118]
在图像处理领域,可以理解成将图片提取特征后,映射到另一张更小或更大的图像上。
[0119]
神经网络在训练的同时,会进行反向传播和优化,优化器选择的是动量和自适应学习率的adam,下面为adam优化器更新优化步骤以及交叉熵的数学解释;
[0120]
在神经网络中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。
[0121][0122]
sigmoid作为最后一层输出的话,将最后一层的每个神经元看作一个分布,对应的target属于二项分布(target的值代表是这个类的概率),那么第i个神经元交叉熵为:
[0123]
y
i
log(h
θ
)+(1-y
i
)log(1-h
θ
)
[0124]
y
i
表示样本i的标签,正类为1,负类为0,h
θ
表示样本i预测为正的概率;
[0125]
其中:
[0126][0127]
h
θ
(x)表示为标签预测为正的概率,y表示标签,a
i
表示为标签i预测概率,y
i
表示样本i的标签,h
θ
表示样本i预测为正的概率。
[0128]
adam优化方程:
[0129]
为了将动量引入神经网络,将时间元素添加到过去时间步长的更新向量中,并将其添加到当前更新向量中。这样可以使球的动量增加一定程度。可以用数学表达式表示:
[0130][0131]
θ=θ-v
t
[0132]
其中θ是网络的参数,即权重,偏差或激活值,η是学习率,j是我们要优化的目标函数,γ是常数项,也称为动量。vt-1(注意t-1是下标)是过去的时间步长,而vt(注意t是下标)是当前的时间步长。
[0133]
为了使学习率随着时间的流逝而适应,加快梯度的更新,这里引入自适应学习率rmsprop(即均方根传播),表达式为:
[0134][0135][0136]
第一个方程是平方梯度的指数衰减平均值,建议将γ设置为0.9,而学习率η的默认值为0.001。
[0137]
步骤s6、使用测试集对鼓包缺陷检测模型进行测试,得到测试结果。
[0138]
具体包括:参见图7;
[0139]
步骤s601、加载gpu和网络模型,初始化常量参数;
[0140]
步骤s602、从checkpoint处加载best_checkpoint;
[0141]
步骤s603、读取测试图像路径;
[0142]
步骤s604、将图像尺寸resize至224x224,执行随机旋转和翻转操作;
[0143]
步骤s605、将图像数据转化成tensor,便于计算和加速处理;
[0144]
步骤s606、对tensor进行归一化操作;
[0145]
步骤s607、将tensor送入模型并加载配置参数常量;
[0146]
步骤s608、进入epoch循环,按照设置好的batchsize获取测试样本数据;
[0147]
步骤s609、开始测试,经过模型预测后,得出结果output2;
[0148]
步骤s610、将output2计算求得准确率;
[0149]
步骤s611、重复步骤s604至步骤s610,得出所有批次的样本精度,求平均值,得到最终的平均精度acc。
[0150]
最后,对模型进行性能评估与输出检测结果。
[0151]
模型性能评估指标常用的有f1,map,auc等,在本实施例中,使用的是最常用的map评估方法,这是基于pr曲线的评估方法,来求平均精度,pr曲线的纵坐标为精准度p,横坐标为召回率r,具体请参见图9。
[0152]
ap单类别平均精度为pr曲线下,与r轴构成形状的面积,即p对r的积分,而map即所有类别的平均精度的平均值(mean average precision)。
[0153]
当模型测试完之后,会由模型预测结果,将所有测试数据中的产品图像分类,最后用map来评估模型的准确率。
[0154]
本实施例中设计多个变量,表1对各个步骤中的变量进行说明。
[0155]
表1变量说明表
[0156][0157][0158]
实施例2,参见图2,图3和图4,本实施例提供一种基于resnet64网络的紧固件产品鼓包缺陷的检测结构,包括:输入骨干、训练模块、残差模块和输出层;
[0159]
输入骨干、输出层分别与训练模块连接,训练模块包括多个依次连接的卷积模块,卷积模块包括多个残差模块,由残差模块组成。
[0160]
输入骨干为resnet64网络,用于对图片进行预处理以及图像增强;
[0161]
卷积模块用于对数据集进行多次卷积、池化实现下采样,得到不同尺度下的多维度特征图;
[0162]
残差模块用于连接整合不同尺度下的图像特征;
[0163]
输出层用于提取特征之后,对产品进行预测并输出结果。
[0164]
具体的,上述训练模块包括多个下采样单元,下采样单元包括依次连接的多个卷积模块和一个最大池化层;卷积模块包括依次连接的:卷积层、批归一化层、relu激活函数层、自适应平均池化层以及一个全连接层;
[0165]
卷积模块的第一层为卷积层,卷积层的卷积核为7x7,步长为2,输出尺寸为112x112特征图;
[0166]
卷积模块的第二层为批归一化层bn1,批归一化层bn1经过l2正则化;
[0167]
卷积模块的第三层为relu激活函数层;
[0168]
卷积模块的第四层为最大池化层maxpool,步长为2,padding为1,尺寸为3x3;
[0169]
卷积模块的第五层至第八层为残差block,尺寸分别为64x64,128x128,256x256,512x512;
[0170]
卷积模块的第九层为1x1的平均池化层avgpool;
[0171]
鼓包缺陷检测结构包括63个的卷积模块,最后一个卷积模块之后,连接一个512x2的全连接层fn。
[0172]
具体的,上述残差模块的结构为:
[0173]
第一层为1x1的卷积层conv1,用于产品图片中特征的提取;
[0174]
第二层为批归一化层bn1;
[0175]
第三层为3x3的卷积层conv2,并夹带一个shortcut;
[0176]
第四层为批归一化层bn2;
[0177]
第五层为1x1的卷积层conv3;
[0178]
第六层为批归一化层bn3;
[0179]
以上为一个完整的残差模块,每个卷积模块中有4个残差模块,用于改变特征向量的维度。
[0180]
本发明未详述之处,均为本领域技术人员的公知技术。
[0181]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1