3. 缺陷数据集介绍:公开数据集的特点、规模与适用场景

做缺陷检测,数据是绕不开的坎。我入行那会儿,最头疼的就是找不到合适的公开数据集,只能自己吭哧吭哧拍图、标图。现在好多了,几个经典数据集已经成了行业标杆。这一节,我把它们掰开揉碎了讲清楚。

3.1 MVTec AD:工业异常检测的“标准考卷”

MVTec AD 是目前用得最广的工业异常检测数据集,没有之一。它由德国 MVTec 公司发布,专门为无监督异常检测设计。

核心特点:只提供正常样本用于训练,测试集包含正常和缺陷样本。说白了,就是让模型学会“什么是好的”,然后去发现“不好的”。

属性 具体数值
物体类别 15 类(10 类物体 + 5 类纹理)
训练集图像 3,629 张(全部为正常样本)
测试集图像 1,725 张(含正常与缺陷)
缺陷类型 划痕、凹坑、污染、变形、破损等 70+ 种
图像分辨率 700×700 ~ 1024×1024

适用场景:

  • 无监督异常检测算法评估(如 PatchCore、PaDiM、CFLOW-AD)
  • 纹理表面缺陷检测(如皮革、木材、瓷砖)
  • 物体表面缺陷检测(如螺丝、坚果、药丸)

我的经验:MVTec AD 的缺陷种类多,但每类缺陷的样本量其实不大。我曾经用它做迁移学习预训练,效果不错。但要注意——它不包含真实产线上的光照变化和噪声,所以模型在真实场景中往往需要微调。

3.2 NEU-DET:钢铁表面的“专业题库”

NEU-DET 来自东北大学,专注于热轧钢带表面缺陷。如果你做的是金属表面检测,这个数据集绕不开。

属性 具体数值
缺陷类别 6 类
每类样本数 300 张
总图像数 1,800 张
图像分辨率 200×200
标注方式 类别标签 + 缺陷区域边界框

六类缺陷分别是:

  1. 裂纹(Crazing)
  2. 夹杂物(Inclusion)
  3. 斑块(Patches)
  4. 麻点(Pitted Surface)
  5. 氧化皮(Rolled-in Scale)
  6. 划痕(Scratches)

避坑指南:我曾经直接用 NEU-DET 训练 YOLOv5,发现模型对“裂纹”和“划痕”经常混淆。后来仔细一看,这两类在 200×200 的低分辨率下确实很像。建议做数据增强时,专门增加一些裁剪和旋转,帮模型区分这些易混类。

适用场景:

  • 钢铁、金属表面缺陷检测
  • 小目标缺陷检测算法验证
  • 有监督缺陷分类与定位

3.3 KolektorSDD:电子元件的“实战案例”

KolektorSDD 来自斯洛文尼亚的 Kolektor 集团,是一个真实产线采集的数据集。它聚焦于电子换向器表面缺陷。

属性 具体数值
总图像数 399 张
缺陷图像数 52 张
正常图像数 347 张
图像分辨率 500×1240(高分辨率)
缺陷类型 表面裂纹、破损

为什么它特别?这是真正的工业产线数据,光照、角度、背景都不完美。我拿它做测试时,发现很多在 MVTec AD 上跑得很好的模型,到这里直接掉点 10% 以上。原因很简单——真实数据比实验室数据“脏”得多。

适用场景:

  • 真实产线环境下的缺陷检测
  • 小样本缺陷检测(只有 52 张缺陷图)
  • 高分辨率图像下的缺陷定位

3.4 三大数据集对比:选哪个?

我经常被问到:“这三个数据集,我该用哪个?” 嗯,这取决于你的目标。

对比维度 MVTec AD NEU-DET KolektorSDD
数据规模 大(5,354 张) 中(1,800 张) 小(399 张)
缺陷多样性 高(70+ 种) 中(6 类) 低(2 类)
真实度 中(实验室环境) 中(实验室环境) 高(真实产线)
标注粒度 像素级分割 边界框 图像级标签
推荐用途 算法对比、基准 金属检测、分类任务 真实场景验证

我的建议:做学术研究,先用 MVTec AD 刷基准;做工业落地,一定要在 KolektorSDD 或自己采集的数据上验证。NEU-DET 适合做金属领域的专项优化。别指望一个数据集解决所有问题——我踩过这个坑。

3.5 数据集选择决策流程

下面这张图是我自己总结的选型思路,帮你快速定位该用哪个数据集。

数据集选择决策流程 你的目标是什么? 学术研究 / 算法对比 工业落地 / 真实场景 首选 MVTec AD 首选 KolektorSDD 无监督异常检测 有监督分类/检测 小样本场景 高分辨率检测 💡 说明 无论选哪个,最终都要用自己产线的数据做验证。公开数据集只是起点。

3.6 我的个人建议

最后说几句掏心窝的话。公开数据集是很好的起点,但别迷信它们。我见过太多人在 MVTec AD 上刷到 99% 的 AUC,一到产线就崩。为什么?因为公开数据集的缺陷是“摆拍”的,真实缺陷千奇百怪。

重要提醒:如果你要做工业项目,我建议把公开数据集当作“练手工具”,最终一定要建立自己的数据集。哪怕只有几百张图,也比用公开数据集硬套强。我曾经在一个 PCB 检测项目上,用 MVTec AD 预训练 + 自己 200 张产线数据微调,效果比只用公开数据好了 30%。

嗯,数据集就讲到这里。记住一句话:没有最好的数据集,只有最适合你问题的数据集。