百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

通过半监督学习检测产品表面缺陷 自动缺陷识别技术科普

toyiye 2024-06-21 12:08 20 浏览 0 评论

监督学习简介

产品表面缺陷检测是智能工业生产中的一个重要应用方向。表面缺陷检测环节采用AI技术,针对工件图片上的划痕和污迹进行检测定位。当前AI技术解决此类问题主要采用两种方法:有监督学习和半监督学习。有监督的机器学习方法采用人工标注的缺陷图像数据指导机器学习模型训练,得到预期结果。然而在应用落地过程中,研究人员常常缺少足够多的现实场景中的真实缺陷数据,导致训练后模型泛化性能差。

现有的半监督方法主要分为基于重建(reconstruction-based)的方法和基于嵌入(embedding-based)的方法。基于重建的方法尝试通过模型来重建正常图片(例如采用自动编码器(autoencoder,AE)或者生成对抗网络(adversarial network,GAN)),通过最小化重建误差来获得缺陷位置。但是由于CNN强大的泛化能力,缺陷区域也可能被重建回来,上述假设被推翻,导致漏检。基于嵌入的方法假设模型能够准确描述并匹配正常样本的特征,因此在推理阶段需要首先提取特征,再进行匹配。



MemSeg作者采用了基于嵌入的半监督的模型训练方法,提出了一个端到端的基于记忆的分割网络(MemSeg),其中缺陷样本由算法随机制造,送入模型中学习缺陷特征。网络结构作者选择在U-net上进行修改,引入了一个记忆模块(memory module)和多尺度特征融合模块(Multi-Scale Feature Fusion Module,MSFF),还在中间层特征中施加了空间注意力(Spatial Attention)模块。在训练和推理阶段,模型将记忆模块中的记忆特征与缺陷样本特征进行比对和融合,使模型更加关注缺陷部位,提升模型泛化性能。


异常模拟策略

异常模拟策略主要分为三个步骤。



步骤一首先获得缺陷蒙版作者通过一个随机二维柏林噪声获得噪声数据,通过阈值获得噪声掩码。二维柏林噪声有多个随机峰值,因此能够用来在图像中生成连续的随机区域块。为了让模型更加专注于物体上的缺陷,同时使仿真缺陷更加接近于真实缺陷,对原始正常图片也进行分割,通过开运算和闭运算去掉噪声,得到蒙板点乘得到缺陷蒙板



步骤二获得仿真缺陷图片。这里的缺陷主要包括两种:纹理缺陷和结构缺陷。缺陷图片就是对正常图片随机选择一种缺陷进行仿造。纹理缺陷来自DTD纹理数据集中的数据。仿真结构缺陷具体操作:对原图随机采用数据增强操作(包括对称翻转、旋转、对比度增强、饱和度增强、亮度增强等),然后将图片均匀分为4×8的方格,随机打乱方格顺序得到仿真结构缺陷图片。将与缺陷蒙板点乘得到仿真缺陷图片。为了使仿真图片更加接近真实图片,采用系数具体公式如下,其中δ表示用来平衡融合图片和噪声图片的透明度权重,实际训练中δ从[0.15,1]中随机采样得到。



步骤三将蒙版与原图进行融合得到最终仿真制造“缺陷”样本具体步骤:将缺陷蒙版取反得到正常蒙版,然后将与原图点乘,叠加上缺陷图片即获得


记忆模块



人类区分缺陷部位的方法是通过将异常区域与人脑中的正常区域进行比对。受此思想和之前基于嵌入的方法启发,MemSeg作者在缺陷检测中引入了记忆模块。

具体操作为采用一个预训练模型(Resnet18)作为特征编码器,提取正常样本的高维特征,当做记忆信息。为了保证在训练后提取的高维特征与记忆信息具有一致性,作者在训练过程中冻结了ResNet18中各个层的参数,而其余的模型参数是可训练的。在训练过程中随机挑选N个正常样本,将图像输入预训练模型中,从block 1、block 2和block 3中取出相应特征,维度分别为N×64×64×64、N×128×32×32和N×256×16×16,这些不同分辨率的特征一起组成了记忆信息。在推理阶段,编码器同样抽取输入图像的64×64×64、 128×32×32,和256×16×16的高维特征,记为。然后计算每个的L2距离,用来度量输入图片与记忆信息的差异,取其中最大的记为即为与当前样本差异最大的正常样本,能够最大化描述缺陷信息。


