【2022工业图像异常检测文献】PatchCore

Towards Total Recall in Industrial Anomaly Detection

1、Background

工业图像异常检测主要解决 冷启动问题 ,即仅使用正常(无缺陷)样本图像来训练模型。

现有的关于冷启动工业视觉异常检测的工作依赖于通过自编码方法、生成对抗网络或其他无监督适应方法来学习名义分布的模型.

本文提出了 PatchCore 作为一种有效的解决 AD 方案,通过:

  1. 最大化测试时可用的正常信息。
  2. 减少对ImageNet类别的偏向。
  3. 保持高推理速度。

PatchCore通过利用局部聚合的中层特征补丁实现了基于单个区块异常即可以判断整个图像异常的事实这一目标。中层网络区块特征的使用使PatchCore能够在高分辨率下操作,并且对ImageNet类别的偏向最小化,而局部邻域特征聚合确保了足够的空间上下文保留,这产生了一个广泛的记忆库,使PatchCore能够在测试时最佳利用可用的正常上下文。

最后,为了实际应用,PatchCore还引入了贪婪核集子采样作为正常特征库的一个关键元素,以减少提取的区块级记忆库的冗余,并显著降低存储内存和推理时间,使PatchCore对实际工业应用非常有吸引力。(通过贪婪核集子采样以舍去部分局部特征从而提升性能)

PatchCore 结合 SPADE( 利用包括各种特征层次的记忆库进行细粒度的基于 kNN 的异常分割和图像级异常检测 )和 PaDiM( 利用局部约束的特征袋方法,估计补丁级特征分布矩来进行补丁级马氏距离测量 )优点, 使用邻域感知的补丁级特征记忆库和核集子采样,提高检测性能并降低推理成本。

2、Method

PatchCore 的核心思想:

  • 构建记忆库(Memory Bank):
    • 使用正常样本的图像,提取其中的特征来构建一个记忆库。这个记忆库包含了正常样本的特征表示,用于后续与测试样本进行比较。
  • 局部感知的补丁特征(Locally Aware Patch Features):
    • 将图像分割成小块(补丁),并从每个补丁中提取特征。这些特征不仅包括补丁自身的特征,还通过考虑补丁周围的邻域来捕捉局部上下文信息。
  • 特征聚合
    • 对于每个补丁,通过聚合邻域内的特征来构建一个局部感知的特征表示。这通常通过适应性平均池化(adaptive average pooling)来实现。
  • 核心集下采样(Coreset Subsampling):
    • 为了提高推理速度和减少存储需求,PatchCore使用核心集下采样技术来减少记忆库的大小,同时尽量保留正常样本特征的覆盖范围。
  • 异常检测与定位
    • 对于测试样本,PatchCore通过比较其补丁特征与记忆库中特征之间的距离来检测异常。如果任何一个补丁的特征与记忆库中的特征差异显著,那么该样本就被认为是异常的。
    • 通过评估每个补丁的异常分数,PatchCore还能生成一个热力图,用于定位图像中的异常区域。

贪婪核心集下采样 (Greedy Coreset Subsampling) 旨在减少存储需求和加速推理过程,同时尽量保留记忆库中正常样本特征的代表性。

核心集(Coreset)是原始数据集的一个小子集,它尽可能好地代表了整个数据集的关键特性。在机器学习和数据挖掘中,核心集用于近似大规模数据集,以便在减少计算资源消耗的同时,保持算法的准确性和效率。

贪婪核心集下采样的优点:

  1. 减少存储需求: 通过选择代表性强的样本,核心集大大减少了需要存储的数据量。
  2. 加快推理速度: 在进行异常检测时,只需要对核心集进行操作,而不是整个记忆库,这显著减少了计算时间。
  3. 保持性能: 尽管核心集比原始记忆库小得多,但它仍然能够很好地捕捉正常样本的特征分布,从而保持异常检测的准确性。

在这里插入图片描述

pseudo-code

