CVPR 23 | 高分辨率缺陷异常定位新范式:PyramidFlow

news2024/11/23 9:01:24

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

论文链接:https://arxiv.org/abs/2303.02595

论文代码:暂未发布

0. 背景

由于复杂的工业制造过程中的不可控因素,不可避免地会给产品带来不可预见的缺陷。由于人类视觉系统具有感知异常的固有能力[25],质量控制长期依赖人工检查。

然而,大规模图像和微小缺陷对人工检测来说是一项挑战,因此越来越多的研究集中在自动化机器视觉检测上。在所有方法中,有监督的深度学习取得了巨大的成功。它依靠带注释的数据集来学习判别特征,有效地克服了手工制作的缺点。然而,由于负样本不足、对标签的高要求以及缺乏先验知识,这些基于监督学习的方法在识别实践中可能会遇到看不见的缺陷。

图 1. 各种异常定位方法的图示。 (a) 基于重建的方法。 (b) 基于异常的方法,其中 NF 表示归一化流。 (c) 提出的 PyramidFlow 结合了潜在模板和归一化流,可实现高分辨率定位。

最近,无监督方法已应用于缺陷检测,如图 1(a,b)所示。基于重建的方法是最著名的,它将重建图像作为模板,然后在图像空间中应用显式对比度以实现高分辨率定位。然而,使用解码器重建是一个不适定的逆问题,很难重建复杂的细节。为了克服上述限制,基于异常的方法 利用纹理感知预训练模型实现了高图像级性能,这也损害了像素级视觉性能。最有前途的方法之一是卷积归一化流,它进一步从预训练特征对概率分布进行建模,从而获得更高的性能。

1.本文主要贡献

  1. 提出了一种基于潜在模板的缺陷对比定位范例。与基于重建的方法类似,在潜在空间中执行对比定位,这避免了病态并有效地减少了类内方差。

  2. 提出 PyramidFlow,它包括用于多尺度融合和映射的可逆金字塔和金字塔耦合块,可实现高分辨率缺陷定位。此外,还提出了体积归一化以提高泛化能力。

  3. 进行了全面的实验,以证明提出的先进方法优于不使用外部先验的同类算法,甚至在复杂场景中实现了最先进的性能。

2.网络介绍

算法由训练和评估两个过程组成,如图 2 所示。训练过程类似于孪生网络,通过最小化图像对内的频率差异来优化模型。对于评估过程,通过在总训练数据集上进行推理获得潜在模板,然后应用潜在对比和金字塔合成来获得异常定位图。详细信息展示在以下部分中。

图 2. PyramidFlow 的训练和评估示意图。 (a) 给定任何正常图片对,尝试最小化其间潜在变量的距离。 (b) 潜在变量的均值与示例进行对比,然后应用金字塔组合来获得异常定位图。

3.1 方法细节:可逆金字塔范式

缺陷图像包含各种频率成分。通常,低频分量代表慢梯度背景,而高频分量对应于细节或缺陷。为了解耦频率分量并独立识别每个频率分量,我们提出了可逆金字塔,它可以对单个特征进行多尺度分解和组合。为了促进特征学习,以前的工作应用预训练的编码器来提取特征。尽管具有外部先验的预训练方法有助于提高性能,但为了在我们的初步研究中充分探索我们的方法的优势,让我们考虑一个没有任何预训练模型的基线。

3.2 方法细节:金字塔耦合模块

可逆模块。 可逆模块是实现可逆神经网络的基本要素。本文介绍的可逆模块有可逆卷积、可逆金字塔和仿射耦合块。仿射耦合块是构成归一化流的基本模块。它基于可逆非线性映射的特征拆分,具有易于追踪的雅可比行列式和逆运算。

图 3. 提出的的金字塔耦合模块和 PyramidFlow,其中实线表示转换,而虚线表示同一性。 (a) 通道分裂仿射耦合块。 (b) (a)-架构的反向级联。(c) 提出的按比例金字塔耦合块。 (d) (c) 架构的逆向并行和重新参数化。 (e) 所提出的 PyramidFlow,是对 (c,d) 架构深度和层上的堆叠,其中忽略了 1 × 1 卷积来表示。

