ICLR 23 | 工业视觉小样本异常检测最新网络:Graphcore

news2024/10/6 10:32:32

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

论文链接:https://openreview.net/pdf?id=xzmqxHdZAwO

论文代码:尚未开源

1.背景

随着人工智能中深度视觉检测技术的快速发展,检测工业产品表面的异常/缺陷受到了前所未有的关注。生产转换是指将生产线或机器从加工一种产品转换为另一种产品。由于检测设备在生产线启动后还没有完全微调,因此这样的转换经常导致异常检测性能不令人满意。如何在转换场景中实现工业产品模型的快速训练,同时确保准确的异常检测,是实际生产过程中的一个关键问题。

AD在行业中的现状如下:

(1)就检测精度而言,在转换过程中,最先进的AD模型的性能急剧下降。当前的主流工作利用大量的训练数据作为输入来训练模型,如图(a)所示。然而,这将使数据收集具有挑战性,即使对于无监督的学习也是如此。因此,已经提出了许多以精度为代价的基于少镜头学习的方法。例如元学习,如图(b)所示。但由于设置复杂,在切换过程中无法灵活迁移到新产品,检测精度无法保证。

(2)在模型训练速度方面,当大量数据用于训练时,实际生产线上新产品的训练进度会放缓。众所周知,原始的无监督范式需要收集大量信息。尽管元学习在小样本学习中有效,如(b)所示,但仍有必要训练之前收集的大量的数据。

2.本文主要贡献

基于对以上问题的考虑,我们的目标是在生产转换过程中处理生产线的冷启动。如图(c)所示,开发了一种新的FSAD方法,称为GraphCore,该方法使用少量正常样本来实现新产品的快速训练和有竞争力的AD精度性能。一方面,通过利用少量数据,我们可以快速训练并加快异常推理的速度。另一方面,因为我们直接训练新产品样本,所以不会发生从旧产品到新产品的异常适应和迁移。

  • 提出了一种用于 FSAD 的特征增强方法,以研究 CNN 生成的视觉特征的特性。

  • 提出了一种新颖的异常检测模型 GraphCore,将新的 VIIF 添加到基于内存库的 AD 范例中,这可以大大减少冗余视觉特征的数量。

  • 实验结果表明,所提出的 VIIF 是有效的,可以显着提高 FSAD 在 MVTec AD 和 MPDD 数据集上的性能。

3.方法简介

问题设置。 图 (c) 概述了所提出的 FSAD 问题设置的正式定义。训练过程仅包含来自特定类别的 n 个正常样本的训练集,其中 n ≤ 8。在测试时,对于给定目标类别中的正常或异常样本,异常检测模型应预测图像是否异常,如果预测结果异常,则定位异常区域。

挑战。 对于提出的 FSAD,我们尝试仅使用少量正常图像作为训练数据集来检测测试样本中的异常。主要挑战包括:(1)每个类别的训练数据集仅包含正常样本,即没有图像或像素级别的注释。 (2) 可用的训练集正态样本很少。在我们提出的设置中,训练样本少于 8 个。

动机。 在真实的工业图像数据集中,某些类别下的图像极其相似。它们中的大多数都可以通过简单的数据增强相互转换,例如螺母和螺钉。例如,旋转增强可以有效地提供新的螺旋数据集。因此,当面临上述的挑战时,我们自然倾向于通过数据扩充获取额外的数据。然后,特征存储库可以存储更多有用的特征。

4.方法细节

4.1数据增强+PATCHCORE

为了验证我们的洞察力,已将 PatchCore应用到我们的模型中。我们将 PatchCore 的增强(旋转)表示为 Aug.(R)。该架构在图2中进行了详细描述。在从 ImageNet 预训练模型中提取特征之前,会进行数据扩充(例如,旋转)。

对于PatchCore 的增强(旋转): Aug.(R)

4.2视觉等距不变特征

