一种异常检测方法转让专利

申请号 : CN202210069649.3

文献号 : CN114092478B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙涛叶松刘海峰王子磊

申请人 : 合肥中科类脑智能技术有限公司

摘要 :

本发明涉及一种工业品部件异常检测方法,尤其涉及一种基于自适应特征集构建的工业品小部件的异常检测方法。本发明的第一个方面结合图像背景信息使用了关键点定位方法,可以实现不管目标部件外观和拍摄角度如何变化,都可以很好的找到部件位置,解决了目标检测方法存在的受到部件外观变化影响导致不能准确定位待检测的部件问题。本发明的第二个方面提出一种动态更新支持特征向量集的方法,该方法可以根据新出现的正常样本的特征向量对支持向量集中的向量进行动态调整,从而可以很好的适应新的正常样本,免去了重新训练模型的步骤。最后,本发明还通过对异常值进行非线性拉伸,提升了模型的鲁棒性,减小了误判的概率。

权利要求 :

1.一种异常检测方法,其特征在于,所述方法包括如下步骤:步骤一:在大量正常样本图像上收集待检测部件的图像块;

步骤二:使用特征提取器对步骤一所得的待检测部件正常样本的图像块进行特征提取,收集N个正常样本特征向量构成正常样本初始特征向量集;

步骤三:使用贪心算法对正常样本初始特征向量集进行降采样,将N个初始特征向量缩减为L个支持特征向量,构成支持特征向量集;

步骤四:判断待检测图像是否异常:首先,收集待检测部件的图像块,使用特征提取器对待测图像进行特征提取,得到不同图像块的特征;然后,计算每个图像块的特征与支持向量集中所有特征的最小距离;接着找到所有图像块当中与支持向量集最小距离最大的那个图像块,该图像块与支持向量集的最小距离即为整张图像的异常值,异常值超过某一阈值Y1则判定为异常,

步骤三所述的降采样具体过程如下:步骤3.1:随机选取正常样本初始特征向量集中的一个特征向量作为第1个支持向量加入支持向量集;步骤3.2:计算其他特征向量与第1个支持向量的距离,选择距离第一个支持向量最远的一个特征向量作为第二个支持向量加入支持向量集;步骤3.3:剩下的特征向量,计算每一个特征向量与当前支持向量集中每个支持向量的最小距离,选择最小距离最大的那个特征向量作为支持向量加入支持向量集;步骤

3.4:不断重复步骤3.3,直至获取L个特征向量。

2.根据权利要求1所述的异常检测方法,其特征在于,所述收集待检测部件的图像块的步骤使用的是关键点定位方法,所述关键点定位方法步骤如下:首先,在大量正常样本中标注目标部件的关键点位置,构建关键点检测训练集;其次,用关键点检测训练集训练关键点检测模型;最后,用训练好的关键点检测模型定位待检测部件关键点的坐标。

3.根据权利要求2所述的异常检测方法,其特征在于,所述关键点定位方法以待检测部件的中心位置设定关键点。

4.根据权利要求1所述的异常检测方法,其特征在于,该方法进一步包括对所述支持向量集进行动态更新的步骤,所述支持向量集动态更新的步骤具体如下:首先,对于新进来的正常样本的特征向量,计算其与当前所有支持向量的最小距离d是否大于某一阈值Z,如是,则将新的特征向量加入支持向量集,如否,则新特征向量不加入支持向量集,不断更新此过程,直到支持向量集中的支持向量个数达到M0个,执行贪心算法进行降采样,把支持向量的个数缩减为L个,其中M0大于L。

5.根据权利要求4所述的异常检测方法,其特征在于,所述阈值Z为1/4D‑1/3D范围内的任一值,D为当前支持特征向量集中所有支持向量之间的最小距离。

6.根据权利要求5所述的异常检测方法,其特征在于,所述阈值Z为 1/4D,D为当前支持特征向量集中所有支持向量之间的最小距离。

7.根据权利要求1或2或4所述的异常检测方法,其特征在于,包括对所述异常值进行非线性拉伸的步骤,若权利要求1所述异常值用s*表示,进行非线性拉伸后的异常值以s表示,进行非线性拉伸后的异常值s超过某一阈值Y2则判定为异常;s可用公式表达为:其中,s´为(0‑1)*D范围内任一值,D为支持向量集M中所有特征向量之间的最小距离。

8.根据权利要求7所述的异常检测方法,其特征在于,所述s´为1/4D‑1/3D区间的某一值。

9.根据权利要求8所述的异常检测方法,其特征在于,所述s´=1/4D。

