1 命题要求
① 基于 Pytorch 框架开发无监督异常检测算法,实现
PCB 板缺陷检测功能,
推理时输入待测试图像,输出存在异常区域的缺陷分割图(一张二值图);
② 训练过程允许利用其他数据集以提升模型性能;
③ 将模型能在 CPU 上进行推理(可以将
pytorch 模型转换为
openvino 模型,利用OpenVINO 在 CPU 平台);

• 数据采集说明
本命题提供的数据集是在工业场景下的 PCB 数据集,其采集均在统一光源、相机和参数的采集环境下进行,而且每张图片只包含该类别的单个单面 PCB 板。
• 缺陷标注要求
对于有部分破损的单个元件或元件存在位置偏移情况时,需要将元件和异常区域一同标注。

2 作品介绍
• 数据分析
通过查看数据集的图片,发现以下两个情况:
(1)
PCB 在不同角度下会出现不同的反光情况;
(2) 物料盒随着使用次数增多,表面出现越来越明显的划痕。

解决思路:
情况 1:采用多角度、多反射条件下的合格图像样本进行模型训练,以减少由于反光情况导致的模型误判。
情况 2:本作品的方案是专注于对 PCB 板区域进行训练,以排除非 PCB 板区域的干扰。
• 数据处理
为了专注于对 PCB 板区域进行训练,需要进行数据处理。采用模板匹配的方法从数据集的”OK” 文件夹中定位 PCB ,并提取用于训练的图像。

• 模型选择
根据本赛题的要求,需要采用无监督学习方法获取适用于 PCB 异常检测的分割模型。考虑到模型需要在
CPU 上进行推理,需要确保所选的模型具备快速的推理速度,同时保持高准确度的分割能力,并且能够利用较少的图片数量进行有效训练。
通过调研发现,目前在异常检测中的无监督学习方法主要分为基于图像相似度和基于特征相似度两类。基于图像相似度的方法侧重于像素级别的比较,其核心思想是重建出与输入样本最相近的正常图像,两者仅在缺陷区域存在差异。这类方法包括自编码器
(auto-encoder,
AE)、变分自编码器
(variational auto-encoder,
VAE)、生成对抗模型
(generative
adversarial networks, GAN) 等。基于特征相似度的方法则侧重于比较高维特征,利用深度神经网络的特征提取能力,通过找到具有区分性的特征嵌入并减少无关特征的干扰进行检测。这类方法包括深度支持向量数据描述
(deep
support vector data description, Deep SVDD)、基于 kNN 的SPADE
模型和基于领域感知补丁的 PatchCore 模型等。
考虑到本赛题要求训练时尽可能减少正常样本的数量,基于图像相似度的方法可能无法充分训练网络。因此,选择了基于特征相似度的方法,通过提取少量正常样本的特征来实现无监督异常检测。通过比较各模型在 MVTec 数据集上的异常分割性能,最终选择
PatchCore 模型进行进一步优化。

• 模型训练
为了提升模型在多样化环境中对异常检测的鲁棒性,本作品采用了数据增强技术,包括仿射变换、弹性变换、添加乘法噪声和色调变化等方法。目的在于加强模型在不同光照条件、不同位置和不同焊接情况下的性能表现。

为了训练出性能优异的模型,需要对模型进行超参数调优。通过研读 PatchCore 模型提出者的论文,深入了解模型的工作原理,并确定了各个超参数对模型性能的影响程度。根据各超参数的影响程度,逐一进行优化,并观察模型在验证集上的表现。

以下是部分实验的结果和结论(结果使用性能评估工具获得):
(1) 不同特征采样率

(2) 不同感知补丁尺寸

(3) 不同训练尺寸

(4) 不同训练图片数

• 模型部署与推理
本作品利用OpenVINO作为模型的推理引擎,在CPU上进行模型部署,并结合传统的图像处理方法,以混合推理的方式提高检测性能并满足本赛题中的缺陷标注要求。
混合推理的流程如下图所示:

后处理优化中的分数图处理主要解决的问题:
(1) 当出现元件破损异常时,分数图中只有破损位置具有较高的异常分数,而未破损区域分数较低;

(2) 拍摄的元件较高导致离焦时,即使表面出现破损,异常分数也可能偏低;

(3) PCB 中存在高反光元件时,反光现象可能被误判为元件破损异常;

(4) 在异形 PCB 板(如 PCB6n
)中,非 PCB 区域出现干扰因素时,可能被误判为缺陷;

为了满足命题中“对于有部分破损的单个元件或元件存在位置偏移情况时,需要将元件和异常区域一同标注”的要求,并解决元件离焦、元件高反光和异形PCB板的情况,可以制作一张单通道的像素深度为8位的多标签掩膜图,在一张图中提供后处理需要的各种标注。

由于存在多标签掩膜图,训练的模型能够专注于 PCB 内部区域的异常识别,从而有效地避免了由非
PCB 区域的异常(物料盒磨损)引起的误判。而多余板面识别则通过颜色分割、轮廓提取等图像处理方法来实现。

3 自测耗时和性能数据
训练硬件环境:CPU为i9-10900X,GPU为RTX-3090
推理硬件环境:CPU为i5-13600F

最后,感谢您阅读本文。在比赛期间,我努力探索 PCB 板无监督缺陷检测的各种可能性,但我承认我对该领域的了解可能还有待深入。希望这篇文章能为您提供一些有益的见解,并且鼓励您继续探索和学习。如果您有任何疑问或建议,我非常乐意听取您的意见。请随时与我联系,让我们一起共同进步!