# 伪代码:PatchCore异常检测算法# 输入:
# X_N: 正常样本的图像集合
# φ: 预训练的深度神经网络模型
# j: 选择的特征层次
# p: 补丁大小
# s: 步长
# l: 核心集的目标大小# 输出:
# M: 记忆库
# MC: 核心集缩减后的记忆库
# 异常检测结果# 步骤1: 构建记忆库
M = {}
for each image x_i in X_N:M = M ∪ P_s,p(φ_j(x_i))  # 将图像分割成补丁并提取特征# 步骤2: 核心集下采样
MC = {}
for i from 0 to l-1:m_i = arg max(m in M - MC) min(n in MC) ||ψ(m) - ψ(n)||^2MC = MC ∪ {m_i}  # 迭代选择最有代表性的特征加入核心集# 步骤3: 异常检测
function AnomalyDetect(test_image):P_test = ExtractPatches(test_image, s, p)  # 从测试图像提取补丁特征scores = []for each patch_feature in P_test:m_test, m_star = FindClosestInMC(patch_feature, MC)  # 在核心集中找到最接近的特征score = ||m_test - m_star||^2  # 计算异常分数scores.append(score)return max(scores)  # 返回最大的异常分数作为整体异常评估# 步骤4: 异常定位
function AnomalyLocalize(test_image, MC):P_test = ExtractPatches(test_image, s, p)anomaly_map = zeros(test_image.height, test_image.width)for each (h, w) in P_test:m_test, m_star = FindClosestInMC(P_test[h, w], MC)score = ||m_test - m_star||^2anomaly_map[h, w] = scorereturn anomaly_map# 主程序
test_image = LoadImage("test.jpg")
anomaly_score = AnomalyDetect(test_image)
if anomaly_score > threshold:print("异常检测到!")anomaly_map = AnomalyLocalize(test_image, MC)Display(anomaly_map)  # 显示异常热力图
else:print("图像正常")

流程:

  1. 构建记忆库: 遍历所有正常样本图像,对每张图像提取局部感知特征,并将这些特征聚合成记忆库。
  2. 核心集下采样: 使用贪婪算法从记忆库中选择最具代表性的特征,形成核心集。这一步是为了减少计算量和提高推理速度。
  3. 异常检测: 对测试图像进行同样的局部特征提取。对每个补丁特征,在核心集中找到最接近的特征,并计算距离,最后返回最大的异常分数作为整体异常评估。
  4. 异常定位: 与异常检测类似,但是为测试图像的每个补丁计算异常分数,并生成一个异常热力图,用于精确显示异常的位置。
  5. 主程序: 加载测试图像,调用异常检测函数,根据返回的分数判断是否异常,并可视化异常热力图。

3、Experiments

相比于其他方法,PatchCore 最好的。。。

在这里插入图片描述

4、Conclusion

  1. 提出用于冷启动异常检测的 PatchCore 算法,该算法仅利用名义样本的知识来在测试时检测和分割异常数据。
  2. PatchCore 在测试时 通过使用由从 ImageNet 预训练网络中提取的局部感知名义区块级特征表示组成的记忆库,保持最大量的名义上下文,并通过核集子采样实现最小运行时间之间取得了平衡。
  3. 其适用性通常受限于预训练特征的可迁移性。

[REFERENCE]
【文献】面向零漏检的工业异常检测方法
CVPR2022:PatchCore:工业异常检测中的全召回研究
【Patchcore论文阅读】迈向工业异常检测的全面召回 | Towards Total Recall in Industrial Anomaly Detection
论文精读:Towards Total Recall in Industrial Anomaly Detection
缺陷检测:PatchCore的代码解读

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

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

相关文章

高速CT滑环的特点分析

高速CT滑环在现代成像技术中发挥着至关重要的作用,尤其是在医学成像设备和工业检测系统中。这种滑环不仅满足高速旋转的需求,还确保了信号和电力的稳定传输。本文将详细分析高速CT滑环的主要特点及其应用优势。 高速CT滑环的第一个特点是其高传输速率。…

101. 对称二叉树【同时遍历两棵树】【C++】

题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: …

Flet内置图标库ft.icons的图标如何使用庖丁解牛深度解读讲解,源代码IDE运行和调试通过

序言 Flet内置图标库图标丰富多彩、包罗万象。flet内置图标库指ft.icons图标库。使用Flet框架编写程序和项目,就要使用 Flet 内置图标库图标。使用 Flet 内置图标库的图标好处很多。 具体说有以下好处: 便捷性:无需额外寻找和下载图标资源&…

「OC」present和push操作区别以及混合推出的实现

「OC」present和push操作区别以及混合推出的实现 文章目录 「OC」present和push操作区别以及混合推出的实现前言present用途while循环越级返回通知越级返回添加present动画 push模态视图和push视图混合跳转操作一:控制器Apresent控制器B,控制器B再将控制…

影视会员充值api?接口对接需要做哪些准备工作?

影视会员充值 API 接口对接主要有以下步骤: 1.前期准备 明确自身需求:确定你希望通过 API 接口实现的功能,例如支持哪些影视平台的会员充值、是否需要获取会员信息、是否需要订单查询功能等。选择合适的 API 提供商:官方视频平台…

中国电子学会202312青少年软件编程(Python)等级考试试卷(三级)真题

