物体缺陷检测模型的训练方法、物体缺陷检测方法及装置与流程

文档序号:23904254发布日期:2021-02-09 14:28阅读:72来源:国知局
物体缺陷检测模型的训练方法、物体缺陷检测方法及装置与流程

[0001]
本申请涉及物体检测技术领域,具体涉及一种物体缺陷检测模型的训练方法、物体缺陷检测方法及装置。


背景技术:

[0002]
在工件等物体检测技术领域,采集超高分辨率的工件图像是提高工件检测结果的准确率的重要保证。超高分辨率图像通常是指像素超过5000万的图像,然而在利用超高分辨率图像进行缺陷检测模型的训练和测试时,会遇到如下问题:1)图像分辨率过大,导致现有的缺陷检测模型在训练时显存占用太高,在只有16g显存的gpu(graphics processing unit,图像处理器)上无法正常训练;2)工件缺陷的尺度变化通常很多,同一种检测模型很难同时兼顾工件上可能存在的大型缺陷和微小缺陷;3)模型的整体运行时间较长。
[0003]
针对上述问题,现有技术进行了改进,通过对超高分辨率图像进行压缩或者拆分,然后再输入神经网络模型进行训练,最后根据训练好的模型对工件进行缺陷检测。
[0004]
然而发明人发现,上述针对超高分辨率图像的缺陷检测模型的训练方法,仍然存在着无法同时保证模型的训练效率和检测精度的问题。


技术实现要素:

