Skip to content

paper PatchCore #535

@junxnone

Description

@junxnone

PatchCore

  • 只需要给正常产品的图片

原理

  • 给正常产品 “建特征库”
    • 把所有正常产品的图片,拆成一个个小补丁(比如像拼图的小块),然后提取每个补丁的 “特征”
    • 选取图片的 “中层特征”,既不会太抽象(避免受训练数据的干扰),又能保留足够细节(比如小划痕这种细微缺陷)
  • 给特征库 “瘦身” 提效率
    • “精选抽样” ,从庞大的特征库中挑出最有代表性的一小部分(比如只留 1%),既不丢关键信息,又能让后续检测速度
  • 检测时 “对比找茬”
    • 检测的产品图片时,也拆成小补丁,然后逐个对比 “记忆库” 里的正常补丁:如果某个补丁和记忆库里的正常补丁差别特别大,就判定这个地方是瑕疵
Image

特征提取

  • 使用基于ImageNet 预训练的卷积骨干网络,围绕局部补丁(Patch) 做精细化设计,既规避了预训练模型的领域偏差,又保留了工业缺陷所需的细节与空间信息
  • 摒弃网络最后一层的高层抽象特征(易受 ImageNet 自然图像分类偏差影响,丢失局部细节),也不单独用底层特征(噪声多、语义信息弱),而是选择中层特征层(默认 ResNet-like 的 layer2+layer3)。

一、核心基础:骨干网络与特征层选择

  1. 默认骨干网络:选用WideResNet50(也兼容ResNet50/101、ResNeXt101等),全程使用ImageNet预训练权重不做微调,避免冷启动场景下的过拟合,同时保证特征的泛化性。
  2. 特征层选取原则:摒弃网络最后一层的高层抽象特征(易受ImageNet自然图像分类偏差影响,丢失局部细节),也不单独用底层特征(噪声多、语义信息弱),而是选择中层特征层(默认ResNet-like的layer2+layer3)
    • 该层级特征平衡了空间分辨率(能捕捉划痕、小破损等细微缺陷)和语义抽象性(能识别部件结构偏差等全局异常),是工业缺陷检测的最优解。
  3. 多尺度特征融合:对layer2(高分辨率)和layer3(稍低分辨率)的特征图,通过双线性插值将layer3的特征图缩放至与layer2一致的尺寸,再逐维度拼接,融合后既保留细节又具备结构感知能力。

二、核心操作1:局部邻域聚合的Patch特征构建

这是PatchCore最具特色的设计,核心是为每个特征点构建带局部上下文的Patch特征,既扩大感受野,又不丢失空间分辨率,步骤如下:

  1. 特征图基础形态:单张正常图像经骨干网络提取后,得到中层特征图为三维张量 $\phi_{i,j} \in \mathbb{R}^{c^×h^×w^}$ ( $c^$ 为通道数, $h^/w^$ 为特征图高/宽),每个位置 $(h,w)$ 对应一个 $c^*$ 维基础特征向量$\phi_{i,j}(h,w)$ 。
  2. 邻域范围定义:为每个特征点$(h,w)$划定方形邻域 $\mathcal{N}_{p}^{(h,w)}$(默认邻域尺寸 $p=3$ ,即3×3范围),覆盖该点上下左右 $\lfloor p/2 \rfloor$ 的特征点,让单个Patch特征包含局部上下文。
  3. 邻域特征聚合:对邻域内所有特征向量,使用自适应平均池化(fagg) 做聚合,生成一个d维的局部感知Patch特征 $\phi_{i,j}\left(\mathcal{N}_{p}^{(h,w)}\right)$ ,聚合后既保留邻域信息,又将特征维度统一为预设值d,避免冗余。
  4. Patch特征采样:对聚合后的特征图,按步长s=1(无下采样,保证空间完整性)采样所有Patch特征,形成单张图像的Patch特征集合 $\mathcal{P}{s,p}(\phi{i,j})$ ,每个Patch特征都与原始图像的局部区域一一对应,保留空间位置信息。

三、核心操作2:全局记忆库的构建

将所有正常训练样本的Patch特征整合,形成覆盖所有正常局部模式的记忆库,是后续异常对比的“正常模板库”:

  1. 记忆库定义:遍历所有正常训练图像 $x_i \in X_N$,将每张图的Patch特征集合取并集,得到原始记忆库 $\mathcal{M}=\bigcup_{x_{i} \in \mathcal{X}{N}} \mathcal{P}{s,p}\left(\phi_{j}\left(x_{i}\right)\right)$ ,包含所有正常产品的局部特征模式,无任何异常特征。
  2. 特征无预处理:不做PCA降维、归一化等额外处理(后续通过Coreset子采样精简),保留Patch特征的原始分布,避免特征失真影响异常判断。
  3. 空间信息关联:每个Patch特征均附带其在原始图像中的空间位置信息,为后续像素级异常定位奠定基础。

四、配套优化:特征维度与计算的辅助设计

  1. 特征维度控制:通过骨干网络层选择和邻域聚合,将Patch特征维度控制在合理范围(如WideResNet50的layer2+layer3融合后,经3×3邻域聚合,维度约1024/2048维),既保证特征表达能力,又避免维度爆炸。
  2. 无数据增强:训练阶段仅用原始正常图像,不做翻转、裁剪等数据增强——因工业场景中缺陷类型未知,增强可能引入虚假正常模式,干扰记忆库的纯净性。
  3. 硬件友好性:特征提取全程基于卷积网络的前向传播,可通过CUDA/TensorRT做GPU加速,无自定义复杂操作,适配工业产线的实时推理需求。

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions