Asymmetric Student-Teacher Networks for Industrial Anomaly Detection

news2024/12/23 5:45:40

用于工业异常检测的不对称学生-教师网络

  • 摘要
  • 介绍
  • 模型架构
    • 总体介绍:
    • 教师网络
    • 学生网络
  • 实验
  • 结论

时间:2022.10.14
期刊:WACV

之前师生网络结构的不足

  • 具有类似体系结构的学生网络,当输入不属于训练分布的数据时,它会推断出与教师类似的输出,给出低异常分数。
  • 也就是说师生网络结构相似时,在训练数据分布外的数据,学生网络会预测出错,即很大概率把异常数据预测为无缺陷的数据。
  • 解决:提出不对称的师生网络架构

前置知识:

  • 规范化流:一类生成模型,通过使用规范化流,可以将复杂的数据分布映射到一个已知的简单分布上,这样就可以实现从简单分布中采样来生成符合原始数据分布的样本。归一化流由多个后续仿射耦合块组成。
  • Real NVP使用了一系列的仿射耦合层(affine coupling layer),每一层都将输入数据分成两个部分:一个部分直接输出,另一个部分通过仿射变换来作为下一层的输入。
    这样的设计使得模型能够保持输入数据的维度不变,并且允许在训练过程中计算概率密度函数的导数。

我们基于Real NVP[15]训练归一化流,以将训练分布转换为正态分布N(0;I)。

摘要

文章贡献:

  • 我们的方法通过高度不对称的网络作为学生-教师对来避免从教师到学生的非期望的泛化。

  • 我们通过引入作为教师的双射规范化流来改进学生-教师网络

  • 通过利用师生距离,我们的AST优于教师的密度估计能力。

工业缺陷检测,一般使用异常检测的方法,它的可用数据集(带有缺陷的数据集)很少或不完整。

这项工作发现了AD的学生-教师方法中以前未知的问题,并提出了一种解决方案,即训练两个神经网络,为无缺陷的训练示例产生相同的输出。

师生网络的核心假设是,对于异常情况,两个网络的输出之间的距离更大,因为它们在训练中不存在。

然而,以前的方法存在学生和教师架构的相似性,因此对于异常情况,距离非常小,

因此,我们提出了非对称师生网络(AST)。

作为教师,我们训练一个用于密度估计的归一化流,作为学生,我们训练一个传统的前馈网络,以触发较大距离的异常:与正常数据相比,归一化流的双向性强制教师输出异常的差异。

在训练分布之外,由于其根本不同的架构,学生无法模仿这种差异。

我们的AST网络通过归一化流来补偿错误估计的可能性,该归一化流在以前的工作中被替换用于异常检测。

介绍

首先,教师在一个前置任务上接受训练,以学习语义嵌入。在第二步中,对学生进行训练,使其与老师的输出相匹配。

这样做的动机是,学生只能在正常数据上匹配教师的输出,因为学生只接受正常数据的训练。

学生和老师的输出之间的距离被用作测试时异常的指标。

假设与无缺陷的例子相比,有缺陷的例子的该距离更大。

之前存在的问题:具有类似体系结构的学生网络,当输入不属于训练分布的数据时,它会推断出与教师类似的输出,给出低异常分数。

内射性是指神经网络中节点与其他节点以及自身之间的连接关系,它在处理序列数据和记忆相关任务中起到重要作用。

通常,由于常见神经网络的内射性缺失,不能保证分布外的输入将导致两个输出的足够大的变化。

与规范化流相比,传统网络不能保证为分布外输入提供分布外输出。

这些问题促使我们使用不对称的师生对(AST):双射归一化流充当教师,而传统的序列模型充当学生

通过这种方式,教师保证对异常引起的输入变化敏感。此外,使用不同的体系结构,从而使用不同的可学习函数集,加强了分布外样本的远距离输出的影响。

**作为教师的前置任务,我们通过最大似然训练将图像特征和/或深度图的分布优化为正态分布,**这相当于密度估计。这种优化本身在之前的工作中被用于异常检测,利用可能性作为异常分数:正常的低可能性应该是异常的指标。然而,Le和Dinh已经表明,即使是完美的密度估计也不能保证异常检测。

我们表明,与教师获得的可能性相比,我们的师生距离是异常检测的更好度量。

使用归一化流本身进行异常检测的优点是,可以补偿可能的可能性估计错误:如果将正常的低可能性错误地分配给正常数据,则学生可以预测该输出,因此仍然会产生较小的异常分数。如果将正常的高可能性错误地分配给异常数据,则学生无法预测该输出,再次导致高异常分数。

通过这种方式,我们将师生网络和密度估计的好处与归一化流相结合。我们通过位置编码和使用3D图像掩蔽前景来进一步增强检测。

模型架构

在这里插入图片描述

总体介绍:

