【异常检测数据集】MVTEC AD

数据集地址: https://www.mvtec.com/company/research/datasets/mvtec-ad

原文链接: https://openaccess.thecvf.com/content_CVPR_2019/papers/Bergmann_MVTec_AD_–_A_Comprehensive_Real-World_Dataset_for_Unsupervised_Anomaly_CVPR_2019_paper.pdf

摘要

MVTec数据集包含5354张不同目标和纹理类型的高分辨彩色图像。它包含用于训练的正常(即不包含缺陷)的图像,以及用于测试的异常图像。异常有70种不同类型的缺陷,例如划痕、凹痕、污染和不同结构变化。

此外,本文为异常提供了像素级精确的标签。

本文还对目前最先进的基于深度结构的无监督异常检测方法进行了评估,例如卷积自动编码CAE、生成对抗网络GAN、基于预训练卷积神经网络的特征描述符以及传统的计算机视觉方法。

MVTec数据集是第一个全面的、多目标、多缺陷并且提供像素级精确标签的异常检测数据集,关注于真实世界应用。

动机

由于缺乏缺陷样本或者不清楚哪种类型的缺陷会出现,异常检测任务必须用无监督算法来检测异常区域。

一种方法是通过测试一个网络是否能够检测一个新的输入数据是否与训练数据的分布相匹配来进行异常检测。

然而,这种方法大多关注分类设置(分类数据集),参与训练的inlier数据和测试的outlier数据的分布差异很大。

通常将这类算法称为离群点检测或者单类分类检测。常见的评估方法是将数据集(例如MNIST、CIFAR-10和ImageNet数据集)中的一类或者多类设置为异常类别,作为测试数据,剩下的类设置为名义数据,并在名义数据上训练一个检测模型。在测试阶段,测试训练后的模型是否能够正确预测测试样本属于异常。

虽然在图像层面上的分类很重要,但是在本文所说的异常检测任务上的性能如何是不清楚的。

本文所说的异常检测任务指,在与训练图像非常接近并且只在可能非常小、有限的区域中存在细微的差别的图像中发现novelties。

要为这类具有挑战的场景开发机器学习模型,需要合适的数据集。目前,在无监督异常检测任务中还没有类似的数据集。

因此,为了填补这一空白,本文引入了MVTec AD数据集,模拟真实世界的工业检测场景。

MVTec AD数据集包含5354张来自不同领域的5种纹理和10种物体的高分辨图像,一共有73种类型的缺陷,为每张缺陷图像(一共有1888张)提供了像素级精确的标签。

本文还在这个数据集上对无监督异常检测中先进的方法以及传统方法进行全面的评估,包括对异常图像的分割和分类性能。此外,本文提出了一种用超参数(最小异常面积以及异常二值决策阈值)确定图像中异常区域的方法,超参数是利用没有任何缺陷图像估计的。

缺陷类型:物体表面的缺陷(如划痕、凹痕)、物体部件变形等结构缺陷或缺少部件的缺陷。总共有73种不同类型的缺陷。

图像类型:RGB和灰度(灰度只有网格、螺丝和拉链3种)。

分辨率:700x700-1024x1024

评价指标

每种方法提供了一个单通道的空间图,其中大数值表示某个像素属于异常区域。为了得到最终的分割结果,并对每个像素进行二值决策,必须确定合适的阈值。本文提出了一种明确的方式,从一组随机选择的验证集(不参与训练)中估计阈值。对于每一种缺陷,本文定义一个最小缺陷面积,即在阈值化的异常图中,连通域必须大于最小缺陷面积才被分类为缺陷区域。对于每一种评估方法,本文用一个不断提高的阈值分割无缺陷验证集的异常图。当验证集上最大的异常区域刚好低于用户定义的面积时,停止分割。分割产生的阈值用于进一步的评估。

基于给定的阈值,本文评估每一种方法用于异常分类和分割任务的性能。为了评估分割性能,本文评估了the relative per-region overlap of the segmentation with the ground truth以及AUC。真正例率定义为正确分类为异常的像素比例。假正例率定义为错误分类为异常像素的比例。

结果
没有一种方法可以在所有物体和纹理类别中始终表现良好。

本文的缺点
1)仅根据一组无缺陷图像找到一个合适的阈值是非常困难的。2)最小缺陷面积是经验值。

数据集分布

15个数据类型,存放在15个文件夹下,每个文件夹都包含train,test和groundTruth三个文件夹。
在这里插入图片描述
在这里插入图片描述

├── bottle # 瓶子
│   ├── ground_truth
│   ├── license.txt
│   ├── readme.txt
│   ├── test
│   └── train
├── cable # 缆绳
├── capsule # 胶囊
├── carpet # 地毯
├── grid # 格栅
├── hazelnut # 榛子
├── leather  # 皮革
├── license.txt
├── metal_nut  # 金属螺母
├── pill  # 药丸
├── readme.txt
├── screw  # 螺丝钉
├── tile   # 瓦片
├── toothbrush  # 牙刷
├── transistor # 晶体管
├── wood   # 木材
└── zipper  # 拉链

Reference

https://blog.csdn.net/weixin_38621214/article/details/120954554

### MVTec AD 数据集文件夹结构 MVTec AD 是一个用于无监督异常检测的综合性真实世界数据集[^1]。此数据集中,样本按照特定的方式进行了精心组织。 #### 文件夹层次结构 整个数据集分为多个顶级目录,每个目录代表一种物体或纹理类别。这些类别进一步细分为子文件夹来区分正常和异常情况: - **根目录** (`/path/to/MVTec_AD`): 包含所有类别的顶层父级文件夹。 下面是一个典型的文件路径示例: ``` /path/to/MVTec_AD/ ├── bottle/ │ ├── train/ │ └── test/ ├── cable/ │ ├── train/ │ └── test/ ... ``` #### 训练与测试划分 训练集(`train`)主要用于模型学习正常的外观模式;而测试集(`test`)则用来评估性能,在这里既包含正常实例也包括带有不同类型的缺陷或者异常状况的例子。 ##### `train` 子文件夹 仅含有标记为“good”的图像,表示没有任何可见瑕疵的产品图片。例如: ``` /path/to/MVTec_AD/bottle/train/good/*.png ``` ##### `test` 子文件夹 除了有类似的“good”分类外,还增加了多种具体的异常类型命名的子文件夹,如“scratch”,“contamination”。每种异常都有对应的像素级别的掩码(mask),用以指示哪些部分属于异常区域。例如: ``` /path/to/MVTec_AD/bottle/test/crack/*.png # 异常图像 /path/to/MVTec_AD/bottle/test/crack_mask/*.png # 对应的mask图像 ``` #### 图像尺寸及格式 所有的原始图像是通过高分辨率工业 RGB 传感器获取并经过裁剪处理后的版本,其分辨率为700×700至1024×1024之间。对于某些类别(比如网格、螺丝钉以及拉链),提供了灰度形式的数据[^3]。 ```python import os def list_dataset_structure(base_path): categories = sorted(os.listdir(base_path)) structure_info = [] for category in categories: full_category_path = os.path.join(base_path, category) if not os.path.isdir(full_category_path): continue subdirs = ['train', 'test'] for subdir in subdirs: current_dir = os.path.join(full_category_path, subdir) if os.path.exists(current_dir): items = os.listdir(current_dir) info_line = f"{category}/{subdir}: {len(items)} folders or files" structure_info.append(info_line) return "\n".join(structure_info) print(list_dataset_structure("/path/to/MVTec_AD")) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值