2023年12月青少年软件编程Python等级考试(三级)真题试卷 题目总数:38 总分数:100 一、选择题 第 1 题 单选题 一个非零的二进制正整数,在其末尾添加两个“0”,则该新数将是原数的?( ) A.10倍 B.2倍 C.4倍 D.8倍 第 2 题 单选题 2023年亚运会将在杭…

分步指南:如何使用 ChatGPT 撰写文献综述

撰写文献综述对于研究人员和学生来说,往往是一项既耗时又复杂的任务。这一过程不仅要求对所选主题的现有研究进行全面的了解和掌握,还需要学术严谨性。然而,随着像 ChatGPT 这样的高级语言模型的广泛应用,撰写文献综述的过程变得更加高效和简化。通过合理利用 ChatGPT,研究…

跨国公司决策的影响与中国IT产业的应对

跨国公司在华研发中心的调整是一个复杂的现象,它可能受到多种因素的影响,包括全球经济环境的变化、成本考量、战略重心的转移以及地缘政治因素等。IBM中国研发中心的撤出可能会对中国IT行业造成短期的就业压力,加速人才流动,并促使…

【LeetCode】每日一题 2024_9_20 统计特殊整数(数位 DP)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:统计特殊整数 代码与解题思路 func countSpecialNumbers(n int) int { // 今天的题目是数位 DP,我不会做,所以现场学习了一下灵神的数位 DP 模版s : strconv.Itoa…

轻松打造:用Python实现手机与电脑间的简易消息系统

展示🎥 观看视频:👀,这是之前完成的一个项目,但今天我们的重点不是这个哦。 告别往昔,启航新篇章 现象🌟 智能互动:📱 我们每天都在享受与智能设备的互动,…

哪个快?用300万个图斑测试ArcGIS Pro的成对叠加与经典叠加

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 在使用ArcGIS Pro的过程中,很多朋友发现,Pro有个成对叠加工具集。很多…

图片转pdf在线怎么转?分享5种简单好用的转换方法

在日常工作和学习中,我们经常会遇到需要将图片转换为PDF格式的情况。无论是为了保存文档方便查阅,还是为了提升文件的专业性和安全性,掌握图片转PDF的技巧都显得尤为重要。下面给大家分享5种转换方法,简单高效,一起来了…

b2b2c商城系统好用么 多用户商城系统四大盈利模式

商淘云B2B2C商城系统能帮助企业快速搭建企业自己的多用户商城系统,它提供了多种功能,如多商家管理、订单处理、支付模块集成等,适合各种规模的企业。用户界面友好,且支持定制化,能满足不同业务需求。 多用户商城有四大…

HTTP协议详解以及常见的状态码

HTTP协议的定义: HTTP(HyperText Transfer Protocol,超文本传输协议)是一种建立在TCP(传输控制协议)之上的无状态连接协议。它是互联网的基础协议之一,用于客户端与服务器之间的通信。HTTP规定…

【C++二叉树】105.从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) 根据前序遍历和中序遍历构建二叉树 前序遍历访问方式:根-左子树-右子树 中序遍历访问方式:左子树-根-右子树 思路分析: 前序中序可以构建一颗二叉树&#xf…

微信视频号的视频怎么下载提取?详细操作流程来了!

微信视频号是腾讯为用户提供的娱乐学习的短视频平台,用户可通过视频号中的内容进行查看浏览,但不少人因视频号本身不具备创作灵感,故此需要下载提取高清视频号的内容。 视频号下载视频 视频下载是用户想通过软件或者插件进行保存微信视频号…

文献阅读(81)FACT

题目:FACT: FFN-Attention Co-optimized Transformer Architecture with Eager Correlation Prediction时间:2023会议:ISCA研究机构:清华 主要贡献 算法优化:提出了Eager Prediction (EP),预测softmax前重…

马踏棋盘c++

马踏棋盘c 题目回溯问题模型特征模型 代码 题目 马踏棋盘算法,即骑士周游问题。将马放在国际象棋的 88 棋盘的某个方格中,马按走棋规则(马走日字)进行移动。每个方格只进入一次,走遍棋盘上全部 64 个方格。 回溯问题模型 特征 解组织成树…

MySQL高阶1867-最大数量高于平均水平的订单

目录 题目 准备数据 分析数据 题目 您正在运行一个电子商务网站,该网站正在寻找不平衡的订单。不平衡订单的订单最大数量严格大于每个订单(包括订单本身)的平均数量。 订单的平均数量计算为(订单中所有产品的总数量&#xff…

数商:数字时代的新认知

在数字时代,“数商” 概念兴起,代表着人们在该时代应具备的新认知与能力。 数商即数字商数,指个体在数字时代认知、理解、运用数字技术和数据的能力,以及进行有效决策、创新和合作的素养。其内涵包括数字认知能力、数据素养、数字…