训练两个模型,一个学生模型fs和一个教师模型ft。
训练过程分为两个阶段:
首先,优化教师模型,通过归一化流将训练分布双射地转换为正态分布N(0;I)。
其次,通过最小化训练样本x∈ X的fs(x)和ft(x)之间的距离,优化学生以匹配教师输出。在测试时应用该距离进行异常评分,。
我们对输入图的空间维度使用正弦位置编码[50]作为归一化流ft的条件。这样,特征的出现与其位置有关,以检测异常。

教师网络

对于教师的规范化流架构,我们使用4个耦合块
输入:x是wXh的n维特征的特征映射,(先固定排列,再偶信道分割),在这些耦合块中,在随机选择保持固定的排列之后,输入x的通道沿着通道被均匀地分成部分x1和x2。这些部分中的每一个都与作为静态条件的位置编码c相连接。
在这里插入图片描述
其中,日是元素乘积,[…,…]表示串联,一个耦合块的输出是沿信道的Y1和Y2的级联。

X1和x2通过子网络SI和TI,来计算对应的,仿射变换和移位参数。
每对内部子网络si和ti被设计为具有一个隐藏层的一个浅卷积网络ri,该隐藏层的输出被划分为尺度分量和移位分量。
训练过程使用了伽马技巧等方法,通过优化均值来最小化负对数似然函数值。

学生网络

一个具有残差块的简单全卷积网络。
每个残差块由3×3卷积层的两个序列、批量归一化[25]和泄漏ReLU激活组成。我们添加卷积作为第一层和最后一层,以增加和减少特征维度。
与老师类似,学生将图像特征作为输入。
此外,位置编码c被级联。
在这里插入图片描述

输出维度与教师匹配,以实现逐像素的距离计算。
在给定训练集x的情况下,在输出的像素位置(i;j)处,我们最小化训练样本x∈ X上学生输出fs(x)和教师输出ft(x)之间的欧式距离的平方(放大差异)。

实验

  • MVTec AD[6]和MVTec 3D-AD
    对于这两个数据集,训练集只包含无缺陷数据,测试集包含无缺陷和有缺陷的示例。
    除了图像级标签外,数据集还提供了关于缺陷区域的像素级注释,我们使用这些注释来评估缺陷的分割。
    MVT2D,是一个高分辨率的2D RGB图像数据集,包含10个对象和5个纹理类别。测试集中总共有73种缺陷类型,例如,以各种尺寸和形状的位移、裂纹或划痕的形式出现。
    MVTec 3D-AD,我们称之为MVT3D,是一个非常新的3D数据集,包含10个类别的2D RGB图像和3D扫描。这些类别包括可变形和不可变形的物体,部分具有自然变化(例如桃和胡萝卜)。除了MVT2D中的缺陷类型之外,还存在只能从深度图中识别的缺陷,例如凹陷。
    我们使用在ImageNet[13]上预训练的EfficientNet-B5[47]的第36层输出作为特征提取器。该特征提取器在学生和教师网络的训练期间不被训练。
  • 教师网络
    对于教师的规范化流架构,我们使用4个耦合块,这些耦合块以具有32个通道的位置编码为条件。

每对内部子网络si和ti被设计为具有一个隐藏层的一个浅卷积网络ri,该隐藏层的输出被划分为尺度分量和移位分量。

在ri中,我们使用ReLU激活。

  • 学生网络

对于学生网络,我们使用n=4个残差卷积块。

同样,我们从老师那里接管了时期的数量和优化器参数。

与异常检测一样,我们通过计算接收器工作特性下的面积(AUROC)来评估我们的方法在图像级别上的性能。

为了在像素级测量异常的分割,我们在给定数据集中的地面实况掩码的情况下计算像素级的AUROC。
在这里插入图片描述表2显示了我们的方法的AUROC和之前检测15类MVT2D异常的工作,以及纹理、对象和所有类的平均值。

  • 实验结论
    我们在所有类别的平均检测AUROC上都设置了一个新的最先进的性能,将其略微提高到99.2%。
    在这些对象中,除了PatchCore[36]之外,我们以0.9%的相对较大的优势超过了以前的工作。
    特别是与两种学生-教师方法[7,51]相比,分别显著提高了6%和3.6%。
    此外,与当前最先进的密度估计器[22,39]的可能性相比,我们的师生距离显示出更好的异常指标,后者与我们的老师一样,是基于归一化流的。

结论

贡献:
1.不对称师生网络
2.引入规范化流改善网络
3.利用师生距离而不是密度估计,来优化模型

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

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

相关文章

前端 | (三)表单及HTML4收尾 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 文章目录 📚表单🐇基本结构🐇常用表单控件⭐️文本输入框⭐️密码输入框⭐️单选框⭐️复选框⭐️隐藏域⭐️提交按钮⭐️重置按钮⭐️普通按钮⭐…

【雕爷学编程】Arduino动手做(83)---模拟SG90舵机模块2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

一个Spring Session JDBC例子

