type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jul 22, 2024 01:16 PM
当我穿行于世间的平淡日常,我便在简单中遇见生命的惊喜
📝 主旨内容
PatchCore:(CVPR 2022)
patchcore-inspection
amazon-science • Updated Sep 9, 2024
提取特征
特征级别
- 用预训练模型Backbone提取图像特征
- 以Resnet50为例,本文放弃了局部正常特征数据较少、偏向于分类任务的深层特征,采用第 [2, 3]层特征作为图像特征
Patch
特征
- 提取图像的
Patch
特征,这个特征带有周围数据的信息
- 以
h, w
位置为中心,取边长为p
的正方形区域
- 围绕这些点计算的特征图上的点为:(是对某领域中特征向量的聚合函数)
- 一幅图像的
Patch
特征集合为:
构建Memory Bank
Memory Bank
- 将收集到的正常图像
Patch
特征放入MemoryBank
Reduce memory bank(降低)
- 通过稀疏采样在尽可能保持特征表达能力的情况下,使得MemoryBank稀疏化(为了加快算法运行速度)
- 在确定目标Bank 特征数量后通过优化以下目标实现稀疏化
含义为找到一个特征集合,使得中任意特征距离中最近的特征的距离的最大值最小
- 之后用一些选择特征的策略获取稀疏化Memory Bank
梳理构建流程
异常检测
- 构建Memory Bank相当于使用正常数据进行模型训练、构建
- 之后输入待检测的图像进行异常检测,相当于infer
infer 流程
- 提取
Patch
特征:
- 对于每个
Patch
特征选择中距离最近的特征
公式计算的是点到集合的距离,选择距离最远的异常值距离最远的点为图像的异常值分数
- 文中强调为了提升算法鲁棒性,采用一个公式更新了异常值
我的理解为:对于特征系数的区域倾向于判定为异常,反正给予异常值一定的削减每个点的异常值拼接起来即可获得图像的异常热力图
特征提取部分
在PatchCore的方法中,使用了一个预训练好的ImageNet模型(通常是ResNet家族的网络,例如ResNet50或WideResNet50),从中抽取中层或者中高层的特征用于异常检测。具体来说:
1. 采用特征层:
- PatchCore从ResNet类架构的第2和第3层(blocks 2 和 3)的输出中提取特征。
- 这些层的特征既包含了高分辨率(详细的局部信息),又具有一定的抽象层级(全局的上下文信息),这样可以更好地兼顾局部和全局的信息。
2. 局部特征聚合:
- 对于每一个特征图,假设其大小为(分别表示通道数、高度和宽度)。
- 在每个位置,考虑其邻域范围,聚合邻域内的特征得到局部特征:
- 定义了一种局部感知的特征,表示在位置处的局部特征。
- 通过适配平均池化(adaptive average pooling)对邻域内的特征进行聚合(类似于在每个特征图上进行局部平滑处理)。
内存库的构建
1. 内存库定义:
- 对于所有的正常样本图像,在训练时,每个图像都会生成其局部特征集合。
- 这些局部特征被加入到内存库:
2. 内存库缩减:
- 由于内存库可能非常大,PatchCore采用了一种贪婪核集(greedy coreset)方法进行下采样,从而减少冗余,提高计算效率,同时尽可能保留原始内存库的特征覆盖范围。
- 核集选择通过一个迭代贪婪的近似算法完成,即每次选择一个当前最远的点加入核集。
测试时的对比
1. 异常评分计算:
- 在测试过程中,对于每个测试图像的每个局部特征,找到其在内存库中的最近邻:
- 使用最近邻算法进行最近邻搜索,这通常需要遍历内存库中的所有特征,这样在特征库很大的时候计算代价较大。
- 计算测试图像的异常评分:
- 基于测试图像的所有局部特征与其对应的最近邻的距离,计算最大异常评分。
- 为了提高鲁棒性,PatchCore还对最大异常评分进行了重新加权,以减少由于异常样本集中的稀疏现象带来的误差。
2. 完整遍历问题:
- 标准的最近邻搜索需要对整个内存库进行完整遍历,这在内存库较大的情况下计算量较大。因此,PatchCore同时探讨了使用近似最近邻搜索方法(如IVFPQ),在某些极端情况下能显著加快测试速度,但可能会有一些性能损失。
BTF(Back To the Features): C LASSICAL 3D FEATURES ARE (ALMOST) ALL YOU NEED FOR 3D ANOMALY DETECTION(CVPRW 2023)
3D-ADS
eliahuhorwitz • Updated Aug 26, 2024
色彩和三维结合更好:对象在形状和质感上都可能出现异常。一些形状异常在3D形状中很容易检测出来,表现为尖锐的变形(标记为红色,最左边的两个对象-饼干和土豆)。在这种情况下,颜色是无效的;异常不能从顶部视图中检测出来。相反,3D信息通常无法识别质感异常,例如电缆密封件的变形、泡沫的颜色(最右边的两个对象)。这些异常在2D彩色图像中很容易检测出来。
FPFH(快速点特征直方图)
快速点特征直方图(FPFH,Fast Point Feature Histograms)是一种经典的3D点云特征描述算子,主要用来捕捉局部几何结构。这种描述算子通过以下几个步骤来构造:
1. 法线估计:首先在点云的每个点上计算法线。
2. 相对位置和法线计算:然后,选取一个点以及其邻域中的点,计算这些点对之间的相对位置和法线的关系,比如夹角和距离。
3. 简化特征(SPFH)计算:对每对相邻点计算简化点特征直方图(Simple Point Feature Histograms,SPFH),这些直方图包含在相对坐标系中的距离和角度信息。
4. 累积特征(FPFH)计算:最终,通过累积和归一化邻域内所有相邻点的SPFH,计算出完整的FPFH。
FPFH的主要优势在于其计算简便且具有旋转、平移和尺度不变性,因此在3D点云的特征描述中效果显著。
3D特征和2D特征的融合
在本研究中,作者提出了一种名为BTF(Back to the Feature)的融合方法,将3D特征(如FPFH)和2D特征(如图像的颜色特征)结合起来。融合流程如下:
1. 特征提取:
- 3D特征提取:使用FPFH从3D点云中提取特征。
- 2D特征提取:使用预训练的ImageNet模型从RGB图像中提取颜色特征(如PatchCore方法)。
2. 特征融合:分别提取上述特征后,将每个点的3D特征和相应像素的2D特征进行拼接,形成联合特征向量。
3. 特征存储:将每个样本的联合特征向量存储在特征库中,这个特征库用于后续的异常检测。
异常检测方法
对于异常检测,BTF方法使用k-最近邻方法(k-Nearest-Neighbors, kNN)。具体步骤如下:
1. 训练阶段:
- 对所有训练样本,通过上述过程提取并融合3D和2D特征,然后存储在特征库中。
2. 测试阶段:
- 对待检测样本,提取并融合其3D和2D特征,得到联合特征向量。
- 计算该特征向量与特征库中所有特征向量的距离。
- 使用kNN方法,找到特征库中距离最近的k个特征向量。
- 计算这些距离的平均值,如果该平均值高于预设的阈值,则该样本被判定为异常;否则为正常。
通过结合3D和2D特征,BTF方法能够同时捕捉几何和颜色上的异常,从而在MVTec 3D-AD数据集上显著超越了之前的最先进方法,达到了更高的精度(如像素级AUC: 99.3%,PRO: 96.4%)。
M3DM: Multimodal Industrial Anomaly Detection via Hybrid Fusion(CVPR 2023)
M3DM
nomewang • Updated Sep 9, 2024
创新点
1. 混合特征融合:现有的多模态工业异常检测方法通常直接连接多模态特征,但这样做可能会导致特征之间的干扰,从而降低检测性能。M3DM提出了无监督的特征融合方法,通过不同模态特征的交互来增强特征表示。此外,通过补丁对比学习来学习多模态特征之间的内在联系,从而提升检测效果。
2. 多记忆库决策层:为了避免信息丢失,M3DM在决策层引入了多个记忆库,并使用额外的新颖性分类器来进行最终决策。这样不仅保留了RGB和点云的详细信息,还提高了检测的鲁棒性。
3. 点特征对齐:为了更好地对齐点云和RGB特征,M3DM提出了一种点特征对齐操作,将点云特征映射到2D空间中,从而简化多模态交互,提升检测性能。
决策层融合(DLF)
1. 特征存储:分别为RGB特征、点云特征和融合特征建立三个记忆库(Mrgb, Mpt, Mfs)。记忆库的构建借鉴了PatchCore的方法,在推理阶段,每个记忆库用于预测异常评分和分割图。
2. 多分类器决策:为了做出最终决策,DLF模块利用两个可训练的一类支持向量机(OCSVM)分类器(Da, Ds)。这些分类器分别用于异常评分和分割图的最终决策。
3. 得分函数应用:DLF通过得分函数(ϕ, ψ)来计算各记忆库中的特征与输入特征之间的相似度,从而生成最终的异常评分和分割结果。
- 异常评分计算公式为:a = Da(ϕ(Mrgb, frgb), ϕ(Mpt, fpt), ϕ(Mfs, ffs))
- 分割图计算公式为:S = Ds(ψ(Mrgb, frgb), ψ(Mpt, fpt), ψ(Mfs, ffs))
在实际操作中,DLF避免了在特征融合过程中信息的丢失,通过融合来自不同模态的记忆库输出,实现精确的异常检测和分割。
Shape-Guided: Shape-Guided Dual-Memory Learning for 3D Anomaly Detection(ICML 2023)
Shape-Guided
jayliu0313 • Updated Aug 26, 2024
方法的优势
- 双专家模型:该方法结合了几何信息和颜色信息,通过双模型(形状专家和外观专家)系统地识别并本地化3D异常区域。这种双重指引大大提高了检测精度。
- 双内存库:通过建立由正常样本推测出的双内存库,能有效地利用训练数据,从而在测试样本推理时精准地定位缺陷。
- 细粒度表示:采用签名距离函数(SDF)进行每个点的3D表示,以细粒度地预测每个点是否异常,这有助于提升检测的细腻程度。
- 高性能:在MVTec 3D-AD数据集上,该方法以较高的召回率和较低的误报率实现了最先进的性能。
专家模型训练
形状专家
1. 分割局部补丁:将完整的点云分割成多个局部补丁,每个补丁包含500个点。
2. 使用PointNet提取特征:对每个局部补丁,应用PointNet提取对应的局部几何特征。
3. SDF模型训练:利用神经隐式函数(NIF)模型,针对每个补丁的查询点预测其签名距离。最终,将每个补丁的特征向量存储在SDF内存库中。
外观专家
1. RGB特征映射:对每个局部几何形态补丁,通过2D投影获取相应的RGB特征。
2. 扩展特征邻域:通过在2D特征图上扩展2个像素的方式,增强RGB特征容量。
3. 存储到RGB 内存库:保存每个局部几何特征补丁所对应的RGB特征形成一个RGB字典,将这些字典共同存储在RGB内存库中。
特征融合
在推理阶段,方法通过以下步骤融合形状和RGB特征,以完成异常检测:
1. 提取测试样本的SDF特征:使用PointNet提取所有局部补丁的SDF特征。
2. 提取RGB特征图:通过ResNet提取测试样本的RGB特征图。
3. 最近邻查找与重新表示:对于SDF特征,通过在SDF内存库中查找k个最近邻,并通过稀疏表示重构得到预测的顶点签名距离。
4. 计算最终得分图:对3D点云各局部补丁的SDF得分图和RGB得分图进行对齐,并像素级取最大值作为各点的最终异常得分。
5. 融合分数后的推理:结合SDF与RGB得分图融合后的信息,实现最优的异常检测精度。
内存库构建与推理
- 内存库存储:将训练样本中提取的SDF特征和相应的RGB特征分离存储在双内存库 (MS和MA) 中。
- 推理过程: 1. 从测试样本中提取局部几何(SDF)和RGB特征。 2. 对每个局部补丁,通过在SDF内存库中查找最近邻邻居并进行重建,获取SDF异常得分。 3. 同样方法,通过在RGB内存库中查找RGB邻居,并计算其稀疏表示,获取RGB异常得分。 4. 合并两种得分,进行异常检测。 通过以SDF特征为主导的形状引导机制,有效地整合了3D几何信息和2D RGB外观信息,该方法显著地提升了无监督3D异常检测的准确性和效率。
Self-supervised Feature Adaptation for 3D Industrial Anomaly Detection(ECCV 2024)
🤗 总结归纳
预训练模型的使用
ResNet, PointNet, Point_MAE
内存的占用
速度慢
📎 参考文章
- 作者:ziuch
- 链接:https://ziuch.com/article/IAD-Memeroy-Bank
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章