Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读

Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读

  • 摘要
  • 简介
  • 方法
    • 3.1 Normal Representation
    • 3.2 Feature Refinement
    • 3.3 Training and Inference
  • 4 实验结果
  • 5 总结

文章信息:
在这里插入图片描述
原文链接:https://arxiv.org/abs/2402.18293
源码地址:https://github.com/laozhanger/GRAD

摘要

最近在无监督方式下,异常检测领域取得了重大进展,其中仅有正常图像用于训练。几种最新的方法旨在基于记忆检测异常,通过比较输入和直接存储的正常特征(或使用正常图像训练的特征)。然而,这种基于记忆的方法在离散特征空间上操作,通过最近邻或注意机制实现,存在泛化能力差或者输出与输入相同的身份捷径问题。此外,现有方法中大部分设计用于检测单一类别的异常,当面对多类别对象时性能不理想。为了解决上述所有挑战,

我们提出了GRAD,一种新颖的异常检测方法,用于在“连续”特征空间中表示正常特征,通过将空间特征转换为坐标并将其映射到连续网格来实现。

此外,我们精心设计了专为异常检测定制的网格,有效表示局部和全局正常特征,并有效地融合它们。

我们的大量实验证明,GRAD成功地泛化了正常特征并减轻了身份捷径问题,此外,由于高粒度全局表示,GRAD有效地处理了单一模型中的多样类别。

在使用MVTec AD数据集进行评估时,GRAD在多类别统一异常检测方面减少了65.0%的错误,显著优于先前的最先进方法。项目页面位于 https://tae-mo.github.io/grad/。
在这里插入图片描述

简介

在这项工作中,作者提出了将网格表示结合到异常检测中以实现高性能。

主要贡献:通过将离散特征存储替换为连续网格来表示正常特征,从而解决了上述讨论的挑战性问题,并实现了高性能。

方法

在这里插入图片描述