然后将对应分辨率的特征高维特征拼接,得到,这些特征用来送入解码器检测缺陷信息。MemSeg选用U-Net作为解码器,对应的跨层连接的输入特征。



这里属于训练超参数,MemSeg作者通过实验发现,当逐渐扩大时,模型缺陷检测的效果越好,但是随着变得过大,准确率开始下降,表明这个超参数需要适配应用场景,MemSeg作者在最后总结该算法缺陷时也提到了这一点。


多尺度特征融合模块



融合后的(n = 1,2,3) 首先通过一个3×3卷积降维,由于是通过简单特征拼接得到,通过CA(coordinate attention)模块进行通道间的注意力加权,然后通过常规的上采样操作将不同尺度特征分辨率对齐,通过一个3×3卷积将不同尺度特征通道数对齐,采用对应元素相加进行融合。


空间注意力块



为了使模型更加关注缺陷区域,采用空间注意力模块对空间进行特征加权,具体操作:为对应特征按通道取平均获得,而在对通道取平均后,还要点乘上上一层注意力图上采样后的结果。以下公式表示上述过程,其中分别表示对应特征的通道数,表示点乘操作,分别表示上一层的显著图通过上采样得到的特征图。



Loss选择


作者选择了L1 loss和和focal loss来进行训练。L1 loss相比L2 loss能够更加关注边缘信息,focal loss能够解决前景背景比例不均衡问题,同时能够更加关注困难样本。消融实验表示二者相结合能提升缺陷检测准确率,优化的最终目标就是最小化二者的加权和。



具体公式:


其中是平衡参数,是focalloss对应的超参数,作者通过网格搜索获得最优超参数=0.6和=0.4,=0.4。


实验结果



定性分析方面,将MemSeg与已有方法在MVTec AD数据集上进行对比,对比二值化之前的检测结果,发现MemSeg方法能够获得更加清晰的判断边界,说明模型可以更加准确地关注缺陷位置。定量分析方面,在MVTec AD数据集上MemSeg的像素级别的AUC得分高达99.56%,高于现有方法,证明了MemSeg方法的准确性。推理速度方面,受益于端到端的应用模式,MemSeg在NVIDIA RTX 3090 GPU上速度为0.0319s,在推理速度上与之前方法相比也有较大优势。


不足之处


MemSeg作者同时也分析了MemSeg方法的缺点,即比较依赖于记忆样本。MemSeg对于记忆样本中工件摆放的位置朝向比较敏感。比如数据集中的螺丝钉这一类别,由于朝向不同、摆放位置不固定,导致需要更多的记忆样本来使模型记住正常模式信息,使MemSeg在实际应用中对使用场景提出了更高的要求与更严格的限制。


作者:安宇

适创科技视觉与优化产品部,图像算法工程师,主要关注深度学习技术中的目标检测、语义分割方向,现从事ADR缺陷检测系统中的相关项目研发工作。

编辑:田恒易


参考文献

[1] O. Ronneberger, P. Fischer, and T. Brox, “U-net: convolutional networks for biomedical image segmentation,” In: International Conference on Medical image computing and computer-assisted intervention, pp. 234-241, 2015.

[2] K. Perlin, “An image synthesizer,” ACM Siggraph Computer Graphics, vol. 19, no. 3, pp. 287–296, 1985.

[3] M. Cimpoi, S. Maji, I. Kokkinos, S. Mohamed, and A. Vedaldi, “Describing textures in the wild,” In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 3606–3613, 2014.

[4] Q. Hou, D. Zhou, and J. Feng, “Coordinate attention for efficient mobile network design,” In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pp. 13713-13722, 2021.

[5] T. Y. Lin, P. Goyal, R. Girshick, K. He, and P. Dollár, “Focal loss for dense object detection,” In: Proceedings of the IEEE international conference on computer vision, pp. 2980-2988, 2017.

[6] P. Bergmann, M. Fauser, D. Sattlegger, and C. Steger, “MVTec AD-a comprehensive real-world dataset for unsupervised anomaly detection,”

In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pp. 9592-9600, 2019.

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码