一、前言
此示例演示如何使用单类全卷积数据描述 (FCDD) 异常检测网络检测药丸图像上的缺陷。
异常检测的一个关键目标是让人类观察者能够理解为什么经过训练的网络将图像分类为异常。FCDD支持e可解释的分类,它用证明神经网络如何达到其分类决策的信息来补充类预测。FCDD 网络返回一个热图,其中包含每个像素异常的概率。分类器根据异常分数热图的平均值将图像标记为正常或异常。
二、下载用于分类数据集的药丸图像
此示例使用 PillQC 数据集。该数据集包含来自三类的图像:没有缺陷的图像,药丸中芯片缺陷的图像以及污垢污染的图像。数据集提供 149 张图像、43 张图像和 138 张图像。数据集的大小为 3.57 MB。
设置为数据集的所需位置。使用帮助程序函数下载数据集。此函数作为支持文件附加到示例。该函数下载一个 ZIP 文件,并将数据提取到子目录。
此图显示了每个类的示例图像。左边是没有缺陷的普通药丸,中间是被污垢污染的药丸,右边是芯片缺陷的药丸。虽然此数据集中的图像包含阴影、焦点模糊和背景颜色变化的实例,但此示例中使用的方法对这些图像采集伪像具有鲁棒性。
三、加载和预处理数据
创建读取和管理图像数据的 。将每个图像标记为 、 或根据其目录名称。
3.1 将数据划分为训练集、校准集和测试集
此示例实现了使用异常值曝光的 FCDD 方法,其中训练数据主要由正常图像组成,并添加了少量异常图像。尽管主要只对正常场景的样本进行训练,但该模型学会了如何区分正常场景和异常场景。
在训练数据集中分配 50% 的正常图像和每个异常类的一小部分 (5%)。将 10% 的正常图像和每个异常类的 20% 分配给校准集。将剩余的图像分配给测试集。
进一步将训练数据拆分为两个数据存储,一个仅包含正常数据,另一个仅包含异常数据。
3.2 扩充训练数据
该功能将 90 度旋转以及水平和垂直反射随机应用于每个输入图像。通过将函数与帮助程序函数指定的操作一起使用,将二进制标签添加到校准和测试数据集。帮助程序函数在此示例末尾定义,并为类中的图像分配二进制标签,为 or 类中的图像分配二进制标签。可视化九个增强训练图像的样本。
创建 FCDD 模型 此示例使用完全卷积数据描述 (FCDD) 模型。FCDD 的基本思想是训练网络生成异常分数图,该图描述输入图像中每个区域包含异常内容的概率。 函数返回 ImageNet 预训练 Inception-v3 网络的前三个下采样阶段,用作预训练主干。
四、训练网络或下载预训练网络
默认情况下,此示例使用帮助程序函数下载 FCDD 异常检测器的预训练版本。帮助程序函数作为支持文件附加到此示例。您可以使用预训练网络运行整个示例,而无需等待训练完成。
五、设置异常阈值
为异常检测器选择异常分数阈值,该检测器根据图像的分数是高于还是低于阈值对图像进行分类。此示例使用包含正常和异常图像的校准数据集来选择阈值。
获取校准集中每个图像的平均异常分数和真实标签。绘制正常类和异常类的平均异常分数的直方图。分布由模型预测的异常分数很好地分隔。
将前两个输入参数指定为校准数据集的地面实况标签和预测异常分数。将第三个输入参数指定为 因为真阳性异常图像的值为 。将异常检测器的属性设置为最佳值。
OC 曲线说明了分类器在一系列可能的阈值下的性能。ROC曲线上的每个点代表使用不同阈值对校准集图像进行分类时的误报率(x坐标)和真阳性率(y坐标)。蓝色实线表示 ROC 曲线。红色虚线表示对应于 50% 成功率的无技能分类器。曲线下 ROC 面积 (AUC) 指标表示分类器性能,与完美分类器对应的最大 ROC AUC 为 1.0。
六、评估分类模型
将测试集中的每个图像分类为正常或异常。获取每个测试图像的实况标注。该函数计算多个指标,用于评估检测器对测试数据集的准确性、精度、灵敏度和特异性。
如果指定多个异常类标签(如 和 在此示例中),该函数将计算整个数据集和每个异常类的指标。
七、解释分类决策
您可以使用异常检测器预测的异常热图来帮助解释将图像分类为正常或异常的原因。此方法可用于识别漏报和误报中的模式。您可以使用这些模式来确定增加训练数据的类平衡或提高网络性能的策略。
7.1 计算异常热图显示范围
计算一个显示范围,该范围反映在整个校准集中观察到的异常分数范围,包括正常和异常图像。与将每个图像缩放到其自身的最小值和最大值相比,跨图像使用相同的显示范围可以更轻松地比较图像。在此示例中,对所有热图应用显示范围。
7.2 查看异常图像的热图
选择正确分类的异常的图像。此结果是真阳性分类。显示图像。
7.3 查看普通图像的热图
选择并显示正确分类的正常图像的图像。此结果是真正的否定分类。
7.5 查看假阴性图像的热图
假阴性是具有药丸缺陷异常的图像,网络将其归类为正常。使用来自网络的解释来深入了解错误分类。
从测试集中查找任何假阴性图像。使用该函数获取假阴性图像的热图叠加。
7.6 查看误报图像的热图
误报是没有药丸缺陷异常的图像,网络将其归类为异常。在测试集中查找任何误报。使用来自网络的解释来深入了解错误分类。例如,如果异常分数已本地化为图像背景,则可以探索在预处理期间抑制背景。
八、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。