Background.为了帮助读者理解GRAD,我们首先描述了网格操作。网格被训练为坐标的函数,具有无限分辨率,输出与坐标对应的特征。无限分辨率下的输出特征是通过网格中附近特征的聚合得到的,基于输入坐标和相邻特征之间的距离。例如,当我们进行一维网格采样 ϕ ( ⋅ ; G ) : R → R C ϕ(·; G) : \mathbb{R} → \mathbb{R}^C ϕ(⋅;G):RRC 时,具有C个通道的输出特征是通过一维网格 G ∈ R R × C G ∈ \mathbb{R}^{R×C} GRR×C 的相邻值进行插值得到的,数学上可以表示如下:
在这里插入图片描述
其中, v ∈ R v ∈ \mathbb{R} vR 是一个任意的输入坐标,被归一化为网格分辨率 R R R,而 G [ i G[i G[i] 表示来自网格 G G G 的索引 i i i 处的特征。 m m m n n n 是要参考的索引, ⌊ ⋅ ⌋ ⌊·⌋ ⌈ ⋅ ⌉ ⌈·⌉ 分别表示向下取整和向上取整操作。上述方程可以通过对D维网格的 2 D 值 2^D值 2D进行插值,简单地扩展到更高维度 D D D(例如,在图1( c )中的2D网格中的4个值)。
Overview.我们的工作动机是利用网格操作在连续空间中有效表示正常特征,与离散空间有所区别。以无监督的方式,GRAD基于输入特征和输出正常特征之间的差异来检测异常图像和区域,如图2(a)中所描述的。因此,GRAD的主要目标是有效地保留正常成分(例如,形状或纹理),同时消除特征内存在的任何异常。

为此,我们在训练阶段将正常特征表示为连续空间中的正常表示,这在测试阶段用于替换异常特征。我们描述了GRAD如何在连续空间中表示正常特征并获取输出特征 x ^ \hat{x} x^,基于从预训练骨干网络提取的输入特征 x x x,其中 x x x x ^ ∈ R C × H × W \hat{x} ∈ \mathbb{R}^{C×H×W} x^RC×H×W C 、 H 、 W C、H、W CHW 分别是特征的通道数、高度和宽度。

3.1 Normal Representation

GRAD的基本概念是将输入特征转换为连续值的特定坐标,然后将这些坐标映射到特征网格上。特别地,我们设计了从局部和全局视角表示正常特征。通过结合每个视角的独特特征,得到的特征可以提供对输入的强大表示,捕捉细粒度的细节以及更广泛的整体结构。
Local representation.
在这里插入图片描述

如图2(a)所示,GRAD对特征的每个像素进行采样,以表征图像的每个补丁,以表示局部特征。然后,通过具有1个卷积核大小的卷积层将每个像素的通道转换为相应的坐标(低维向量),然后进行双曲正切激活。利用这些逐像素的坐标,我们从局部网格表示中获取采样的正常特征。更正式地,我们定义一个函数 v l ( ⋅ ) : R C × H × W → R C l × H × W v^l(·) :\mathbb{R}^{C×H×W} → \mathbb{R}^{C_l×H×W} vl():RC×H×WRCl×H×W,根据输入特征生成逐像素的坐标,其中 C l C_l Cl是生成坐标的维度。给定逐像素的坐标 v h , w l ( ⋅ ) ∈ R C l v^l_{h,w}(·) ∈ \mathbb{R}^{C_l} vh,wl()RCl,从具有每个维度分辨率 R l R_l Rl和通道数 C C C C l C_l Cl维网格 G l G_l Gl中采样正常特征。局部表示 f l ( x ) : R C × H × W → R C × H × W f^l(x) : \mathbb{R}^{C×H×W} → \mathbb{R}^{C×H×W} fl(x):RC×H×WRC×H×W 的方程如下所示:
在这里插入图片描述
其中, ϕ ( ⋅ ; G l ): R C l → R C ϕ(·; G_l):\mathbb{R}^{C_l}→\mathbb{R}^C ϕ⋅;Gl):RClRC表示通过基于坐标对网格值进行双线性内插来从网格 G l G_l Gl采样特征。

由于特征的每个像素都表征图像中的一个补丁,局部表示确保保留正常补丁,并用具有相似局部上下文的正常补丁替换异常补丁。因此,当输入一个正常补丁时,即使在训练补丁中没有完全匹配的情况下,也可以通过插值映射到附近坐标的正常特征来表示相应的正常特征。

此外,对于异常补丁,GRAD基于减少的坐标找到一个最能代表异常补丁的正常特征。由于在训练过程中网格从未暴露于异常特征,它无法通过插值附近的正常特征来表示异常特征。这是我们如何有效解决现有方法中经常出现的基于注意机制聚合大量特征的相似性而产生的身份捷径(IS)问题的核心思想。

Global representation.异常区域不仅可能存在于图像的局部,还可能存在于全局范围内。为了处理这样的全局异常情况,GRAD维护另一个网格表示来捕获图像的全局特征。与局部表示类似,我们制定了一个函数来获取全局特征坐标 v g ( ⋅ ) : R C × H × W → R C g v^g(·) : \mathbb{R}^{C×H×W} → \mathbb{R}^{C_g} vg():RC×H×WRCg ,其中 C g C_g Cg是坐标的降维维度。对于函数 v g ( ⋅ ) v^g(·) vg(),我们采用了全局平均池化和线性层,如图2(a)所示。特征级的坐标通过具有每个维度分辨率 R g R_g Rg C g C_g Cg维网格 G g G_g Gg映射到每个正常特征。网格 G g G_g Gg的一个元素是一个 C H W CHW CHW维向量,一旦被采样,它就被重塑为 C × H × W C×H×W C×H×W张量。全局表示 f g ( x ) : R C × H × W → R C × H × W f^g(x) : \mathbb{R}^{C×H×W} → \mathbb{R}^{C×H×W} fg(x):RC×H×WRC×H×W的方程表示如下:
在这里插入图片描述

其中, ϕ ( ⋅ ; G g ): R C g → R C H W ϕ(·; G_g):\mathbb{R}^{C_g}→\mathbb{R}^{CHW} ϕ⋅;Gg):RCgRCHW表示通过双线性插值从网格 G g G_g Gg采样特征,并且 r e s h a p e ( ⋅ ): R C H W → R C × H × W reshape(·):\mathbb{R}^{CHW} → \mathbb{R}^{C×H×W} reshape):RCHWRC×H×W表示整形操作。
在这里插入图片描述

