0

0

【论文复现】PaDiM-Paddle:基于分布建模的异常检测与定位方法

P粉084495128

P粉084495128

发布时间:2025-07-17 09:22:15

|

486人浏览过

|

来源于php中文网

原创

本文基于PaddlePaddle复现PaDiM算法,通过CNN提取图像面片嵌入并建模高斯分布,用马氏距离检测异常。在MvTec数据集上,Image-Level AUC平均0.925,Pixel-Level AUC平均0.966,接近或优于PyTorch版本,还介绍了数据集及训练、验证等操作。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【论文复现】padim-paddle:基于分布建模的异常检测与定位方法 - php中文网

PaDiM-Paddle:基于分布建模的异常检测与定位方法

1.1 简介

本项目基于PaddlePaddle 复现了论文:
PaDiM: a Patch Distribution Modeling Framework for Anomaly Detection and Localization

【论文复现】PaDiM-Paddle:基于分布建模的异常检测与定位方法 - php中文网

PaDiM是一种基于图像Patch的算法。它依赖于预先训练好的CNN功能提取器。 将图像分解为多个面片,并使用不同的特征提取层从每个面片中提取嵌入。 将不同层次的激活向量串联起来,得到包含不同语义层次和分辨率信息的嵌入向量。这有助于对细粒度和全局上下文进行编码。 然而,由于生成的嵌入向量可能携带冗余信息,因此使用随机选择来降低维数。 在整个训练批次中,为每个面片嵌入生成一个多元高斯分布。因此,对于训练图像集的每个面片,我们有不同的多元高斯分布。这些高斯分布表示为高斯参数矩阵。 在推理过程中,使用马氏距离对测试图像的每个面片位置进行评分。它使用训练期间为面片计算的协方差矩阵的逆矩阵。 马氏距离矩阵形成了异常图,分数越高表示异常区域。

本项目基于PaddlePaddle框架复现了PaDiM,并在MvTec数据集上进行了实验。

论文:

  • [1] Simonjan, Jennifer and Unluturk, Bige D. and Akyildiz, Ian F. PaDiM: a Patch Distribution Modeling Framework for Anomaly Detection and Localization

项目参考:

  • anomalib
  • PaDiM-Anomaly-Detection-Localization-master

1.2 复现精度

在MvTec数据集的测试效果对比如下表。

Image-Level AUC


Avg Carpet Grid Leather Tile Wood Bottle Cable Capsule Hazelnut Metal Nut Pill Screw Toothbrush Transistor Zipper
anomalib(Pytorch) 0.891 0.945 0.857 0.982 0.950 0.976 0.994 0.844 0.901 0.750 0.961 0.863 0.759 0.889 0.920 0.780
Paddle 0.925 1.000 0.907 1.000 0.981 0.994 0.998 0.833 0.863 0.870 0.970 0.885 0.729 0.992 0.947 0.907

Pixel-Level AUC


Avg Carpet Grid Leather Tile Wood Bottle Cable Capsule Hazelnut Metal Nut Pill Screw Toothbrush Transistor Zipper
anomalib(Pytorch) 0.968 0.984 0.918 0.994 0.934 0.947 0.983 0.965 0.984 0.978 0.970 0.957 0.978 0.988 0.968 0.979
Paddle 0.966 0.989 0.926 0.991 0.925 0.938 0.979 0.951 0.982 0.979 0.966 0.955 0.973 0.986 0.970 0.983

image-level auc的Mean为0.922。

pixel-level auc的Mean为0.966(966.2, 0.18% gap)。

1.3 数据集

数据集网站:MvTec数据集

AiStudio上的数据集:MVTec-AD

MVTec AD是MVtec公司提出的一个用于异常检测的数据集。与之前的异常检测数据集不同,该数据集模仿了工业实际生产场景,并且主要用于unsupervised anomaly detection。数据集为异常区域都提供了像素级标注,是一个全面的、包含多种物体、多种异常的数据集。