如图 3(a) 所示,传统的仿射耦合块沿通道维度拆分单个特征,其中一个子特征保持其身份,而另一个由它控制执行仿射变换。表示分割后的特征为x0,x1,其输出为y0,y1,则相应的变换可以描述为:

其中s(·)、t(·)是仿射参数,可以通过零初始化的卷积神经网络进行估计。对于式(3),有一个显式逆变换:

将s(·)中位置i、j的元素记为si,j(·)。由于变换(3)的雅可比矩阵是三角矩阵,其对数行列式可估计为:

方程(3)至(5)是所有仿射耦合块的基础。然而,图 3(a)中所示的耦合块的一部分保持相同。因此,在 NICE [8] 中提出了反向级联架构,使得两个部分都进行了转换,如图 3(b)所示。以前的工作通过迭代应用图 3(b)所示的结构来构建整体可逆归一化流。

实现。我们的方法沿尺度分解单个特征,并基于等式(3)至(5)实现多尺度特征融合。在我们的实现中,使用具有两个线性层的卷积神经网络估计多尺度仿射参数 s(·)、t(·),其中应用双线性插值来匹配目标形状。

此外,我们采用可逆 1x1 卷积 [11] 进行特征内的特征融合。具体地,将可逆1×1卷积对应的满秩矩阵记为A,可以用PLU分解📌

其中 P 是冻结置换矩阵,L 是具有单位对角元素的下三角矩阵,U 是具有零对角元素的上三角矩阵,exp(si) 是矩阵 A 的第 i 个特征值,它始终保持非负性.矩阵 A 在优化过程中总是可逆的,那么它的对数雅可比行列式可以估计为:

总之,方程(3)至(7)在数学上描述了所提出的金字塔耦合块,如图3(c)所示。首先,执行多尺度特征融合(3-5),然后对随机通道应用线性融合(6-7)。此外,我们提出了如图 3(d)所示的双耦合块,它等效于图 3(c)中耦合块的反向并联。双耦合块在我们的实现中被重新参数化,其仿射参数 s(·)、t(·) 是根据级联特征估计的。

体积归一化。 假设可逆变换 f : x → z 将变量 x 映射到潜在变量 z。以前的工作假设潜在变量服从基本概率分布(例如高斯分布),然后根据以下等式估计样本概率密度:

然而,这种方法依赖于基本分布假设,忽略了概率密度变换中隐式先验对泛化的影响。当将此类方法应用于异常检测时,训练目标与异常评估之间的不一致会导致域差距。

图 4. 体积归一化的图示。 (a) 批量归一化。 (b) 提出的通道体积归一化 (CVN)。 (c) 提出的的空间体积归一化 (SVN)。

类似于深度学习中的批量归一化或实例归一化,所提出的体积归一化将用于体积保持映射,如图 4 所示。特别是,对于仿射耦合块,参数 s(·) 从其均值中减去执行公式(3) 之前的值;对于可逆卷积,在根据公式(6)计算矩阵 A 之前,将参数 si 从其平均值中减去。根据统计维度,我们提出了空间体积归一化(SVN)和通道体积归一化(CVN)。 SVN 沿空间维度进行均值统计,而 CVN 沿通道维度进行。

3.3 方法细节:金字塔归一化流

结构。 我们的 PyramidFlow 可以通过将图 3(c,d) 的金字塔耦合块沿深度 D-1 次和层 L-1 次堆叠获得,如图 3(e) 所示。具体来说,PyramidFlow 使用矩阵 W 将图像 I 提取为特征 x,然后根据等式(1)执行金字塔分解。方程(3)至(7)中描述的金字塔耦合块按图3(e)描述的顺序计算得到潜在的金字塔特征zd, d = 0, 1, · · · , L − 1, 即最后根据方程(2)组合成潜在变量。

损失函数。 在体积归一化的情况下,损失函数不包括概率密度系数。此外,半正交矩阵 W 的对数雅可比行列式与样本无关,因此在训练过程中可以忽略其影响。