10.根据权利要求1所述的异常检测方法,其特征在于,其中N为2000‑50000中的任一值。

11.根据权利要求10所述的异常检测方法,其特征在于,其中N为5000‑30000范围内的任一值。

12.根据权利要求11所述的异常检测方法,其特征在于,其中N为8000‑20000范围内的任一值。

13.根据权利要求12所述的异常检测方法,其特征在于,其中N为1万。

14.根据权利要求1所述的异常检测方法,其特征在于,L为50‑500范围内的任一值。

15.根据权利要求14所述的异常检测方法,其特征在于,其中L为50‑300范围内的任一值。

16.根据权利要求15所述的异常检测方法,其特征在于,其中L为100。

17.根据权利要求4所述的异常检测方法,其特征在于,所述M0为100‑500范围内的任一值。

18.根据权利要求17所述的异常检测方法,其特征在于,所述M0为100‑300范围内的任一值。

19.根据权利要求18所述的异常检测方法,其特征在于,所述M0=200。

20.根据权利要求 1所述的异常检测方法,其特征在于,所述阈值Y1为0.8‑0.9范围内的任一值。

21.根据权利要求 7所述的异常检测方法,其特征在于,所述阈值Y2为0.8‑0.9范围内的任一值。

22.根据权利要求 20所述的异常检测方法,其特征在于,所述阈值Y1为0.8、0.85或0.9。

23.根据权利要求 21所述的异常检测方法,其特征在于,所述阈值Y2为0.8、0.85或0.9。

说明书 :

一种异常检测方法

技术领域

[0001] 本发明涉及一种工业品部件异常检测方法,尤其涉及一种基于自适应特征集构建的工业品小部件的异常检测方法。

背景技术

[0002] 在工业场景中经常需要检查流水线上的产品是否符合生产标准或者有异常现象产生。如果只依靠人力去检查所有产品是不现实的,常用做法是在产品流水线上架设摄像
头,利用计算机视觉的方法去自动识别产品的异常情况。
[0003] 近年来,以深度神经网络为代表的人工智能技术飞速发展,很快应用到了各种领域。在工业场景中也可以利用摄像头获取的视频图像作为输入,通过神经网络和机器学习
算法解决实际生产中遇到的一些问题,其中流水线上产品的异常检测就是一个典型应用。
[0004] 异常检测是计算机视觉领域的一个热门话题。在工厂流水线上存在大量类似的正常样本,同时缺乏不正常的样本。现实中可能出现各种各样的异常样本,并且事先是难以对
这些异常样本进行收集。本发明用科学的方法归纳总结这些正常样本,当流水线上存在不
正常的产品时,算法可以及时发现并发出报警。
[0005] CN112465784A号中国专利申请描述了一种地铁夹钳外观异常检测的方法,首先利用架设在列车两侧的高速相机采集夹钳图像,通过目标检测算法对杆件部分先定位然后对
杆件部分进行判别,判断杆件是否出现异常。利用目标检测算法对夹钳整图中的弹簧部分
进行定位并截取,如果没有截取到弹簧部件,可判断为弹簧丢失,否则将截取获得的弹簧图
像与对应的正常弹簧图像进行高度对比,判断弹簧是否部分缺失;如果弹簧不存在部分缺
失异常,将弹簧图像送入裂纹判断网络,判断是否存在裂纹。
[0006] 该现有技术中,对于工厂流水线上架设的摄像头,需要从拍摄的图像当中检查产品某些部件是否出现异常(形变、异物、破损等)。输入一幅图像,直接检查部件是否异常是
比较困难的。为了排除背景干扰,现有方案往往采用目标检测的方法,先检测到需要检查部
件的包围框,再对该包围框中的图像区域进行异常检测。算法的目的是判断待检测部件是
否异常,然而用目标检测的方案寻找待检测部件往往受到部件外观变化的影响(如部件零
件丢失、外观破损、形变较大等),这样一来可能造成部件检测位置不准甚至丢失。不仅如
此,一幅图像中往往存在很多相同的部件,这些部件外观基本一致,在实际应用中我们可能
只需要检测其中某些部件,这样一来就无法区分哪些是需要做异常检测的部件。
[0007] CN104809732A号中国专利申请公开了一种基于图像比对的电力设备外观异常检测方法:首先对当前巡检拍摄图像进行归一化处理,然后与同一位置同一角度的历史巡检
拍摄图像进行配准,接下来对配准后的两个图像分别继续区域分割,提取每一区域图像的
若干特征,将若干特征进行融合,最后计算两幅图像对应特征的差异度,将差异度与设定阈
值进行比较,判断当前巡检拍摄图像是否为异常图像。该现有技术是利用当前拍摄的图像
和历史拍摄的一幅图像对比来进行异常检测。但是,对于该现有技术,由于历史拍摄的那一
张图像很难代表整个部件所有的正常情况,当前拍摄的图像有时会与历史拍摄的图像有一
定区别,但也属于正常样本的范围,这样通过算法计算很有可能造成误判。
[0008] CN111260626A号专利申请涉及一种基于深度学习的工件磨损检测方法:首先获取样本工件在各类磨损状态下的样本图像;接着标注所述样本图像的表面缺陷类型和缺陷区
域,生成样本工件的图像训练集;将所述图像训练集输入到图像分割神经网络进行训练,生
成工件磨损检测模型;通过将待检测工件的图像输入所述模型进行异常检测。
[0009] 该现有技术需要事先收集各种异常样本,然后训练异常检测模型对新来的样本进行检测。然而,工业场景下的异物检测,往往会获得大量正常样本,而异常样本的收集是十
分困难的,有的算法会人工构建各种异常样本连同大量正常样本训练网络模型(神经网络
分类模型需要大量正常样本和异常样本训练,从而区分待检测的样本是否异常)。另外,现
有算法一旦收集完正负样本,异常检测模型一旦训练好之后,确定训练集进行模型训练后
神经网络的参数就固定了,对于新出现的正常样本,算法模型不能很好的实时兼容,也可能
会判定为异常。最后,对于异常判断的分值定义也比较固定,没有很好考虑到新出现的正常
样本的情况。