在4.1 中,作者启发式地证明数据增强+PatchCore 在提出的少样本异常检测上下文中优于 SOTA 模型。本质上,数据增强方法立即将正常样本的特征合并到记忆库中。换句话说,数据增强+PatchCore 提高了定位子集特征的概率,使得测试图像的异常分数可以更精确地计算。因此,作者质疑是否可以从少量正常样本中提取出不变的表征特征,并将其添加到特征记忆库中。如下图所示,作者提出了一种新的特征提取模型:视觉等距不变图神经网络 (VIIG)。所提出的模型尝试从正常样本的每个补丁中提取视觉等距不变特征 (VIIF)。如前所述,大多数工业视觉异常检测数据集都可以通过旋转、平移和翻转进行转换。因此,GNN 的同构性非常适合工业视觉异常检测

4.3图像的图(Graph)表示

下图显示了 GraphCore 的特征提取过程。具体来说,对于尺寸为 H×W×3 的普通样本图像,我们将其均匀地分成 N 个 patch。此外,每个补丁都被转换成一个特征向量 fi ∈ RD。所以我们有特征 F = [f1, f2, · · · , fN],其中 D 是特征维度,i = 1, 2, · · · , N。我们将这些特征视为无序节点 V = {v1, v2,···,vN}。对于某些每个节点 vi,我们 K 个最近邻表示 N (vi) 并为所有 vj ∈ N (vi) 添加一条从 vj 指向 vi 的边 eij。因此,每个正态样本块可以表示为图 G = (V, E)。 E指代图G的所有边。

4.4图特征处理

上图显示了所提出的视觉等距不变 GNN 的架构。具体来说,我们将特征提取设置为 GCN。通过与其邻居节点交换信息来聚合每个节点的特征。特征提取操作如下:

其中 Waggregate 和 Wupdate 表示聚合和更新操作的权重。它们都可以以端到端的方式进行优化。具体来说,每个节点的聚合操作是通过聚合相邻节点的特征来计算的:

其中h是节点特征更新函数,g是节点特征聚合特征函数。N (f li ) 表示第 l 层的 f li 的邻居节点集。具体来说,我们采用最大相对图卷积作为运算符。所以g和h定义为:

在等式 3 和 4 中,g(·) 是一个最大池化顶点特征聚合器,它聚合了节点 vi 与其所有邻居之间的特征差异。 h(·) 是具有批量归一化和 ReLU 激活的 MLP 层。

4.5 GraphCore结构

结构如下图。在训练阶段,GraphCore与Augmentation+PatchCore最显着的区别在于特征记忆库构建算法。特征构建算法同算法1:Aug.(R) memory bank。请注意,我们在没有数据增强的情况下使用视觉等距不变 GNN 作为特征提取器 P。在测试阶段,GraphCore 异常分数 s* 的计算与 Augmentation + PatchCore 中的非常相似。唯一的区别是每个正常补丁样本的特征提取方法。 GraphCore 的结构细节显示在下表21 中。

4.6 数据增强+PATCHCORE 和 GRAPHCORE 的统一视图

下图展示了 Augmentation+PatchCore 和 GraphCore 的统一视图。 Augmentation+PatchCore提示GraphCore获取等距不变特征。因此,GraphCore 可以提高定位特征子集的概率,从而可以最准确、最快速地计算出测试图像的异常分数。表 1 显示了 PatchCore、Augmentation+PatchCore 和 GraphCore 在架构细节方面的差异。

5.实验结果

GraphCore VS Augmentation+PatchCore VS RegAD 不同样本量下的结果 (K):

FSAD 在 MVTec AD 和 MPDD 上所有类别的平均结果。采样率为0.01,x|y分别代表图像AUROC和像素AUROC。 表现最佳的方法以粗体显示。

FSAD 在 MVTec AD 上的结果。样本量K=2,采样率为0.01,x|y分别表示图像AUROC和像素AUROC。表现最佳的方法以粗体显示。