数据集包含不同领域中的五种纹理以及十种物体,且训练集中只包含正常样本,测试集中包含正常样本与缺陷样本,因此需要使用无监督方法学习正常样本的特征表示,并用其检测缺陷样本。这是符合现实的做法,因为异常情况不可预知并无法归纳。下图分别展示了几类图片的正常样本与缺陷样本,以及缺陷样本中的缺陷特写:

Haiper
Haiper

一个感知模型驱动的AI视频生成和重绘工具,提供文字转视频、图片动画化、视频重绘等功能

下载

【论文复现】PaDiM-Paddle:基于分布建模的异常检测与定位方法 - php中文网

快速开始

In [ ]
%cd /home/aistudio/data/
!tar xvf data116034/mvtec_anomaly_detection.tar.xz

2.1 依赖安装

In [ ]
!pip install scikit-image

2.2 训练

一共有15个类别,这里需要对15个类别分别训练,最后取平均值作为验证指标. 随机数种子7

预训练模型:挂载数据集[140122] (https://aistudio.baidu.com/aistudio/datasetdetail/140122)

放在output下面,后面就可以直接评估

In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category carpet  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category grid  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category leather  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category tile  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category wood  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category bottle  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category cable  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category capsule  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category hazelnut  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category metal_nut  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category pill  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category screw  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category toothbrush  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category transistor  --val=True --save_path=./output --seed 7
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python train.py --data_path=/home/aistudio/data/ --category zipper  --val=True --save_path=./output --seed 7

2.3 验证

下面验证仅以carpet为例子,其他类别修改category即可。

In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python val.py --data_path=/home/aistudio/data/ --category carpet  --model_path=./output/carpet/best.pdparams --save_picture=True --save_path=./output --seed 7

2.4 预测

In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python predict.py --picture_path=/home/aistudio/data/carpet/test/color/000.png --category carpet  --model_path=./output/carpet/best.pdparams --save_picture=True --save_path=./output --seed 7

可以在output/carpet/找到如下的类似结果:【论文复现】PaDiM-Paddle:基于分布建模的异常检测与定位方法 - php中文网

2.5 导出

In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python export_model.py --depth 18 --img_size=224 --model_path=./output/carpet/best.pdparams --save_dir=./output

2.6 推理

需要开启infer的380行。

        # postprocess(args, test_imgs, args.category, results, distribution) # 可视化
In [ ]
%cd /home/aistudio/PaDiM-Paddle/
!python infer.py --use_gpu=True --model_file=output/model.pdmodel --input_file=/home/aistudio/data/carpet/test/color/000.png --params_file=output/model.pdiparams --category=carpet  --distribution=./output/distribution --save_path=./output --seed 7

2.7 TIPC

注意:本部分为论文复现赛内容,只是为了验证整个项目的训练推理的正确性。学习目的可以不进行这部分的运行,即这部分非项目必要部分。

因为test_tipc 不支持后处理的可视化环境,此时没有图像保存结果输出

首先安装auto_log,需要进行安装,安装方式如下: auto_log的详细介绍参考https://github.com/LDOUBLEV/AutoLog。

git clone https://github.com/LDOUBLEV/AutoLog
cd AutoLog/
pip3 install -r requirements.txt
python3 setup.py bdist_wheel
pip3 install ./dist/auto_log-1.2.0-py3-none-any.whl

进行TIPC:

bash test_tipc/prepare.sh test_tipc/configs/PaDiM/train_infer_python.txt 'lite_train_lite_infer'bash test_tipc/test_train_inference_python.sh test_tipc/configs/PaDiM/train_infer_python.txt 'lite_train_lite_infer'

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

387

2023.08.14

pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

428

2024.05.29

Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习
Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习

PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。 使用Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。 PyTorch 的独特之处在于,它完全支持GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。

7

2025.12.22

pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

428

2024.05.29

Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习
Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习

PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。 使用Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。 PyTorch 的独特之处在于,它完全支持GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。

7

2025.12.22

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1680

2024.08.16

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号