假设一个训练批次有 2 个正态样本,它的潜在变量是 zd(i), zd(j)。先前的研究使用空间差异\Delta z_{d}=\left\|z_{d}(i)-z_{d}(j)\right\|^{2}训练神经网络。然而,它忽略了高频缺陷的影响。为了解决上述缺点,我们提出了以下傅立叶损失函:

其中 F 是图像的快速傅里叶变换。使用 Eq(9) 训练归一化流使模型能够专注于高频,从而实现更快的收敛。我们将在第 4.3 节中讨论这个技巧。

缺陷定位。 以前的研究通常基于类别独立的零模板来定位具有明显差异的缺陷。在我们的方法中,缺陷被建模为相对于模板的异常偏差。然后,潜在金字塔 zd 的异常定义为\sigma(z_{d})=\left\|z_{d}-\bar{z_{d}}\right\|,其中 ¯zd 是潜在金字塔的平均值。最后,总异常可以估计:

式(10)表明总异常是不同尺度异常的组合,这与Rudolph等提出的经验方法一致。

图像模板估计。 图像模板是正常样本的原型,是潜在模板的可视化。我们的完全归一化流基于 1×1 卷积而不是预训练编码器,保持端到端和近可逆性,因此可以使用方程(2)和方程(4)从潜在均值中检索流的输入 Xtemp,然后求解图像模板 Itemp 的最小二乘问题WItemp = xtemp

4.实验结果

在本章中,我们对 MVTec 异常检测数据集 (MVTecAD) 和 BeanTech 异常检测数据集 (BTAD) 进行无监督异常定位实验。 MVTecAD 包含 15 类工业缺陷图像,其中五类是纹理图像,另外十类是物体图像。对象图像包含三类(网格、金属螺母、螺钉)没有粗配准和一类(榛子)没有精细配准.

4.1复杂度分析

基于等式的归一化流程。 (3) 和 (4) 在计算上是可逆的,这表明所有阶段只需要一份变量副本。此功能减少了从线性到恒定复杂度的反向传播过程中的内存占用。我们基于固定的金字塔层数 L = 8,图像分辨率为 256 × 256,通道 C = 24 分析了上述特征,然后改变堆叠层数 D 来探索内存使用和模型参数的趋势。前向和节省内存的反向传播是基于自主开发的基于 PyTorch 的 [17] 框架 autoFlow 实现的。在稳态训​​练期间记录所有指标,然后绘制为条形图和折线图,如图 5 所示。

4.2体积归一化研究

顶行显示 CVN 优级对象图像,底行显示 SVN 优级纹理图像。

4.3消融实验

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

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

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

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

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

相关文章

使用亮数据Bright Data解决出境电商问题

目录 一、出境电商的困境和问题1、困境一:获取准确的市场数据(1)数据的时效性和可靠性(2)数据的全面性和多样性(3)数据的实时更新和持续监测 2、困境二:克服地域限制和语言障碍&…

scratch数星星 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch数星星 一、题目要求 1、准备工作 2、功能实现 二、案例分析

基于Java学生信息管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

vue中js实现点击复制文本到剪贴板-三种方案

vue中js实现点击复制文本到剪贴板-三种方案 因为在网上找了一些很杂乱 不适用 所以自己写一篇记录分享一下 vue中js实现点击复制文本到剪贴板-三种方案 效果: 方案一:使用原生API(clipboard) 首先,我们需要安装clip…

【嵌入式5】电源相关芯片驱动

文章目录 1.读MPS5023芯片:0x03ff即将前6位屏蔽2.读PXE1410CDM电压和电流:一个数&0x7ff,将这个数前5位全变为0,其余位不变2.1 1ine11:先看第15和10位,e9b6是上面读出的值2.2 1ine16:PMBUS协…

产品的0到1概念篇

一、产品是什么? 产品是指被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品、无形的服务、组织、观念或它们的组合。 产品本质是什么,产品的本质就是解决⽤户的痛点/满⾜⽤户的需求,这种满⾜的需求&…

KingbaseES的学习心得和知识总结(二)|Kingbase数据库闪回功能及插件kdb_flashback的使用

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、KingbaseES V8产品文档首页,点击前往 2、Kingbase 文档库,点击前往 3、北京人大金仓信息技术股份有限公司 官网首页,点击前往…

