首页 游戏 软件 资讯 排行榜 专题
首页
AI资讯
【论文复现】PaDiM-Paddle:基于分布建模的异常检测与定位方法

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

热心网友
34
转载
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。

相关攻略

Trae在Python数据分析与机器学习项目中的实际应用评测
AI资讯
Trae在Python数据分析与机器学习项目中的实际应用评测

Trae在Python数据分析与机器学习项目中主要通过四种方式提供支持:利用Auto模式自动生成并执行端到端分析脚本;通过AgentCLI命令行自动化机器学习建模流程;对现有代码进行智能调试与优化;借助语音交互快速构建数据处理函数。这些功能覆盖了从需求描述到代码生成、模型构建及代码优化的全流程。

热心网友
05.23
Python collections模块高效使用指南与代码优化技巧
业界动态
Python collections模块高效使用指南与代码优化技巧

在Python编程中,你是否也曾编写过类似的统计代码? 统计词频 count = {} for word in words: if word in count: count[word] += 1 else: count[word] = 1 实际上,这种高频的计数需求,完全可以通过Python内置

热心网友
05.22
Trae支持的Python版本详解及各版本兼容性指南
AI资讯
Trae支持的Python版本详解及各版本兼容性指南

Trae稳定支持Python3 10至3 13版本,3 9及以下版本无法运行。Python3 14处于实验性支持阶段,核心功能可能受限。当存在多个3 10以上版本时,Trae优先选择虚拟环境中的解释器,其次为最高系统版本。此外,Trae仅兼容64位Python解释器,不支持32位架构。

热心网友
05.22
Python爬虫报错解决方案:从DOM解析到视觉识别的稳定抓取技巧
AI资讯
Python爬虫报错解决方案:从DOM解析到视觉识别的稳定抓取技巧

在企业级数据采集与自动化运维实践中,IT团队普遍面临一个核心挑战:Python爬虫为何频繁报错,修补维护何时才能终结?随着前端技术演进与动态反爬机制的日益复杂,依赖DOM解析的传统爬虫脚本往往陷入“部署即过时,运行即异常”的困境。本文将深入解析传统爬虫代码脆弱性的根本原因,并系统介绍一种能够重塑数据

热心网友
05.21
Docker镜像制作标准流程:Java、Vue、Python与Go项目实践指南
业界动态
Docker镜像制作标准流程:Java、Vue、Python与Go项目实践指南

很多刚接触Docker的开发者常有一个误解:制作镜像不就是把源代码打包进去就行了吗?实际上,在企业级的标准化开发流程中,直接将源码打包进Docker镜像是非常不专业的做法。这会导致镜像体积臃肿、引入潜在安全风险,并且模糊了“构建环境”与“运行环境”的边界。本文将深入解析Java、Vue、Go、Pyt

热心网友
05.21

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

比特币现货持有者坚定持仓 BTC价格逼近115000美元关键阻力位
web3.0
比特币现货持有者坚定持仓 BTC价格逼近115000美元关键阻力位

现货持有者坚守仓位,比特币接近115,000水平 近期比特币(BTC)价格接近$115,000水平,市场整体情绪谨慎,但现货持有者依旧坚守仓位,显示出一定的多头信心。 市场现状与资金流动 那么,当前市场的资金究竟在如何流动?分析显示,一个有趣的现象正在上演:短线资金的流入其实相当有限,市场热度并未急

热心网友
05.23
瑞波币XRP现最强看涨形态目标6美元 近期回调后走势深度解析
web3.0
瑞波币XRP现最强看涨形态目标6美元 近期回调后走势深度解析

目录 要点介绍:分析师称XRP呈现“最强看涨结构”高位清算集中于2 90美元以上区域 周四,XRP价格稳稳站在了2 80美元上方。这个位置守住了,意味着什么?意味着市场向那个经典的“杯柄形态”目标价——6美元以上——又迈进了一步。 要点介绍: 先看几个核心数据:周四XRP报收2 82美元。技术分析显

热心网友
05.23
以太坊衍生品市场企稳 交易员聚焦4500美元关键阻力位突破
web3.0
以太坊衍生品市场企稳 交易员聚焦4500美元关键阻力位突破

近期,以太坊(ETH)衍生品市场经历了短暂的闪崩,但随后价格快速企稳,交易者开始关注关键突破点——$4,500水平。 ETH衍生品市场现状 市场情绪往往在剧烈波动后显露真容。从最新的链上数据和期权、永续合约的交易情况来看,那场短暂的闪崩更像是一次压力测试——结果是,市场波动率显著下降,多空力量似乎进

热心网友
05.23
狗狗币DOGE暴涨11%交易量激增四倍 市场反弹行情能否持续
web3.0
狗狗币DOGE暴涨11%交易量激增四倍 市场反弹行情能否持续

DOGE单日暴涨11%,交易量激增四倍,市场风向变了? 最近,加密货币市场又热闹起来了。DOGE(狗狗币)上演了一出“旱地拔葱”,价格单日暴涨11%,更关键的是,成交量直接翻了四倍。这种“价量齐升”的场面,无疑给整个迷因币板块打了一针强心剂,市场情绪肉眼可见地回暖了。 DOGE价格拉升原因分析 那么

热心网友
05.23
欧易OKX官方APP下载指南 安全交易入口与安装教程
web3.0
欧易OKX官方APP下载指南 安全交易入口与安装教程

如何安全获取欧易(OKX)官方APP?一份详尽的下载与使用指南 Binance币安 欧易OKX ️ Huobi火币️ 当人们谈论“欧易易欧”时,指的往往是那个全球顶尖的数字资产交易平台——欧易(OKX)。作为业务版图庞大的行业巨头,其官方APP无疑是用户进行交易、查看行情和管理资产的核心工具。不过,

热心网友
05.23