CVPR 2023 | 基于金字塔模型的异常检测方法

news/2024/7/2 23:33:10

来源:投稿 作者:橡皮
编辑:学姐

论文链接:https://arxiv.org/pdf/2211.11317

0.背景:

工业异常检测旨在发现产品的异常区域,在工业质量检测中发挥着重要作用。在工业场景中,很容易获得大量的正常示例,但缺陷示例很少。

大多数现有的工业异常检测方法都是基于2D图像的。然而,在工业产品的质量检查中,人类检查员利用3D形状和颜色特征来确定它是否是缺陷产品,其中3D形状信息对于判断是重要和必要的。

无监督异常检测的核心思想是找出异常和正态表示之间的区别。目前2D工业异常检测方法可分为两类:

(1)基于重构的方法。图像重建任务被广泛用于异常检测方法中,以学习正常表示。基于重建的方法对于单模态输入(2D图像或3D点云)很容易实现。但对于多模态输入,很难找到重建目标。

(2) 基于预训练特征提取器的方法。利用特征提取器的直观方法是将提取的特征映射到正态分布,并将分布外的特征作为异常。

1.主要贡献:

  • 提出了一种去噪学生编码器-解码器,它经过训练,可以从具有异常输入的教师那里显式地生成不同的特征表示。

  • 使用分割网络来自适应地融合多级特征相似性,以取代经验推理方法。

  • 在基准数据集上进行了广泛的实验,以证明我们的方法对各种任务的有效性。

2.网络介绍: DeSTSeg

在训练期间生成并使用合成的异常图像。在第一步骤(a)中,训练具有合成输入的学生网络,以从干净的图像生成与教师网络类似的特征表示。在第二步(b)中,学生和教师网络的归一化输出的元素乘积被级联并用于训练分割网络。分割输出是预测的异常得分图。

3.方法细节:原理概览

  • 所提出的 DeSTSeg 由三个主要组件组成:预先训练的教师网络、去噪的学生网络和分割网络。

  • 将合成异常引入到正常训练图像中,并分两步训练模型。

  • 在第一步中,模拟的异常图像被用作学生网络的输入,而原始的干净图像被用作教师网络的输入。教师网络的权重是固定的,但用于去噪的学生网络是可训练的。

  • 在第二步中,学生模型也是固定的。学生网络和教师网络都以合成的异常图像作为输入,以优化分割网络中的参数来定位异常区域。

  • 为了推断,以端到端模式生成像素级异常图,并且可以通过后处理来计算相应的图像级异常分数。

3.1方法细节: Synthetic Anomaly Generation 合成异常生成

我们模型的训练依赖于使用 [Draem] 中提出的相同算法生成的合成异常图像。生成随机二维Perlin噪声,并通过预设阈值进行二值化以获得异常掩模 M。通过用无异常图像I_n和来自外部数据源A的任意图像的线性组合替换掩模区域来生成异常图像I_a,其中不透明度因子β在[0.15,1]之间随机选择:

\odot表示逐元素乘法运算。异常生成在训练期间在线执行。通过使用该算法,介绍了三个优点。

首先,与绘制矩形异常掩模相比,随机Perlin噪声生成的异常掩模更不规则,与实际异常形状相似。 其次,用作异常内容A的图像可以在没有精心选择的情况下任意选择。 第三,引入不透明度因子β可以被视为数据扩充,以有效增加训练集的多样性。

3.2方法细节:Denoising Student-Teacher Network 去噪教师学生网络

在以前的多层次知识蒸馏方法中,学生网络(正常图像)的输入与教师网络的输入相同,学生网络的架构也是如此。然而,提出的去噪学生网络和教师网络以成对的异常和正常图像作为输入,去噪学生网络具有不同的编码器-编码器架构。在接下来的两段中,我们将研究这种设计的动机。