详解服务器端渲染 页面(SSR)

💌目录 🔥先了解服务器端渲染 (SSR)?🔥服务器端渲染的优点是什么呢?🔥有优点就有缺点?🔥根据Express来简单的建立一个服务端渲染 🔥先了解服务器端渲染 (SSR)&#xff1f…

Qt6.2教程——7.QT常用控件QTextEdit

一,QTextEdit简介 QTextEdit 是 Qt 的一个用于编辑和显示纯文本和富文本的控件。它是功能强大且高度灵活的,可以用于实现多种任务,如文本编辑,数据表示,以及HTML的显示和编辑等。QTextEdit 支持富文本功能&#xff0c…

Over 函数的使用

序言 其实也很少使用这个Over函数,毕竟mysql在5.7版本之前都是不支持的,但是over()的窗口概念被Flink中的窗口中借鉴了. 所以了解下,网上的Over()的使用有在Mysql中的例子,但是我的Mysql5.7 不支持,所以在Oracle中实验.但是语法都是一样的.cuiyaonan2000163.com 众所周知如果S…

转战VUE3学习

安装好vue3后,开始新的项目吧! npm init vuelatest1.组合式API 在以前vue2的项目里,使用的选项式API将各种不同逻辑的代码分散到像data、methods等不同的对象里。如果想看某一方面的逻辑,鼠标滚轮都要磨出火星了! 而…

LLM的工程实践思考

陆奇博士的主题演讲《新范式 新时代 新机会》非常震撼人心。我远程参加了深圳站和北京站两场演讲,深受感触。虽然了解大模型的机制和原理以了解新的范式非常重要,但是“行胜于言”,基于大模型的众多应用都需要工程技术才能落地。然而&#xf…

Ndk c++层 crash问题分析

首先你要从设备上拿到墓碑文件:tombstone,这里面会记录系统崩溃时的信息。位置在/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号&…

FlashAttention和PagedAttention

FlashAttention FlashAttention一般指的是FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness这篇,当然Transformer Quality in Linear Time这篇里非要说FLASH Fast Linear Attention with a Single Head,命名有点无语&…

JavaScript数据存储方式

内置对象 js内部提供的对象,包含各种属性和方法给开发者调用 document.write() console.log() Math Math对象是js提供的一个 “数学”对象,提供了一系列做数学运算的方法 max找最大值Math.max(3,8,5,4) 返回8min找最小值Math.min(3,8,5,4) 返回4ab…

printf不一样的玩法

Printf不一样的玩法 ❝ 在使用linux终端命令的时候,我们可以看到像more命令,它的显示方式与一般的字符串不同,是用了反显。同样,linux C下printf还有很多其他不常见的格式化输出形式。本文主要为你盘点这些形式。 ❞ 先看下效果&a…

MySQL:单行函数(全面详解)

MySQL:单行函数 前言一、函数的理解1、什么是函数2、不同DBMS函数的差异3、MySQL的内置函数及分类 二、数值函数1、基本函数2、角度与弧度互换函数3、三角函数4、指数与对数5、进制间的转换 三、字符串函数四、日期和时间函数1、获取日期、时间2、日期与时间戳的转换…

Bpmn.js流程建模结合业务整合工作流(二)

上一篇文章讲述了bpmn.js的基本搭建使用过程,下面介绍工具栏的按钮使用 以及右侧属性如何绑定到节点保存的 保存方法 /** 保存xml */async save() {await this.getNewXML() //获取最新的xmlawait this.getRootElement() //获取流程基本信息 节点信息const params = {name: th…

SSM+校园网上订餐系统 毕业设计-附源码211510

校园网上订餐系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园网上订…

API 接口协作,swagger不再是第一选择了

目录 一、前言 1.1. 场景一、后端视角: 1.2. 场景二、前端视角: 1.3. 场景三、测试视角: 二、Apifox 2.1 场景一、后端视角: 漂亮的接口文档 2.2 场景二、前端视角: 2.3 场景三、测试视角: 三、总…