Fused representation.我们将局部和全局表示 f l ( x ) f_l(x) fl(x) f g ( x ) f_g(x) fg(x)组合起来,以有效地学习正常表示 f n ( x ) f_n(x) fn(x),如图2(a)所示。局部和全局表示被连接起来,然后被送入以下卷积网络 ψ ( ⋅ ) : R 2 C × H × W → R C × H × W ψ(·) : \mathbb{R}^{2C×H×W} → \mathbb{R}^{C×H×W} ψ():R2C×H×WRC×H×W来重构 f n ( x ) f_n(x) fn(x),如下所示:
在这里插入图片描述

其中, c o n c a t ( ⋅ , ⋅ ) concat(·, ·) concat(⋅,⋅)表示沿着通道轴拼接两个特征。通过融合局部和全局表示,GRAD可以从细粒度的细节到更广泛的上下文中表示正常特征,相比仅使用其中之一,可以获得更高的性能(见第4.4节中的消融研究)。

3.2 Feature Refinement

尽管局部和全局正常表示已经融合,但在 f n ( x ) f_n(x) fn(x) x x x之间仍然可能存在正常区域的偏差,这可能导致错误检测(即假阳性)。因此,在特征细化中,我们的目标是在应该是正常但与 x x x有偏差的区域中对 f n ( x ) f_n(x) fn(x)进行细化,以减少假阳性。为了识别这样的区域,我们通过结合均方误差(MSE)和余弦相似度评估 x x x f n ( x ) f_n(x) fn(x)之间的逐像素相似性。这两个指标提供了正常和异常特征之间差异的全面视角,其中 M S E MSE MSE捕捉绝对强度差异,而余弦相似度则表征结构和位置的相似性。通过考虑组合相似性 S ∈ R H × W S ∈ R^{H×W} SRH×W,我们可以重构 x ^ \hat{x} x^如下:
在这里插入图片描述
其中, h h h w w w是空间特征的索引, 1 [ ⋅ ] \mathbb{1}[·] 1[]是指示函数, m s e ( ⋅ , ⋅ ) mse(·, ·) mse(⋅,⋅) c o s i m ( ⋅ , ⋅ ) cosim(·, ·) cosim(⋅,⋅)分别是均方误差和余弦相似度。为了将MSE作为相似性的度量,我们根据其是否超过阈值k将MSE值转换为0或1。

3.3 Training and Inference

Coordinate jittering.为了实现更广义的网格表示,我们在训练阶段对局部坐标 v l ( x ) v_l(x) vl(x) 应用高斯噪声。例如,没有抖动时,在二维网格中,一个坐标影响最多四个网格值,如图2(b)所示。相比之下,当扰动坐标时,我们可以在每次迭代中使用钟形分布更新更多的网格值,从而产生更广义的网格。
在这里插入图片描述

Training.
给定 x x x和GRAD导出 x ^ \hat{x} x^,我们采用MSE损失作为目标函数,如下所示:
在这里插入图片描述
根据公式(7),我们以端到端的方式学习整个模型,包括由Xavier正态初始化[12]初始化的网格。由于在训练阶段 x x x始终是正常输入,因此网格被学习用于表示正常特征。
Inference.
为了通过 x x x x ^ \hat{x} x^之间的差异进行异常检测和定位,我们制定了异常分数图 d ∈ R H × W d ∈ \mathbb{R}^{H×W} dRH×W如下所示:

在这里插入图片描述
其中, h h h w w w表示每个像素的位置。为了与相应的真实情况相匹配, d d d被插值到输入的原始形状中。通过从平均池化的 d d d中取最大值,可以获得每个图像的异常分数,并且插值后的异常图本身用于像素级异常分数。