首先,建立优化目标,以鼓励学生网络生成不同于教师的异常特定特征。我们进一步赋予学生网络一个更直接的目标:在教师网络监督的异常区域上建立正常特征表示。由于教师网络是在大型数据集上预先训练的,它可以在正常和异常区域生成判别特征表示。因此,在推理过程中,去噪学生网络将生成与教师网络不同的特征表示。其次,考虑到特征重建任务,得出结论,学生网络不应该复制教师网络的架构。考虑到重建早期层的特征的过程,众所周知,CNN的较低层捕获局部信息,如纹理和颜色。相反,CNN的上层表达全局语义信息。

我们采用它作为去噪学生网络的架构。有一种替代方法可以使用教师网络作为编码器,并将学生网络反向作为解码器;初步实验结果表明,完整的编码器-解码器学生网络性能更好。一种可能的解释是,预先训练的教师网络通常在ImageNet上进行分类任务训练;因此,最后一层中的编码特征缺乏足够的信息来重建所有级别的特征表示。

3.3方法细节:Segmentation Network 分割网络

实验结果:

关注下方《学姐带你玩AI》🚀🚀🚀

回复“500”获取AI必读论文合集

码字不易,欢迎大家点赞评论收藏!


http://lihuaxi.xjx100.cn/news/1241534.html

相关文章

力扣 1483. 树节点的第 K 个祖先

力扣 1483. 树节点的第 K 个祖先 题目地址:https://leetcode.cn/problems/kth-ancestor-of-a-tree-node/ 暴力查找(超时)哈希查找(超空间)树上倍增 预处理 ancestor 数组记录了第 i 个 node 的倍增祖先&#xff0c…

Linux系统实现虚拟内存教程

Linux系统实现虚拟内存有两种方法:交换分区(swap分区)和交换文件, 一、交换文件 查看内存:free -m , -m是显示单位为MB,-g单位GB free -g 创建一个文件:touch命令用于修改…

Redis6之数据类型

常见数据类型 String字符串 简介 String是最基本的数据类型&#xff0c;是二进制安全的&#xff0c;一个key对应一个value 常用命令 1.set <key> <value> :添加键值对 2.get <key>&#xff1a;查询对应键值对 3.append <key> <value>&#xf…

微信小程序开发大坑盘点

微信小程序开发大坑盘点 起因 前几天心血来潮&#xff0c;想给学校设计个一站式校园小程序&#xff0c;可以查询成绩&#xff0c;考试信息&#xff0c;课表之类的&#xff08;本来想法里是还想包括一些社交功能的&#xff0c;但这个因为资质问题暂且搁置了&#xff09;。其实…

pandas---数据合并(concat、append、merge)

1. concat函数 pd.concat([data1, data2], axis1) 按照行或列进行合并&#xff0c;axis0为列索引&#xff0c;axis1为行索引。 df1 make_df([1, 2], [A, B]) df2 make_df([3, 4], [A, B]) display(df1, df2) # 默认上下合并&#xff0c;垂直合并 pd.concat([df1, df2]) …

RabbitMq消息堆积问题及惰性队列

消息堆积问题 当生产者发送消息的速度超过了消费者处理的速度&#xff0c;就会导致队列的消息堆积&#xff0c;知道队列存储消息达到上限。最早接受的消息&#xff0c;可能就会成为死信&#xff0c;会被丢弃&#xff0c;这就是消息堆积问题。 解决消费对接问题 1.增加更多的消…

希尔贝壳邀您参加2023深圳国际人工智能展览会

2023深圳国际人工智能展览会“AIE”将于2023年5月16-18日在深圳国际会展中心 (宝安)举办&#xff0c;希尔贝壳受邀参加&#xff0c;展位号&#xff1a;A331。 伴随着智能行业的快速发展&#xff0c;展会已被越来越多的企业列入每年必选展会&#xff0c;也成为各采购商选购的理…

Android-MTK平台功能需求解决:客户电池NTC功能(高低温报警功能)--第2天分析与解决

一、进一步修改代码内容-过程 今日了解到&#xff0c;昨日所修改的kernel层的mtk_charger.h文件位于A13部分&#xff0c;然6769平台A13部分的kernel层不参与编译&#xff0c;那么修改后再编译等等后续操作验证结果自然无效&#xff0c;参与编译kernel层是A12部分的kernel-4.19…