基于深度学习的图像异常检测算法:PaDiM(Patch Distribution Modeling)
字数 1244 2025-11-11 02:27:14

基于深度学习的图像异常检测算法:PaDiM(Patch Distribution Modeling)

1. 问题描述

图像异常检测的目标是识别与正常样本模式不同的异常图像或区域,常用于工业质检、医疗影像分析等场景。难点在于:

  • 异常样本稀少且形态多样,难以收集足够数据训练监督模型。
  • 需同时定位异常区域并判断异常程度。

PaDiM是一种无监督异常检测算法,核心思想是:通过对正常图像的特征分布建模,检测偏离该分布的异常区域


2. 核心思路

PaDiM的解决思路分为三步:

  1. 特征提取:利用预训练CNN(如ResNet)提取多层级特征,兼顾局部细节与全局上下文。
  2. 概率分布建模:对每个图像块(patch)的特征,构建多元高斯分布模型。
  3. 异常评分:计算测试图像中每个块与对应高斯分布的马氏距离,距离越大则异常概率越高。

3. 关键技术细节

步骤1:特征提取与图像块对齐

  • 使用预训练CNN(如ResNet18)提取多个层级的特征图(例如来自layer1, layer2, layer3)。
  • 将不同层级的特征图上采样到同一分辨率,并拼接成综合特征向量。例如,若原图尺寸为224×224,每个位置(i,j)对应的特征向量由三层特征拼接而成。
  • 每个特征向量代表图像中一个局部区域(patch),实现像素级异常定位。

步骤2:多元高斯分布建模

  • 假设所有正常图像中,同一位置(i,j)的特征向量服从多元高斯分布。
  • 使用正常训练集计算每个位置(i,j)的:
    • 均值向量 \(\mu_{ij}\)
    • 协方差矩阵 \(\Sigma_{ij}\)(为稳定计算,加入正则项 \(\lambda I\)
  • 协方差矩阵可能奇异,PaDiM通过随机选择特征维度子集降低计算复杂度并避免过拟合。

步骤3:异常得分计算

  • 对测试图像的每个位置(i,j),计算其特征向量 \(x_{ij}\) 与高斯分布 \((\mu_{ij}, \Sigma_{ij})\)马氏距离作为异常得分:

\[ \text{Score}_{ij} = \sqrt{(x_{ij} - \mu_{ij})^T \Sigma_{ij}^{-1} (x_{ij} - \mu_{ij})} \]

  • 得分图通过高斯平滑后生成异常热力图,高分区域即为异常区域。
  • 图像级异常得分取所有位置得分的最大值或平均值。

4. 算法优势

  1. 无需异常样本:仅用正常数据训练。
  2. 多尺度特征:结合不同CNN层特征,提升对小异常和大异常的检测能力。
  3. 高效推理:预计算高斯参数,测试时仅需距离计算。

5. 局限性

  • 假设特征分布为高斯分布,可能不适用于复杂模式。
  • 对训练集中未出现的正常变异敏感(如光照变化)。

6. 总结

PaDiM通过简单而有效的概率建模,实现了无需标注异常的精准检测与定位,为工业质检等场景提供了实用工具。后续改进如SPADE(基于K近邻)或PatchCore(基于核心集)进一步优化了分布建模的鲁棒性。

基于深度学习的图像异常检测算法:PaDiM(Patch Distribution Modeling) 1. 问题描述 图像异常检测的目标是识别与正常样本模式不同的异常图像或区域,常用于工业质检、医疗影像分析等场景。难点在于: 异常样本稀少且形态多样,难以收集足够数据训练监督模型。 需同时定位异常区域并判断异常程度。 PaDiM是一种 无监督 异常检测算法,核心思想是: 通过对正常图像的特征分布建模,检测偏离该分布的异常区域 。 2. 核心思路 PaDiM的解决思路分为三步: 特征提取 :利用预训练CNN(如ResNet)提取多层级特征,兼顾局部细节与全局上下文。 概率分布建模 :对每个图像块(patch)的特征,构建多元高斯分布模型。 异常评分 :计算测试图像中每个块与对应高斯分布的马氏距离,距离越大则异常概率越高。 3. 关键技术细节 步骤1:特征提取与图像块对齐 使用预训练CNN(如ResNet18)提取多个层级的特征图(例如来自layer1, layer2, layer3)。 将不同层级的特征图 上采样到同一分辨率 ,并拼接成综合特征向量。例如,若原图尺寸为224×224,每个位置(i,j)对应的特征向量由三层特征拼接而成。 每个特征向量代表图像中一个局部区域(patch),实现像素级异常定位。 步骤2:多元高斯分布建模 假设所有正常图像中,同一位置(i,j)的特征向量服从多元高斯分布。 使用正常训练集计算每个位置(i,j)的: 均值向量 \(\mu_ {ij}\) 协方差矩阵 \(\Sigma_ {ij}\)(为稳定计算,加入正则项 \(\lambda I\)) 协方差矩阵可能奇异,PaDiM通过 随机选择特征维度子集 降低计算复杂度并避免过拟合。 步骤3:异常得分计算 对测试图像的每个位置(i,j),计算其特征向量 \(x_ {ij}\) 与高斯分布 \((\mu_ {ij}, \Sigma_ {ij})\) 的 马氏距离 作为异常得分: \[ \text{Score} {ij} = \sqrt{(x {ij} - \mu_ {ij})^T \Sigma_ {ij}^{-1} (x_ {ij} - \mu_ {ij})} \] 得分图通过高斯平滑后生成异常热力图,高分区域即为异常区域。 图像级异常得分取所有位置得分的最大值或平均值。 4. 算法优势 无需异常样本 :仅用正常数据训练。 多尺度特征 :结合不同CNN层特征,提升对小异常和大异常的检测能力。 高效推理 :预计算高斯参数,测试时仅需距离计算。 5. 局限性 假设特征分布为高斯分布,可能不适用于复杂模式。 对训练集中未出现的正常变异敏感(如光照变化)。 6. 总结 PaDiM通过简单而有效的概率建模,实现了无需标注异常的精准检测与定位,为工业质检等场景提供了实用工具。后续改进如SPADE(基于K近邻)或PatchCore(基于核心集)进一步优化了分布建模的鲁棒性。