4 实验结果

异常检测
在这里插入图片描述
异常定位
在这里插入图片描述

5 总结

在这项工作中,作者提出了一种新颖的异常检测架构,名为GRAD,它在连续空间中表示正常特征,与之前局限于离散空间的方法不同。GRAD成功地在连续空间中表示了局部和全局特征,同时克服了现有方法的诸多局限,如泛化能力弱、身份捷径、计算复杂度和参数效率等。通过大量实验,作者定性和定量地展示了GRAD的有效性。通过特征细化和坐标抖动,GRAD取得了显著优势的最先进性能。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二、IO接口时序分析基本原理和意义

前言:前面内容介绍了时序分析的基本原理,着重学习了芯片内部的两级寄存器之间的时序分析模型,本篇内容针对IO部分的时序分析模型展开讨论讲解。 文章目录 一、IO接口时序分析的基本模型(源同步)二、INPUT DELAY 时序分…

java-ssm-jsp-宠物护理预定系统

java-ssm-jsp-宠物护理预定系统 获取源码——》公主号:计算机专业毕设大全

Vue开发实例(一)Vue环境搭建第一个项目

Vue环境搭建&第一个项目 一、环境搭建二、安装Vue脚手架三、创建Vue项目 一、环境搭建 下载方式从官网下载:http://nodejs.cn/download/ 建议下载v12.16.0版本以上的,因为版本低无法创建Vue的脚手架 检验是否安装成功 配置环境变量 新增NODE_HOME&…

数据结构——Top-k问题

Top-k问题 方法一:堆排序(升序)(时间复杂度O(N*logN))向上调整建堆(时间复杂度:O(N * logN) )向下调整建堆(时间复杂度:O(N) )堆排序代码 方法二&…

怎么优雅地访问ChatGPT

ChatGPT,这颗璀璨的智能结晶,在2022年岁末之际,由OpenAI实验室倾力铸就,犹如夜空中跃动的智慧星辰,点亮了人工智能领域的新纪元。犹如汪洋中的一座灯塔,ChatGPT以其独特的智慧光辉引人注目,然而…

SPA首屏加载慢的优化方案

1、什么是首屏加载? 首屏加载时间主要看FCP(First Contentful Paint)这个指标,它指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容 首…

运筹学_1.2线性规划问题的几何意义

1.2线性规划问题的几何意义 一、凸集的基本概念二、由线性规划问题的几何意义、定理得出的几点结论三、引出单纯形法的解题步骤 一、凸集的基本概念 通俗来说,一个图形上任意两个点的连线上的点全部存在于这个图形中 二、由线性规划问题的几何意义、定理得出的几点结…

基于springboot+vue的流浪宠物管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Ubuntu将c++编译成.so文件并测试

一、准备cpp和h文件 创建test.cpp 在cpp中定义相加的函数funcAdd&#xff0c;给出函数的细节代码 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }创建test.h 在h中声明定义的函数&#xff0c;不需要任何细节 #ifndef __TEST__ #…

李沐动手学习深度学习——4.2练习

1. 在所有其他参数保持不变的情况下&#xff0c;更改超参数num_hiddens的值&#xff0c;并查看此超参数的变化对结果有何影响。确定此超参数的最佳值。 通过改变隐藏层的数量&#xff0c;导致就是函数拟合复杂度下降&#xff0c;隐藏层过多可能导致过拟合&#xff0c;而过少导…

Java项目:31 基于SSM的勤工俭学管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 勤工助学系统有管理员&#xff0c;部门管理员&#xff0c;用户三个角色。 管理员功能有个人中心。管理员管理&#xff0c;部门管理员管理&…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:Popup控制)

给组件绑定popup弹窗&#xff0c;并设置弹窗内容&#xff0c;交互逻辑和显示状态。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 popup弹窗的显示状态在onStateChange事件回调中反馈&#xff0c;其显…