Spring Session JDBC是Spring Session项目的一部分,它提供了一种将会话数据存储在关系型数据库中的方法。Spring Session是一个用于在分布式环境中管理和共享会话的解决方案,它允许您通过不同的会话存储后端(如内存、关系型数据库、NoSQL数据…

使用torch.nn包来构建神经网络

神经网络 可以使用torch.nn包来构建神经网络. 我们已经介绍了autograd包,nn包则依赖于autograd包来定义模型并对它们求导。一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 例如,下面这个神经网络可以对数字进行分类…

xss跨站脚本攻击总结

XSS(跨站脚本攻击) 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets )CSS的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当…

047、TiDB特性_TopSQL

TopSQL 之前 之前没有办法找单个TiKV Server的语句。只能查找整个集群的慢语句。 TopSQL之后 指定TiDB及TiKV实例正在执行的SQL语句CPU开销最多的Top 5 SQL每秒请求数、平均延迟等信息 TopSQL 使用 选择需要观察负载的具体TiDB Server或TiKV实例 观察Top 5 类SQL 查看某…

Linux 自动化构建工具(make/Makefile)

绪论 拼着一切代价,奔你的前程。——巴尔扎克. 本章继续学习Linux常用的工具,make是可以帮我们解决一些重复使用相同指令的冗杂的自动化构建工具。 话不多说安全带系好,发车啦(建议电脑观看)。 附:红色&…

TortoiseGit 入门指南08:浏览引用以及在引用间切换

在上一节 创建分支 中,我们学会了在分支上开发新功能,那么随之而来的问题是:如何查看项目又多少分支?如何再切换到主分支?这节来解决这些问题。 在回答之前,需要先了解一个 Git 术语:引用&…

学无止境·MySQL⑨(MongoDB)

MongoDB的安装及使用 MongoDB1、MongoDB的安装与启动2、创建一个数据库 名字grade3、数据库中创建一个集合名字 class4、集合中插入若干数据文档格式如下5、查找查看班级所有人信息查看班级中年龄为8岁的学生信息查看年龄大于10岁的学生信息查看年龄在 4---8岁之间的学生信息找…

接口测试之基于SaaS平台的iHRM项目的前端部署配置(踩坑版)

基于SaaS平台的iHRM项目的前端部署配置 下载安装node.js3.从Git上下载项目安装依赖包的改进方法 关于的部署可以参考基于SaaS平台的iHRM项目的前端部署教程博客 但本人在参考配置的过程中遇到了很多问题…于是写下这篇博客 下载安装node.js 可以访问https://nodejs.org/en下载…

利用Python绘制直方图和散点图

1 问题 利用python如何绘制直方图和散点图。 2 方法 # ------ 直方图import matplotlib.pyplot as pltimport numpy as npimport matplotlib# 设置matplotlib正常显示中文和负号matplotlib.rcParams[font.sans-serif] [SimHei] # 用黑体显示中文matplotlib.rcParams[axes.unic…

前端学习记录~2023.7.3~CSS杂记 Day4

前言一、溢出1. 默认情况2. overflow属性3. BFC 二、CSS 的值与单位1. 长度(1)绝对长度单位(2)相对长度单位 2、百分比3、数字4、颜色(1)颜色关键字(2)十六进制 RGB 值(3…

单片机第一季:零基础7——定时器和计时器

目录 1,单片机定时器原理 2,51单片机定时器/计数器结构 3,定时器配置 4,示例代码-通过定时器控制LED灯间隔1s闪烁 51 单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时…

JPA实现多对多关系

本文已收录于专栏 《Java》 目录 概念说明优势利弊实现方式通过两个ManyToMany注解实现类图代码 通过OneToMany和ManyToOne注解实现类图代码 总结提升 概念说明 多对多关系是指两个实体之间存在多对多的关联关系。在数据库中,多对多关系无法直接表示,需要…

javascript截取两个符号之间的字符串(2):lastIndexOf匹配和正则表达式匹配

lastIndexOf匹配和正则表达式匹配 项目需求1.规范的字符串2.不规范的字符串3-1.万能封装3-2.ChatGPT的优化写法4.正则表达式的用法5.补充知识:lastIndexOf的用法 项目需求 javascript中截取字符串中最后一个“/”和“?”之间的内容。 1.规范的字符串 https://tes…

100天精通Python(可视化篇)——第96天:Pyecharts绘制多种炫酷箱形图参数说明+代码实战

文章目录 专栏导读1. 箱形图介绍1)箱形图介绍2)怎么看箱型图?3)解释说明 2. 普通箱型图3. 水平箱型图4. 群组箱型图5. 带异常点的箱型图 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》&#…

Docker实战总结

Docker 官方文档地址:https://www.docker.com/get-started 中文参考手册:https://docker_practice.gitee.io/zh-cn/ 1.什么是 Docker 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are…

线性回归--波士顿房屋价格预测

一、波士顿房屋价格预测代码 import sysimport pandas as pd import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt import matplotlib as mpt from sklearn.model_selection import train_test_split##加载数据 datapd.re…

Druid工作原理

Druid工作原理-连接池初始化流程 标题 Druid工作原理-获取连接流程: 连接回收:

类定义练习

运行代码: //类定义练习 #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h" //定义类 class Person { private:string first_n…