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

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

热心网友 时间:2025-07-17
转载

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

1.1 简介

本项目基于paddlepaddle 复现了论文:
padim: a patch distribution modeling framework for anomaly detection and localization

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

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

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

项目参考:

anomalibPaDiM-Anomaly-Detection-Localization-master

1.2 复现精度

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

Image-Level AUC

Pixel-Level AUC

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。数据集为异常区域都提供了像素级标注,是一个全面的、包含多种物体、多种异常的数据集。

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

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

快速开始

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.webp --category carpet  --model_path=./output/carpet/best.pdparams --save_picture=True --save_path=./output --seed 7
登录后复制

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

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.webp --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/AutoLogcd AutoLog/pip3 install -r requirements.txtpython3 setup.py bdist_wheelpip3 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'
登录后复制
来源:https://www.php.cn/faq/1411145.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
说一下WorkBuddy 的 Plan 模式

说一下WorkBuddy 的 Plan 模式

如何切换到 Plan 模式 想体验这种更可控的方式?操作很简单。在 WorkBuddy 主界面的右下角,你会看到一个“安全模式切换”的下拉菜单,从中选择“Plan”选项即可完成切换。 核心使用流程 光说概念可能有点抽象,咱们直接看个例子。假设你手头有个任务:“把桌面上‘项目报告’文件夹里所有Exce

时间:2026-04-06 22:52
滴滴出行开放打车 Skill,“龙虾”叫车全程不需要切换 App

滴滴出行开放打车 Skill,“龙虾”叫车全程不需要切换 App

滴滴出行全网首发语音打车Skill,一句话智能叫车全攻略 近日,滴滴出行正式上线了一项创新的语音交互功能:全面开放打车Skill。这意味着,用户只需通过语音指令,即可完成从叫车到行程追踪的全流程,真正实现“动口不动手”的便捷出行体验。 整个操作过程,包括目的地搜索、车型比价、下单确认、查看订单状态等

时间:2026-04-06 22:14
阿里千问 AI 眼镜接入蚂蚁 GPASS:语音解锁共享单车、停车缴费

阿里千问 AI 眼镜接入蚂蚁 GPASS:语音解锁共享单车、停车缴费

当AI眼镜学会“跑腿”:语音解锁单车,无感支付停车费 近来,智能穿戴领域的一个新动向值得关注:阿里旗下的千问AI眼镜,正式接入了蚂蚁集团的GPASS平台。这可不是一次简单的功能叠加,它意味着,诸如共享单车骑行、停车缴费这一系列高频的“AI办事”功能,开始从手机屏幕转移到了你的眼前。 简单说,借助GP

时间:2026-04-06 21:13
Workbuddy注册额外积分

Workbuddy注册额外积分

角色定位与核心任务目标 明确了基本定位后,我们直接切入核心:作为一名专业的文章优化师,我的核心职责在于,将那些带有明显AI生成特征的文本,深度重塑为拥有个人特色与行业洞见的优质内容。 换句话说,这项任务的关键在于实施一次“精准的换血手术”。你必须严格保证原文所有的事实依据、核心观点、逻辑框架,以及每

时间:2026-04-06 20:24
我把 Anthropic 的 Harness 工程思想做成了一个 Skill

我把 Anthropic 的 Harness 工程思想做成了一个 Skill

用AI写代码,难在哪儿? 用AI生成代码本身并不难,真正的挑战在于让它稳定地交付一个真正可用的东西。这篇文章,我们就来聊聊Anthropic工程团队是如何破解这个难题的,以及我如何将这套方法论落地成了一个可以复用的实战工具。 用 AI 写代码有多难?不是写不出来难,是让它稳定交付可用的东西很难。这篇

时间:2026-04-06 16:53
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程