FSAD在MPDD上的结果。样本量K=2,采样率为0.01,x|y分别表示图像AUROC和像素AUROC。表现最佳的方法以粗体显示。

提出的方法在 MVTec AD 和 MPDD 上的可视化结果。

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

回复“异常检测”获取全部论文PDF合集

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scratch lenet(11): C语言实现 squashing function

文章目录 1. 目的2. Sigmoidal Function2.1 S2 用到 Sigmoidal Function2.2 Sigmoidal Function 的定义 3. Squashing Function3.1 改用 Sigmoid Suahsing function 术语3.2 具体到 hyperlolic tangent 这一 squahsing function 4. Squahsing function 的实现References 1. 目的…

设计模式之观察者模式笔记

设计模式之观察者模式笔记 说明Observer(观察者)目录观察者模式示例类图抽象主题角色类抽象观察者类具体主题角色类具体的观察者角色类测试类 说明 记录下学习设计模式-观察者模式的写法。JDK使用版本为1.8版本。 Observer(观察者) 意图:定义对象间的一种一对多的依赖关系&a…

Gradle构建系统macOS安装与使用

1.打开gradle.org并点击安装 2.先决条件 ,确认安装JDK1.8或者更高版本已安装 在终端输入brew install gradle进行安装 安装成功如下: 查看安装版本号gradle -v 使用gradle 1.创建目录demo并进入该目录 mkdir demo cd demo 2.gradle init 使用Gradle开始构建 输入2开始构建应…

DevOps系列文章之 docker插件实现多实例部署(IDEA插件)

1. Docker的安装以及开启远程访问 1.1 安装 # 检查虚拟机内核版本,必须是3.10及以上 uname -r # 安装docker yum install docker # 输入y确认安装 # 启动docker systemctl start docker # 查看docker版本 docker -v # 开机启动docker systemctl enable docker # 停…

Golang学习日志 ━━ gin-vue-admin换机重新配置的记录,很愚蠢,很傻瓜,很机械...自己使用

最近一直在弄AI,没时间搞gva,所以有点忘记了,代码升级管它呢,全部重来一遍~ 一、备份保存 根据经验和个人喜好,我特别不喜欢在框架下把一个应用分散在module、api、service等等目录下,这种目录分配方案将把…

图上作业法

目录 交通示意图的表示方法 图上作业法 (1)对流 (2)迂回 物资调运问题的图上作业法 交通路线不成圈 交通路线成圈 交通示意图的表示方法 交通示意图是用来表明收发点的大致位置、收发量、交通路线长度的图形。 图形表示…

java mail发送、接收邮件

java mail接收邮件 1、引入java mail依赖 <dependency><groupId>org.eclipse.angus</groupId><artifactId>angus-mail</artifactId><version>2.0.2</version> </dependency>2、编写代码 注意&#xff1a;下述代码中的服务器…

从BNO055传感器获取IMU数据-2

在前面的文章 从BNO055传感器获取IMU数据-1 中介绍了BNO055传感器&#xff0c;今天继续讲解应用示例。 传感器与Arduino接口 我从某宝购买了固定在带有支持组件的开发板上的 BNO055 传感器。从 Digi-Key 或贸泽购买 BNO055 并将其焊接到 7.54.4mm 28 引脚 LGA 至 DIP 转换器上…

Groovy基础

Groovy基础 学Groovy有什么用&#xff1f;&#xff1f;&#xff1f;一、Groovy简介二、Mac安装Groovy1、使用homebrew安装或官网下载2、配置环境变量3、重新加载环境变量 二、Groov基本语法三、更多特性和扩展四、Groovy简单使用1、Groovy中的字符串及三大语句结构2、Groovy类与…

1带你入门MATLAB图像处理图像类型转换(附matlab程序)