发明内容

[0010] 为了解决现有技术存在的上述技术问题,本发明提供一种基于自适应特征集构建的工业品部件异常检测方法,尤其是小部件的异常检测方法。
[0011] 第一方面,本发明结合图像背景信息使用了关键点定位方法,利用待检测目标间的相对位置关系,可以找到待判别部件的坐标点,关键点定位方法可以实现不管目标部件
外观和拍摄角度如何变化,都可以很好的找到部件位置,解决了目标检测的方法存在的受
到部件外观变化的影响导致的不能准确定位需要做异常检测的部件问题。
[0012] 第二方面,本发明结合ResNet第二层(图像的低级特征信息)和第三层(图像的高级语义信息)这两层信息构建正常样本的特征集可以兼顾大的外形变化以及小的局部异
常。
[0013] 第三方面,本发明提出一种动态更新支持特征向量集的方法,该方法可以根据新出现的正常样本(与原正常样本有一些区别)的特征向量对支持向量集中的向量进行动态
调整,从算法模型可以自适应更新评价模型中的参数以及判断阈值,然后逐渐兼容它们,从
而可以很好的适应新的正常样本,免去了重新训练模型的步骤。
[0014] 第四方面,本发明提出结合支持向量集中特征间的最小距离,对异常值进行非线性拉伸,可以提升模型的鲁棒性,减小误判的概率。

附图说明

[0015] 图1A和图1B示出了构建支持向量集和支持向量集动态更新算法流程示意图。
[0016] 图2示出了异常检测算法流程图。
[0017] 图3示出了贪心算法效果示意图,图中圆和三角都代表向量,三角代表采用贪心算法后保留下来的向量,即为支持向量。
[0018] 图4示出了关键点定位示意图。
[0019] 图5示出了通过关键点定位部件坐标后得到的部件图样例。
[0020] 图6示出了十八层的ResNet(残差网络)结构。

具体实施方式