[0005]
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的物体缺陷检测模型的训练方法、物体缺陷检测方法及装置。
[0006]
依据本申请的第一方面,提供了一种物体缺陷检测模型的训练方法,包括:
[0007]
获取物体的待训练图像,并通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取,得到待训练图像的特征图,其中所述待训练图像包括有缺陷待训练图像和无缺陷待训练图像的图像集;
[0008]
通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值;
[0009]
通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值;
[0010]
根据所述分类损失值和所述缺陷检测损失值,利用梯度下降算法对所述物体缺陷检测模型的参数进行优化,得到训练后的物体缺陷检测模型,以基于所述训练后的物体缺陷检测模型进行物体缺陷检测。
[0011]
可选地,所述通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取包括:
[0012]
将所述待训练图像输入所述特征提取子网络,依次进行一次1x1卷积、一次3x3卷积、一次全局最大池化、一次3x3卷积和一次全局最大池化处理后,得到子特征图;
[0013]
对所述子特征图进行一次3x3卷积后,得到第一输出特征图;
[0014]
对所述第一输出特征图进行一次3x3卷积后,得到第二输出特征图;
[0015]
对所述第二输出特征图进行一次3x3卷积后,得到第三输出特征图;
[0016]
将所述第一输出特征图、所述第二输出特征图和所述第三输出特征图进行多次全连接后,得到第四输出特征图,将所述第四输出特征图作为所述待训练图像的特征图。
[0017]
可选地,所述通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值包括:
[0018]
将所述有缺陷待训练图像和所述无缺陷待训练图像的特征图输入所述分类子网络的池化层进行全局平均池化处理,输出全局平均池化特征图,以及进行全局最大池化处理,输出全局最大池化特征图;
[0019]
将所述全局平均池化特征图和所述全局最大池化特征图进行多次全连接后,输出全局池化特征图;
[0020]
对所述全局池化特征图进行softmax运算,得到所述待训练图像的输出向量,根据所述输出向量得到所述待训练图像的分类结果,其中所述输出向量表示所述待训练图像有缺陷的置信度;
[0021]
计算所述待训练图像的分类结果与所述待训练图像的图像标签之间的误差,得到所述待训练图像的分类损失值。
[0022]
可选地,所述通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值包括:
[0023]
将所述有缺陷图像的特征图输入所述缺陷检测子网络中的区域生成网络,进行候选框的提取;
[0024]
将提取出的候选框输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述候选框的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果;
[0025]
计算所述有缺陷图像的缺陷检测结果与所述有缺陷图像的缺陷类别标签和缺陷位置之间的误差,得到所述有缺陷图像的缺陷检测损失值。
[0026]
可选地,所述将所述有缺陷图像的特征图输入所述缺陷检测子网络中的区域生成网络,进行候选框的提取包括:
[0027]
对所述有缺陷图像的特征图上的各特征点,生成多个不同尺度的锚点框;
[0028]
利用所述区域生成网络中的第一全连接层,对各锚点框进行分类得到各锚点框的分类结果,以及利用所述区域生成网络中的第二全连接层,对各锚点框进行位置回归得到各锚点框的位置偏移量;
[0029]
根据各锚点框的分类结果和位置偏移量,输出所述有缺陷图像的候选框及位置坐标。
[0030]
可选地,所述将提取出的候选框输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述候选框的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果包括:
[0031]
将所述候选框映射至所述有缺陷图像的特征图中,得到感兴趣区域;
[0032]
将所述感兴趣区域输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述感兴趣区域的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果。
[0033]
依据本申请的第二方面,提供了一种物体缺陷检测方法,包括:
[0034]
获取待检测物体的目标图像,并通过物体缺陷检测模型的特征提取子网络对所述
目标图像进行特征提取,得到目标图像的特征图;
[0035]
通过物体缺陷检测模型的分类子网络对所述特征图进行分类,得到分类结果,所述分类结果包括所述目标图像为有缺陷图像或无缺陷图像;
[0036]
若所述目标图像为有缺陷图像,则通过物体缺陷检测模型的缺陷检测子网络对所述目标图像进行缺陷检测,得到所述待检测物体的目标图像的缺陷检测结果,并基于所述缺陷检测结果反馈所述待检测物体的缺陷信息;
[0037]
若所述目标图像为无缺陷图像,直接反馈所述缺陷检测结果为无缺陷;
[0038]
其中,所述物体缺陷检测模型基于如前任一项所述的物体缺陷检测方法训练得到。
[0039]
依据本申请的第三方面,提供了一种物体缺陷检测模型的训练装置,包括:
[0040]
第一特征提取单元,用于获取物体的待训练图像,并通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取,得到待训练图像的特征图,其中所述待训练图像包括有缺陷待训练图像和无缺陷待训练图像的图像集;
[0041]
第一分类单元,用于通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值;
[0042]
第一缺陷检测单元,用于通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值;
[0043]
优化单元,用于根据所述分类损失值和所述缺陷检测损失值,利用梯度下降算法对所述物体缺陷检测模型的参数进行优化,得到训练后的物体缺陷检测模型,并基于所述训练后的物体缺陷检测模型进行物体缺陷检测。
[0044]
依据本申请的第四方面,提供了一种物体缺陷检测装置,包括:
[0045]
第二特征提取单元,用于获取待检测物体的目标图像,并通过物体缺陷检测模型的特征提取子网络对所述目标图像进行特征提取,得到目标图像的特征图;
[0046]
第二分类单元,用于通过物体缺陷检测模型的分类子网络对所述特征图进行分类,得到分类结果,所述分类结果包括所述目标图像为有缺陷图像或无缺陷图像;
[0047]
第二缺陷检测单元,用于若所述目标图像为有缺陷图像,则通过物体缺陷检测模型的缺陷检测子网络对所述目标图像进行缺陷检测,得到所述待检测物体的目标图像的缺陷检测结果,并基于所述缺陷检测结果反馈所述待检测物体的缺陷信息;若所述目标图像为无缺陷图像,直接反馈所述缺陷检测结果为无缺陷;其中,所述物体缺陷检测模型基于上述物体缺陷检测模型的训练装置训练得到。
[0048]
依据本申请的第五方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的物体缺陷检测模型的训练方法。
[0049]
依据本申请的第六方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一所述的物体缺陷检测模型的训练方法。
[0050]
由上述可知,本申请的技术方案,通过获取物体的待训练图像,并通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取,得到待训练图像的特征图,其
中所述待训练图像包括有缺陷待训练图像和无缺陷待训练图像的图像集;通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值;通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值;根据所述分类损失值和所述缺陷检测损失值,利用梯度下降算法对所述物体缺陷检测模型的参数进行优化,得到训练后的物体缺陷检测模型,以基于所述训练后的物体缺陷检测模型进行物体缺陷检测。本申请的物体缺陷检测模型的训练方法解决了传统的骨干网络显存占用过高无法训练的问题,大大缩短了模型训练的整体耗时。针对特征提取子网络和分类子网络同时进行了有缺陷待训练图像和无缺陷待训练图像的训练,而对于缺陷检测子网络只进行有缺陷待训练图像的训练,从而减少了无缺陷待训练图像的干扰,提升了模型的准确率。
[0051]
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0052]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0053]
图1示出了现有技术中的一种物体缺陷检测流程示意图;
[0054]
图2示出了现有技术中的另一种物体缺陷检测流程示意图;
[0055]
图3示出了根据本申请一个实施例的物体缺陷检测模型的训练方法的流程示意图;
[0056]
图4示出了根据本申请一个实施例的物体缺陷检测模型的训练流程示意图;
[0057]
图5示出了根据本申请一个实施例的物体缺陷检测模型的整体结构示意图;
[0058]
图6示出了根据本申请一个实施例的锚点框的结构示意图;
[0059]
图7示出了根据本申请一个实施例的物体缺陷检测方法的流程示意图;
[0060]
图8示出了根据本申请一个实施例的物体缺陷检测流程示意图;
[0061]
图9示出了根据本申请一个实施例的物体缺陷检测模型的训练装置的结构示意图;
[0062]
图10示出了根据本申请一个实施例的物体缺陷检测装置的结构示意图;
[0063]
图11示出了根据本申请一个实施例的电子设备的结构示意图;
[0064]
图12示出了根据本申请一个实施例的计算机可读存储介质的结构示意图。
[0065]
图中:conv2d表示卷积层,maxpool2d表示最大池化层,adaptiveavgpool2d表示自适应平均池化层,adaptivemaxpool2d表示自适应最大池化层,linear表示全连接层,crossentropy loss表示交叉熵损失。
具体实施方式
[0066]
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请
的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
[0067]
如图1所示,提供了一种现有技术中的缺陷检测模型的训练方法,首先直接将图像的分辨率成倍缩小,例如将10000x10000分辨率的图像直接缩小到2000x2000分辨率的图像,然后通过faster rcnn(faster region-convolutional neural networks,更快速的区域卷积神经网络)等目标检测网络对缩小后的图像进行缺陷检测模型的训练及推理。
[0068]
该方法对于图像中的大型缺陷检测效果较好,且运行速度较快。但图像分辨率成倍的缩小,使得小缺陷的细节也会成倍的丢失,训练后的模型对小缺陷的辨别能力也成倍减弱。
[0069]
如图2所示,提供了另一种现有技术中的缺陷检测模型的训练方法,先将图像拆分成多个小块进行单独处理,例如将10000x10000分辨率的图像,拆分成500x500分辨率的400个小块,然后通过faster rcnn等目标检测网络对拆分后得到的多个小块进行缺陷检测模型的训练及推理。
[0070]
该方法虽然解决了图像过大无法训练的问题,同时也保留了图像对小缺陷的辨别能力,但仍存在如下问题:1)模型整体运行时间过长,图像的拆分、存储、结果的合并都将带来额外的运行时间;同时为了保证出现在小块边缘的缺陷也能得到良好的支持,拆分时还需要增加一定的重叠区域,这也带来了额外的计算量。2)由于缺陷部分在图像的占比通常很小,拆分后得到的图像小块很多都是没有缺陷的样本,如果将全部小块都送到模型进行训练会导致正负样本(正样本为包含缺陷的图像块,负样本为不包含缺陷的图像块)极度不平衡,训练出的模型漏检增加;而如果只将正样本进行训练,将导致模型无法准确区分负样本而过检增加。
[0071]
此外,上述现有技术中使用的通用目标检测模型faster rcnn一般包含骨干网络backbone、缺陷定位网路detector两部分,其中backbone一般为resnet18残差网络、resnet50残差网络和vgg16(visual geometry group 16,牛津大学视觉几何组研发的一种卷积神经网络)网络等,用于提取图像特征。然而标准的resnet和vgg网络主要是针对自然场景下的图像分类和检测任务设计的,自然场景下的图像千变万化,背景干扰太多,模型的总信息容量需求较大,所以这些模型往往十分庞大,对gpu性能要求极高。
[0072]
基于此,本申请实施例提供了一种物体缺陷检测模型及其训练方法,本申请实施例的物体缺陷检测模型包括:特征提取子网络、分类子网络、缺陷检测子网络,可以更好的应用于环境简单的缺陷检测场景,如在车间的工件缺陷检测场景。
[0073]
具体地,如图3所示,该物体缺陷检测模型通过如下的步骤s310至步骤s330训练得到:
[0074]
步骤s310,获取物体的待训练图像,并通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取,得到待训练图像的特征图,其中所述待训练图像包括有缺陷待训练图像和无缺陷待训练图像的图像集。
[0075]
在进行物体缺陷检测模型的训练之前,可以先获取物体的待训练图像,若物体缺陷检测模型应用于工件检测的场景,则可以采用高清摄像头等专业成像设备对工件进行全方位扫描或拍摄,进而得到工件的待训练图像,这里得到的待训练图像可以是指图像像素
超过5000万的超高分辨率图像,以提高后续缺陷检测的准确度,采集到的图像可以是彩色图像也可以是灰度图像。当然,具体采用何种方式获取物体的待训练图像,本领域技术人员可以根据实际情况灵活选择,在此不作具体限定。
[0076]
步骤s320,通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值。
[0077]
具体地,为了使分类子网络能够准确区分出有缺陷待训练图像和无缺陷待训练图像,这里可以将上述特征提取子网络提取出的有缺陷待训练图像和无缺陷待训练图像的特征图同时输入分类子网络进行训练,得到分类子网络输出的分类结果。由于这里的待训练图像均带有有缺陷/无缺陷的图像标签,通过将分类子网络输出的待训练图像的分类结果与事先标记好的图像标签进行比较,进而可以得到分类子网络的分类损失值。
[0078]
步骤s330,通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值。
[0079]
如前所述,现有技术中的物体缺陷检测模型的训练方法在将图像进行拆分后会全部送到模型中进行训练,然而由于拆分后得到的图像小块很多都是没有缺陷的样本,如果将全部小块都送到模型进行训练会导致正负样本极度不平衡,训练出的模型漏检增加。因此本申请实施例仅将有缺陷待训练图像输入缺陷检测子网络进行训练,进而可以避免大量无缺陷待训练图像对于训练过程的干扰,提高模型训练的准确率。同样地,这里的有缺陷待训练图像是指已经标记了缺陷位置和缺陷类别的图像,通过将缺陷检测子网络输出的有缺陷待训练图像的缺陷检测结果与已经标记好的缺陷位置和缺陷类别进行比较,进而可以得到缺陷检测子网络的缺陷检测损失值。
[0080]
步骤s340,根据所述分类损失值和所述缺陷检测损失值,利用梯度下降算法对所述物体缺陷检测模型的参数进行优化,得到训练后的物体缺陷检测模型,以基于所述训练后的物体缺陷检测模型进行物体缺陷检测。
[0081]
在得到分类损失值和缺陷检测损失值后,可以将分类损失值和缺陷检测损失值进行加和,作为物体缺陷检测模型训练的总损失,然后利用梯度下降算法对物体缺陷检测模型中相应的各部分子网络的参数进行优化,得到训练后的物体缺陷检测模型,进而可以基于该训练后的物体缺陷检测模型进行后续的物体缺陷检测。
[0082]
本申请的物体缺陷检测模型的训练方法解决了传统的骨干网络显存占用过高无法训练的问题,大大缩短了模型训练的整体耗时。针对特征提取子网络和分类子网络同时进行了有缺陷待训练图像和无缺陷待训练图像的训练,而对于缺陷检测子网络只进行有缺陷待训练图像的训练,从而减少了无缺陷待训练图像的干扰,提升了模型的准确率。
[0083]
如图4所示,提供了一种物体缺陷检测模型的训练流程示意图。首先获取用待训练图像,包括已标记好的有缺陷训练图像和无缺陷训练图像,将有缺陷训练图像和无缺陷训练图像全部送入特征提取子网络superresbackbone中进行特征提取,然后将提取出的特征图送入分类子网络classifier进行特征分类,得到待训练图像的分类结果和分类损失loss_cls,利用该分类损失可以对特征提取子网络和分类子网络的参数进行优化。
[0084]
对于缺陷检测子网络detector的训练,这里只需要将已标记好的有缺陷训练图像送入缺陷检测子网络进行训练即可,通过将特征提取子网络提取出的有缺陷训练图像对应的特征图输入缺陷检测子网络进行缺陷检测,得到缺陷检测结果及缺陷检测损失loss_
det。最后计算模型训练的总损失loss=loss_cls+α*loss_det,其中α取值范围可以为0~10,默认选择α=1,根据总损失loss,利用梯度下降算法对物体缺陷检测模型的各子网络的参数进行相应的优化,直至模型达到预期效果。
[0085]
上述分类损失和缺陷检测损失均可以采用交叉熵损失函数(crossentropy loss)来计算,具体公式如下:
[0086][0087]
其中,y
i
为待训练图像属于有缺陷图像或者无缺陷图像的概率。
[0088]
在本申请的一个实施例中,物体缺陷检测模型主要应用于工件检测等场景,由于工件表面缺陷检测通常是在生产车间等环境下进行的,图像的拍摄场景较为固定,而拍摄的工件的形态也是有限的,模型的总信息容量需求较小,不需要庞大的骨干网络,本申请实施例设计了一种结构更为简便的卷积神经网络结构superresbackbone来进行特征提取,该卷积神经网络结构superresbackbone包括:6个卷积层、2个池化层、至少2个全连接层。具体的通过物体缺陷检测模型的特征提取子网络(superresbackbone)对待检测图像进行特征提取包括:将所述待训练图像输入所述特征提取子网络,依次进行一次1x1卷积、一次3x3卷积、一次全局最大池化、一次3x3卷积和一次全局最大池化处理后,得到子特征图;对所述子特征图进行一次3x3卷积后,得到第一输出特征图;对所述第一输出特征图进行一次3x3卷积后,得到第二输出特征图;对所述第二输出特征图进行一次3x3卷积后,得到第三输出特征图;将所述第一输出特征图、所述第二输出特征图和所述第三输出特征图进行多次全连接后,得到第四输出特征图,将所述第四输出特征图作为所述待训练图像的特征图。
[0089]
本实施例的卷积神经网络结构superresbackbone(特征提取子网络)可以提高模型整体的运行速度,同时节省一定的信息存储空间,该特征提取子网络不需要事先对超高分辨率的图像进行压缩或者拆分处理,同时保留了模型对于图像全局信息和局部细节信息的学习能力。
[0090]
如图5所示,本申请实施例的特征提取子网络superresbackbone主要包括6个卷积层conv2d和2个最大池化层maxpool2d。如果事先采集的待训练图像是彩色图像,考虑到工件检测等场景下对于图像本身的颜色信息要求不高,可以先将整张的待检测图像进行一个1x1卷积处理,即将彩色图像变为带有通道增强的灰度图像,由此可以直接使得整个网络的带宽缩小3倍。传统的将彩色图像转换成灰度图像的算法是针对人眼视觉设计的,对于机器进行区分并不一定是最佳的,因此本申请实施例先通过1x1的卷积处理能够得到对于后续缺陷检测最佳的灰度图像。当然,如果采集的图像是灰度图像,可以将前述的superresbackbone的第一层1x1卷积步骤省略。
[0091]
之后对上述1x1卷积处理后得到的灰度图像再依次一次3x3卷积、一次全局最大池化、一次3x3卷积和一次全局最大池化处理后,得到子特征图。在最后一个最大池化层之后,连接了三个特征形状(形状为nxcxhxw)一致的3x3卷积层,表示不同感受野下对缺陷特征的表达,在卷积神经网络中,感受野可以理解为是卷积神经网络每一层输出的特征图上的像素点在原始图像上映射的区域大小。具体地,将上述子特征图先进行一次3x3卷积,可以得到第一输出特征图及第一感受野;将第一输出特征图进行一次3x3卷积,可以得到第二输出
特征图及第二感受野;将第二输出特征图进行一次3x3卷积,可以得到第三输出特征图及第三感受野。将第一输出特征图、第二输出特征图和第三输出特征图进行两次或两次以上的全连接后,得到第四输出特征图及第四感受野,作为特征提取子网络superresbackbone最终输出的特征图(形状为nx3cxhxw),其中n为一次运行的待训练图像个数,c为特征的数量,hxw为一个特征图的大小,即特征图高度(height)
×
特征图宽度(width)。当然,除了上述结构的特征提取子网络,本领域技术人员也可以根据实际情况灵活设置其他合理结构的特征提取子网络,在此不一一列举。
[0092]
在本申请的一个实施例中,所述通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值包括:将所述有缺陷待训练图像和所述无缺陷待训练图像的特征图输入所述分类子网络的池化层进行全局平均池化处理,输出全局平均池化特征图,以及进行全局最大池化处理,输出全局最大池化特征图;将所述全局平均池化特征图和所述全局最大池化特征图进行多次全连接后,输出全局池化特征图;对所述全局池化特征图进行softmax运算,得到所述待训练图像的输出向量,根据所述输出向量得到所述待训练图像的分类结果,其中所述输出向量表示所述待训练图像有缺陷的置信度;计算所述待训练图像的分类结果与所述待训练图像的图像标签之间的误差,得到所述待训练图像的分类损失值。
[0093]
如图5所示,这里的分类子网络classifier主要包括1个全局平均池化层adaptiveavgpool2d、1个全局最大池化层adaptivemaxpool2d和2个全连接层(线性)linear。首先将上述特征提取子网络最终提取到的待训练图像的特征图分别输入全局平均池化层进行全局平均池化处理,以及输入全局最大池化层进行全局最大池化处理,分别得到全局平均池化特征图和全局最大池化特征图。这里的全局最大池化是指对最后一层卷积的特征图,求整个特征图的像素最大值,进而可以提取图像的特征纹理,减少无用信息的影响。而全局平均池化是指对最后一层卷积的特征图,求整个特征图的像素均值,进而可以更好地保留图像的背景信息。全局平均池化和全局最大池化输出的特征图的形状是一致的(形状为nx3cx1x1),然后将这两种池化后得到的特征图进行进行两次全连接,使得最终输出的全局池化特征图(形状为nx6cx1x1)可以捕捉到图像的全局图像信息包括图像的特征纹理信息和背景信息等,为后续图像的分类和缺陷检测奠定了基础。
[0094]
之后对全局池化特征图进行softmax函数运算,得到待训练图像的输出向量,该输出向量可以表示待训练图像有缺陷的置信度,进而可以根据该输出向量得到待训练图像的分类结果,例如假设置信度阈值为0.75,如果输出向量表示的待训练图像有缺陷的置信度为0.8,超过了置信度阈值,则认为待训练图像的分类结果为有缺陷图像。最后计算分类子网络最终输出的待训练图像的分类结果与待训练图像已标记好的图像标签之间的误差,进而得到待训练图像的分类损失loss_cls。
[0095]
本申请实施例可以采用softmax函数进行输出向量的计算,具体公式如下:
[0096][0097]
其中,y
c
表示待训练图像属于有缺陷图像或者无缺陷图像的概率,范围为0~1。
[0098]
在本申请的一个实施例中,所述通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值包括:将所述有缺陷图像的特征图输入所述缺陷检测子网络中的区域生成网络,进行候选框的提取;将提取出的候选框输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述候选框的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果;计算所述有缺陷图像的缺陷检测结果与所述有缺陷图像的缺陷类别标签和缺陷位置之间的误差,得到所述有缺陷图像的缺陷检测损失值。
[0099]
这里的缺陷检测子网络detector主要包括区域生成网络rpn(region proposal network)和感兴趣区域池化层roi-pooling(region of interest-pooling)。rpn是在faster r-cnn网络中提出的,传统的r-cnn(region-convolutional neural networks,区域卷积神经网络)是在原始图像上通过选择性搜索selective search算法提出多个候选框,再把多个候选框送入cnn网络进行特征提取。fast r-cnn(fast region-convolutional neural networks,快速的区域卷积神经网络)则是将整张图像送入cnn网络进行特征提取,再在特征图上通过选择性搜索selective search算法提取候选框。然而这两种方法都是使用离线的选择性搜索算法,耗时大,且无法端到端的学习如何提取候选框,rpn的作用即是将这个候选框的提取纳入到端到端的学习中来,提高候选框的提取效率。因此,本申请实施例出于提高缺陷检测模型检测效率的目的考虑,采用rpn网络对上述分类子网络中输出的有缺陷图像的特征图进行候选框提取。
[0100]
这里的roi-pooling层主要用于将不同输入尺寸的特征图,即上述提取出的候选框所对应的感兴趣区域通过分块池化的方法得到固定尺寸的输出,进而通过全连接层和分类器层得到缺陷所在位置和类别,作为最终有缺陷图像的缺陷检测结果。具体地,缺陷检测子网络输出的缺陷检测结果可以是一个jxkx5的特征向量,其中j表示缺陷检测子网络检测出的j个缺陷,k表示缺陷总共有k个类别,5表示每个候选框的坐标及缺陷的置信度。之后通过计算有缺陷图像的缺陷检测结果与有缺陷图像已经标记的缺陷类别标签和缺陷位置之间的误差,进而可以得到有缺陷图像的缺陷检测损失loss_det。本申请实施例的roi-pooling层能在显著提高缺陷检测模型的训练速度的同时还能提高模型的检测精确度。
[0101]
在本申请的一个实施例中,所述将所述有缺陷图像的特征图输入所述缺陷检测子网络中的区域生成网络,进行候选框的提取包括:对所述有缺陷图像的特征图上的各特征点,生成多个不同尺度的锚点框;利用所述区域生成网络中的第一全连接层,对各锚点框进行分类得到各锚点框的分类结果,以及利用所述区域生成网络中的第二全连接层,对各锚点框进行位置回归得到各锚点框的位置偏移量;根据各锚点框的分类结果和位置偏移量,输出所述有缺陷图像的候选框及位置坐标。
[0102]
本申请实施例在利用区域生成网络对有缺陷图像的特征图进行候选框提取时,可以通过如下方式实现:首先,对于特征图上的每一个点(可称之为锚点anchor point),生成具有不同尺度和宽高比的锚点框,在fast r-cnn网络中,通常使用3种尺度和3种长宽比(1:1,1:2,2:1)的锚点框,这样在每一个滑窗位置就对应有9个锚点框,这9个锚点框可以理解为是rpn网络中对特征图滑窗时每个滑窗位置所对应的原图区域中有9种可能的大小,相当于是一种模板,对任意图像、任意滑窗位置都是这9种模板,如图6所示,给出了一种fast r-cnn网络中所使用的9种锚点框的结构示意图。然后将这些锚点框输入到两个全连接层中
去,一个全连接层用来分类,即用来判断这个锚点框里面的特征图属于前景还是背景,另一个全连接层用来回归,即输出锚点框的位置坐标(这里是指相对于真实物体框的偏移量)。最后根据各锚点框的分类结果和位置偏移量,输出最终有缺陷图像的候选框及对应的位置坐标。
[0103]
在本申请的一个实施例中,所述将提取出的候选框输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述候选框的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果包括:将所述候选框映射至所述有缺陷图像的特征图中,得到感兴趣区域;将所述感兴趣区域输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述感兴趣区域的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果。
[0104]
在通过区域生成网络提取出候选框后,根据待检测图像对应的特征图,将候选框映射到特征图上的感兴趣区域roi的对应位置,然后可以将映射后的感兴趣区域划分为相同大小的分块(分块数量与输出的维度相同),对每个分块分别进行最大池化maxpooling处理,最终通过全连接层输出有缺陷图像的缺陷检测结果,包括缺陷所在位置和缺陷类别等。
[0105]
本申请实施例提供了一种物体缺陷检测模型的训练方法,如图7所示,所述方法包括如下的步骤s710至步骤s730:
[0106]
步骤s710,获取待检测物体的目标图像,并通过物体缺陷检测模型的特征提取子网络对所述目标图像进行特征提取,得到目标图像的特征图。
[0107]
在对工件等物体进行缺陷检测的场景下,可以先获取该物体的图像作为待检测图像,然后利用特征提取子网络如卷积神经网络对该图像进行特征提取,进而得到待检测图像的特征图。本申请实施例特征的提取子网络是一种结构更为简便的卷积神经网络结构superresbackbone,进而以提高模型整体的运行速度,同时节省一定的信息存储空间。
[0108]
步骤s720,通过物体缺陷检测模型的分类子网络对所述特征图进行分类,得到分类结果,所述分类结果包括所述目标图像为有缺陷图像或无缺陷图像。
[0109]
如前所述,现有技术中的缺陷检测方法在将图像进行拆分后会全部送到模型中进行训练,然而由于拆分后得到的图像小块很多都是没有缺陷的样本,如果将全部小块都送到模型进行训练会导致正负样本极度不平衡,训练出的模型漏检增加。因此这里可以先利用事先训练好的分类子网络classifier对上述待检测图像进行初步过滤,以判断出哪些是需要进行后续缺陷检测的图像。
[0110]
具体地,先利用分类子网络对上述提取到的待检测图像的特征图进行分类,以初步判断待检测图像中是否存在缺陷,如果分类结果为无缺陷图像,也即图像中的工件没有缺陷或者缺陷可忽略不计,则可不用再进行后续缺陷检测的步骤,在一定程度上节省了系统运行的时间,提高了整体的缺陷检测效率。
[0111]
步骤s730,若所述目标图像为有缺陷图像,则通过物体缺陷检测模型的缺陷检测子网络对所述目标图像进行缺陷检测,得到所述待检测物体的目标图像的缺陷检测结果,并基于所述缺陷检测结果反馈所述待检测物体的缺陷信息;若所述目标图像为无缺陷图像,直接反馈所述缺陷检测结果为无缺陷;其中,所述物体缺陷检测模型基于前述的物体缺陷检测方法训练得到。
[0112]
如果分类子网络输出的分类结果为该待检测图像为有缺陷图像,则说明该图像中的工件存在不可忽略的缺陷,需要进行进一步的缺陷检测和定位,这里可以利用训练好的
缺陷检测子网络对该有缺陷图像进行缺陷检测,进而得到有缺陷图像的缺陷检测结果,包括缺陷位置和缺陷类别等。最后将缺陷检测结果进行反馈,从而完成整个物体缺陷检测流程。
[0113]
本申请的物体缺陷检测方法先通过分类子网络提前过滤掉无缺陷样本,由于缺陷检测子网络的运行耗时较大,分类子网络的耗时相对小,因此可以在很大程度上提高无缺陷样本的处理速度,进而提高了物体缺陷检测的整体效率。此外,本申请可以将采集的超高分辨率图像直接输入模型检测缺陷检测,无需对图像进行压缩或拆分,保留了图像全局信息和局部细节信息,进而可以得到更精准的缺陷检测结果。
[0114]
如图8所示,提供了一种物体缺陷检测的整体流程示意图。首先获取待检测图像,然后通过物体缺陷检测模型中的特征提取子网络即改进的骨干网络superresbackbone进行对待检测图像进行特征提取,之后利用分类子网络classifier对提取的特征进行分类,得到待检测图像的分类结果,这里的分类结果包括待检测图像为有缺陷图像或无缺陷图像两种情况,如果分类结果是待检测图像为有缺陷图像,则将该有缺陷图像的特征输入缺陷检测子网络进行缺陷检测,进而确定缺陷所在位置及缺陷类别,最终输出缺陷检测结果。当然如果分类结果是待检测图像为无缺陷图像,则直接返回该分类结果。上述物体缺陷检测流程通过采用特征提取子网络、分类子网络以及缺陷检测子网络三部分网络结构提高了物体缺陷检测的整体速度,同时得到了精准的检测结果。
[0115]
为了验证本申请训练后的物体缺陷检测模型的运行性能,本申请利用torchsummary工具(一种用来计算模型的参数量等信息的工具)对本申请训练好的模型以及现有技术中所采用的传统resnet18模型进行了对比检验。表1为torchsummary工具输出的resnet18模型的参数量等信息,从表1中可以看出,在输入图像分辨率为10000x10000,输入大小(即表1中的input size)为1144.41mb的情况下,resnet18模型的总参数量(即表1中的total params/trainable params)为11689512,需要126.3g显存(即表1中的estimated total size)才能正常训练,这显然是难以达到的配置。
[0116]
表1
[0117][0118]
表2是利用torchsummary工具输出的本申请的特征提取子网络superresbackbone的参数量等信息,同样在输入分辨率为10000x10000的情况下,本申请的特征提取子网络只需要5.4g显存(即表2中的estimated total size)即可正常训练。
[0119]
表2
[0120][0121]
需要说明的是,表1和表2中展示的信息为torchsummary工具输出的常规信息,其中layer(type)表示网络层的类型,包括卷积层conv2d、批归一化层batchnorm2d、最大池化层maxpool2d、激活函数层relu、自适应平均池化层adaptiveavgpool2d以及resnet基础块层basicblock等,output shape表示输出形状,param表示参数量。
[0122]
本申请实施例提供了一种物体缺陷检测模型的训练装置900,如图9所示,所述装置900包括:第一特征提取单元910、第一分类单元920、第一检测单元930和优化单元940。
[0123]
第一特征提取单元910,用于获取物体的待训练图像,并通过物体缺陷检测模型的特征提取子网络对所述待训练图像进行特征提取,得到待训练图像的特征图,其中所述待训练图像包括有缺陷待训练图像和无缺陷待训练图像的图像集;
[0124]
第一分类单元920,用于通过物体缺陷检测模型的分类子网络对所述有缺陷待训练图像和所述无缺陷待训练图像的特征图进行分类,得到所述待训练图像的分类结果和分类损失值;
[0125]
第一缺陷检测单元930,用于通过物体缺陷检测模型的缺陷检测子网络对所述有缺陷待训练图像进行缺陷检测,得到有缺陷图像的缺陷检测结果和缺陷检测损失值;
[0126]
优化单元940,用于根据所述分类损失值和所述缺陷检测损失值,利用梯度下降算法对所述物体缺陷检测模型的参数进行优化,得到训练后的物体缺陷检测模型,并基于所述训练后的物体缺陷检测模型进行物体缺陷检测。
[0127]
在本申请的一个实施例中,所述第一特征提取单元910用于:将所述待训练图像输入所述特征提取子网络,依次进行一次1x1卷积、一次3x3卷积、一次全局最大池化、一次3x3卷积和一次全局最大池化处理后,得到子特征图;对所述子特征图进行一次3x3卷积后,得到第一输出特征图;对所述第一输出特征图进行一次3x3卷积后,得到第二输出特征图;对所述第二输出特征图进行一次3x3卷积后,得到第三输出特征图;将所述第一输出特征图、所述第二输出特征图和所述第三输出特征图进行多次全连接后,得到第四输出特征图,将所述第四输出特征图作为所述待训练图像的特征图。
[0128]
在本申请的一个实施例中,所述第一分类单元920用于:将所述有缺陷待训练图像和所述无缺陷待训练图像的特征图输入所述分类子网络的池化层进行全局平均池化处理,输出全局平均池化特征图,以及进行全局最大池化处理,输出全局最大池化特征图;将所述
全局平均池化特征图和所述全局最大池化特征图进行多次全连接后,输出全局池化特征图;对所述全局池化特征图进行softmax运算,得到所述待训练图像的输出向量,根据所述输出向量得到所述待训练图像的分类结果,其中所述输出向量表示所述待训练图像有缺陷的置信度;计算所述待训练图像的分类结果与所述待训练图像的图像标签之间的误差,得到所述待训练图像的分类损失值。
[0129]
在本申请的一个实施例中,所述第一缺陷检测单元930用于:将所述有缺陷图像的特征图输入所述缺陷检测子网络中的区域生成网络,进行候选框的提取;将提取出的候选框输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述候选框的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果;计算所述有缺陷图像的缺陷检测结果与所述有缺陷图像的缺陷类别标签和缺陷位置之间的误差,得到所述有缺陷图像的缺陷检测损失值。
[0130]
在本申请的一个实施例中,所述第一缺陷检测单元930用于:对所述有缺陷图像的特征图上的各特征点,生成多个不同尺度的锚点框;利用所述区域生成网络中的第一全连接层,对各锚点框进行分类得到各锚点框的分类结果,以及利用所述区域生成网络中的第二全连接层,对各锚点框进行位置回归得到各锚点框的位置偏移量;根据各锚点框的分类结果和位置偏移量,输出所述有缺陷图像的候选框及位置坐标。
[0131]
在本申请的一个实施例中,所述第一缺陷检测单元930用于:将所述候选框映射至所述有缺陷图像的特征图中,得到感兴趣区域;将所述感兴趣区域输入所述缺陷检测子网络中的感兴趣区域池化层,输出所述感兴趣区域的分类和坐标回归,作为所述有缺陷图像的缺陷检测结果。
[0132]
本申请实施例提供了一种物体缺陷检测装置1000,如图10所示,所述装置1000包括:第二特征提取单元1010、第二分类单元1020和第二检测单元1030。
[0133]
本申请实施例的第二特征提取单元1010,用于获取待检测图像,并利用物体缺陷检测模型的特征提取子网络对所述待检测图像进行特征提取,得到待检测图像的特征图。
[0134]
本申请实施例的第二分类单元1020,用于利用物体缺陷检测模型的分类子网络对所述待检测图像的特征图进行分类,得到待检测图像的分类结果,所述分类结果包括有缺陷图像和无缺陷图像。
[0135]
本申请实施例的第二检测单元1030,用于利用物体缺陷检测模型的缺陷检测子网络对所述有缺陷图像进行缺陷检测,得到待检测图像的缺陷检测结果。
[0136]
需要说明的是,上述各装置实施例的具体实施方式可以参照前述对应方法实施例的具体实施方式进行,在此不再赘述。
[0137]
需要说明的是:
[0138]
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
[0139]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0140]
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
[0141]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0142]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0143]
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本申请实施例的物体缺陷检测装置中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0144]
例如,图11示出了根据本申请一个实施例的电子设备的结构示意图。该电子设备1100包括处理器1110和被安排成存储计算机可执行指令(计算机可读程序代码)的存储器1120。存储器1120可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器1120具有存储用于执行上述方法中的任何方法步骤的计算机可读程序代码1131的存储空间1130。例如,用于存储计算机可读程序代码的存储空间1130可以包括分别用于实现上面的方法中的各种步骤的各个计算机可读程序代码1131。计算机可读程序代码1131可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图12所示的计算机可读存储介质。图12示出了根据本申请一个实施例的一种计算机可读存储介质的结构示意图。该计算机可读存储介质1200存储有用于执行根据本申请的方法步骤的计算机可读程序代码1131,可以被电子设备1100的处理器1110读取,当计算机可读程序代码1131由电子设备1100运行
时,导致该电子设备1100执行上面所描述的方法中的各个步骤,具体来说,该计算机可读存储介质存储的计算机可读程序代码1131可以执行上述任一实施例中示出的方法。计算机可读程序代码1131可以以适当形式进行压缩。
[0145]
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1