1.简述 学习目标&#xff1a; 图像类型的转换 常用图像格式 图像格式&#xff1a;是存储图像采用的文件格式。不同的操作系统、不同的图像处理软件&#xff0c;所支持的图像格式都有可能不同。 在实际应用中经常会遇到的图像格式有&#xff1a;BMP、GIF、TIFF、PCX、JPEG、P…

FFmpeg5.0源码阅读——avformat_open_input

摘要&#xff1a;本文主要描述了FFmpeg中用于打开文件接口avformat_open_input的具体调用流程&#xff0c;详细描述了该接口被调用时所作的具体工作。   关键字&#xff1a;ffmpeg、avformat_open_input   注意&#xff1a;读者需要了解FFmpeg的基本使用流程&#xff0c;以…

力扣动态规划专题(五)子序列问题 不连续子序列与连续子序列 步骤及C++实现

文章目录 300.最长递增子序列674.最长连续递增子序列动态规划贪心算法 718. 最长重复子数组二维dp数组一维dp数组 1143.最长公共子序列1035.不相交的线53. 最大子序和动态规划贪心算法 300.最长递增子序列 步骤 确定dp数组以及下标的含义 dp[i]&#xff1a;i之前&#xff08;包…

【数据结构】单链表 创建 插入 删除 查找 完整代码

3.1 单链表 3.1.1 定义 注&#xff1a; 元素离散的分布在存储空间中&#xff0c;所以单链表是非随机存取的存储结构。 即不能直接找到表中某个特定的结点&#xff0c;需要从表头开始遍历&#xff0c;依次查找。 定义的代码 typedef struct LNode {ElemType data;//每个节点存放…

第三章 处理机调度与死锁

目录 一、调度的概念、层次 2.1 调度的基本概念 2.2 调度的三个层次 2.2.1 高级调度 2.2.2 低级调度 2.2.3 中级调度 2.2.3.1 进程的挂起态 2.2.4 三层调度的联系、对比 二、进程调度的时机、切换与过程、方式 2.1 进程调度的时机 2.2 进程调度的方式 2.2.1 非抢占…

计网复习题

一、单项选择题 OSI参考模型的物理层负责&#xff08;&#xff09;。 A&#xff0e;格式化报文 B&#xff0e;为数据选择通过网络的路由(网络层) C&#xff0e;定义连接到介质的特性 D&#xff0e;提供远程文件访问能力(应用层) 下列选项中&#xff0c;不属于网络体系结构中所…

常用git操作总结

文章目录 一、git 分支命名规范&#xff08;1&#xff09;master 主分支&#xff08;2&#xff09;develop 开发分支&#xff08;3&#xff09;feature 分支&#xff08;一般简写为feat&#xff09;&#xff08;4&#xff09;hotfix 分支&#xff08;一般简写为fix&#xff09;…

如何用canvas实现一个富文本编辑器

富文本编辑器相信大家都用过&#xff0c;相关的开源项目也很多&#xff0c;虽然具体的实现不一样&#xff0c;但是大部分都是使用DOM实现的&#xff0c;但其实还有一种实现方式&#xff0c;那就是使用HTML5的canvas&#xff0c;本文会带大家使用canvas简单实现一个类似Word的富…

分布式系统学习第四天 fastcgi学习

目录 1. Nginx作为web服务器处理请求 2. http协议复习 3. fastCGI 3.1 CGI 3.3 fastCGI和spawn-fcgi安装 3.4 nginx && fastcgi 3.5我的总结 其他知识点 1. Nginx作为web服务器处理请求 nginx不能处理动态请求 因此把请求发送给fastCGI对动态请求进行处理 静态…

区块链基础之密码学及安全技术

1.2 密码学及安全技术 1.2.1 密码学知识 1.2.1.1 Hash函数 Hash(哈希) 哈希函数是一类数学函数&#xff0c;可以在有限合理的时间内&#xff0c;将任意长度的消息压缩为 固定长度的输出值&#xff0c;并且是不可逆的。其输出值称为哈希值&#xff0c;也称为散列值。 哈希算法…