[0021] 下面结合附图详细说明本发明在工业领域的具体实施方式。应当将本发明理解成并不局限于以下描述的这种实施方式,并且本发明的技术理念可以与其他公知技术或功能
与那些公知技术相同的其他技术组合实施。图1A、图1B、图2是本发明的算法流程示例图。具
体步骤详述如下:
[0022] 步骤一:关键点定位方法确定部件位置。在大量现存的正常样本中,确定视频图像中需要检测的部件,以该部件中心位置设定关键点,标注待检测部件关键点位置,构建关键
点检测训练集。用训练集对关键点检测模型进行训练。训练好之后在检测样本上便可得到
待检测部件关键点的坐标,由此得出部件的位置(参考附图4)。附图4所示产品为关键点定
位示意图,其中,point1‑point6分别为各个部件的关键点,以所示各部件关键点位置
point1‑point6为中心可以得出该部件所在的图像块(参考图5),可在大量正常样本图像上
收集各种部件所在的图像块。
[0023] 步骤二:预训练编码器提取特征。本发明利用现有训练好的ResNet(参考图6)作为这些正常样本的特征提取器。ResNet是一种神经网络结构,经常用作各种模型的特征编码
器。本发明事先把ResNet在大规模图像数据集ImageNet上进行训练。由于ImageNet数据量
巨大,所以ResNet可以学习到各种各样丰富的特征。本发明把ResNet网络模型结构中第二
层和第三层输出的特征用来构建正常样本的特征集。其中第二层在网络结构中的位置靠
前,代表图像低级特征(如边角、颜色、纹理信息等);第三层在网络结构中的位置靠后,代表
图像高级特征(如形状、部件信息等),结合低级特征和高级语义信息可以提高最终结果的
准确性。
[0024] 步骤三:构建正常样本初始特征向量集。对于某个部件,在上一步已经得到大量正常样本的特征。假设每个部件图像通过特征提取器得到的特征维度为w*h*c,其中w为宽,h
为高,c为特征的通道数。那么我们把1*1*c维的向量作为一个正常特征,一张部件图可以得
到w*h个正常特征。这里每个位置的1*1*c维向量都可以分别映射到原部件图当中,代表原
部件图对应图像块的特征向量。然后我们不断提取正常部件图的特征,直到收集了N个正常
特征作为初始特征向量集,其中N选自2000‑50000中的任一值,优选地N选自5000‑30000中
的任一值,更优选地N选自8000‑20000中的任一值,最优选地N=1万。优选数值范围可以在保
证准确度的情况下提升算法运行速度。
[0025] 步骤四:构建支持特征向量集。在构建完正常样本的初始特征向量集后,由于初始特征向量集数量庞大会给计算带来很大压力,所以需要将初始特征向量集降采样。本发明
可以采用贪心算法进行降采样:具体过程如下:(1)随机选取N个正常特征中的一个作为第1
个支持向量加入支持向量集;(2)计算其他特征向量中与第1个支持向量的距离,选择距离
第一个支持向量最远的一个作为第二个支持向量入支持向量集;(3)剩下的特征向量,计算
每一个特征向量与当前支持向量集中每个支持向量的最小距离,选择最小距离最大的那个
特征作为支持向量加入支持向量集。然后不断重复步骤(3),直到获取L个支持特征向量,其
中L选自 50‑500中的任一值,优选地,L选自50‑300中的任一值,更优选地,L=100,优选数值
范围可以在保证准确度的情况下提升算法运行速度。降采样效果如图3所示,其中圆形表示
初始特征向量集中的特征向量,三角形表示采用贪心算法后的支持向量:
[0026] 利用贪心算法构建支持特征向量集可用如下公式表示:
[0027] 输入:预训练好的特征提取器φ,网络特征层j,需要构建的支持特征向量个数L,正常样本数据集XN,随机线性映射函数Ψ。
[0028] 输出:支持向量集M。
[0029] 。
[0030] 步骤五:支持特征集的动态更新。更新策略:首先,计算当前支持特征向量集中所有支持向量之间的最小距离(假设为D)。对于新进来的正常样本的特征向量,计算其与当前
所有支持向量的最小距离为d,判断d是否大于某一阈值,如是,则将新的特征向量加入支持
向量集,如否,则新特征向量不加入支持向量集,其中,所述阈值优选1/4D‑1/3D,更优选1/
4D,使用优选值可以更好的更新支持向量集中的向量。不断更新此过程,直到支持向量集中
的支持向量个数达到M0个,其中M0选自 100‑500中的任一个,优选地M0选自 100‑300中的任
一个,更优选地M0=200 个,优选数值范围可以在保证准确度的情况下提升算法运行速度。
继续执行步骤四中的特征向量集降采样的贪心算法,把支持向量的个数缩减为L个。
[0031] 本发明所述新进来的正常样本是指在流水线上检测到的“新出现的正常样本”,实践中经常会出现与之前的正常样本有点不一样得新的正常样本。
[0032] 步骤六:图像异常值的计算。在得到支持向量集M后,可以估算一张图像的异常值。test
对于测试图像X ,可以把其送入ResNet得到不同图像块的特征(维度1*1*c),然后每个图
像块特征都需要计算与支持向量集中所有特征的最小距离,接着找到所有图像块当中与支
持向量集最小距离为最大的那个图像块,该图像块与支持向量集的最小距离即为整张图像
的异常值s*,且异常值超过阈值则判定为异常,其中阈值为0.8‑0.9,优选0.8、0.85或0.9。
[0033] 也就是说,部件图像中该图像块出现异常的可能性最大,异常值s*可经公式一和公式二计算得到:
[0034] 公式一:寻找测试图像中最异常的图像块mtest,*,以及距离它最近的支持向量m*:
[0035]
[0036] 其中,P(xtest)代表测试图像经过特征提取器后所有图像块的特征向量,mtest代表测试图像经过特征提取器后所有图像块特征向量的其中之一,M为支持向量集,m为支持向
test,* test
量集M中的某一个。m 为P(x )中距离M最小距离值最大的那一个图像块特征向量,m*
test,*
为支持向量集中距离m 最近的那个支持向量。min代表寻找最小,max代表寻找最大,下
标代表寻找范围,后面的项代表值。||...||代表计算向量距离。
[0037] 公式二:依据公式一计算得出的mtest,*与m*之间的距离即为整张图像的异常值
[0038] 。
[0039] 步骤七:对异常值s*进行非线性拉伸。为了使异常值更加准确,在支持向量集M确定后,可以计算得到集合中所有特征向量之间的最小距离D,s´ =(0‑1)*D,优选s´ =1/4D‑
1/3D,最优选s´=1/4D 。在这里本发明对距离s*进行非线性拉伸,如果候选图像块特征
test,* * *
m 与最近的支持向量m的距离s相对于s´较小时,我们认为该图像块出现异常的概率较
test
小。接着对s*和 s´的值进行归一化。最终,一幅测试图像x 异常值s用公式表达为 :
[0040]
[0041] s*是计算得出的初始异常值。本发明在s*前面加了一项,这项的值在0‑1之间,用来对s*进行非线性拉伸。
[0042] 归一化是指把数字缩放至0到1之间,计算元素占总体比重。从分母可以看出s*和s´构成总体,这里引入s´就是动态改变这个值的大小,而s´的值是由支持向量集动态计算得
出的,由此实现对异常值s*的非线性拉伸。
[0043] 前面这一项分母由s*和s´构成,分子由s*构成,这样设计的目的是计算s*占总体比重。之所以在分母中引入s´是因为s´是根据当前支持向量集计算得来的,这样计算最终
的异常值会更加鲁棒。异常值越高产品异常概率越大,该公式就是计算最终异常值的,异常
值超过阈值则判定为异常。其中阈值为0.8‑0.9,优选0.8、0.85或0.9。
[0044] 本发明可以用于在工业场景下,工厂流水线摄像头拍摄下,检测产品局部较小部件中有无缺陷或者异常情况发生,是一种异常检测任务。
[0045] 本发明具有以下有益效果:
[0046] 1.由于待检测的目标本身可能就会变化,现有的一些方案没有注意到由此带来的检测不准的问题,或者仅仅使用目标检测寻找部件的方法就解决了他们的问题,在一些特
定情况下现有方法会有不准确的情况,本发明将关键点检测方法引入异常检测领域,代替
目标检测的方法,不管目标部件外观和拍摄角度如何变化,都可以很好的找到部件位置。
[0047] 2. ResNet第二层和第三层分别代表图像的低级特征信息和高级语义信息,结合这两层信息构建正常样本的特征集可以兼顾大的外形变化以及小的局部异常。
[0048] 3. 本发明提出一种动态更新支持特征向量集的方法,该方法可以根据新出现的正常样本的特征向量对支持向量集中的向量进行动态调整 ,从而可以很好的适应新的正
常样本,免去了重新训练模型的步骤。
[0049] 4. 本发明提出结合支持向量集中特征间的最小距离,对异常值进行非线性拉伸 ,可以提升模型的鲁棒性,减小误判的概率。
[0050] ResNet: ResNet(残差网络) 是一种神经网络结构,通常用来当作模型的编码器,可以提取输入图像的特征。它由多个残差块串联而成,可以有效提升模型收敛速度,具体结
构见附图6。
[0051] ImageNet: ImageNet 项目是一个用于视觉对象识别软件研究的大型可视化数据库,超过1400万图像被ImageNet手动注释,以指示图片中的对象,还提供了边界框。
ImageNet包含2万多个类别;一个典型的类别如“猫”和“狗”,包含数百个图像。
[0052] 关键点检测算法:关键点检测算法是一种可以学习出各部件之间固定的布局关系(如产品中皮带、轴承、圆盘之间相对固定的布局关系),并依据各部件之间的相对位置实现
比较准确的定位,而不是单独依赖目标外形来定位的算法。