基于matlab使用单类全卷积数据描述异常检测网络检测药丸图像上的缺陷(附源码)

news2024/12/29 10:41:13

一、前言

此示例演示如何使用单类全卷积数据描述 (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版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python快速将多个文件夹内的文件移动至一个文件夹内

在日常办公中生活中,我们经常需要将多个文件夹内的文件如:(图片png,jpg,jpeg,word文档,Excel,PPT等等),需要将这个文件夹内的文件移动至同一个文件夹内,如果我们复制粘贴的话,将会非常的繁琐以及…

Impala3.4源码阅读笔记(七)解析ScanNode(上)

前言 本文为笔者个人阅读Apache Impala源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。 正文 我们知道Impala执行一条SQL的主要流程…

在vscode中配置git bash终端

将以下配置添加到vscode中的settings.json中 "terminal.integrated.profiles.windows": {"PowerShell": {"source": "PowerShell","icon": "terminal-powershell"},"Command Prompt": {"path"…

【C++】类和对象(中篇)----->六大默认成员函数

目录 一、类的6个默认成员函数 二、构造函数 1、概念 2、特性 三、析构函数 1、概念 2、特性 四、拷贝构造函数 1、概念 2、特征 五、赋值运算符重载 1、运算符重载 2、值运算符重载 2.1 赋值运算符重载格式 2.2 赋值运算符只能重载成类的成员函数不能重载成全局函数 2.3…

使用postman发请求报错Error: connect ECONNREFUSED 127.0.0.1:33210

原因:代理服务器问题 解决: 两种方案任选其一 1.电脑网络设置,关闭代理服务器 2.postman 的设置proxy 取消勾选

Mac中VSCode配置vue项目环境

一、下载VSCode 进入VSCode官网,下载Mac版安装包 设置中文: vscode导航栏view -> Command Palette -> 输入Configure Display Language -> 选择简体中文 -> 重启 二、下载node.js 下载地址:node.js官网,建议下载长期维护版本…

交叉编译paho带SSL

1.新建文件夹 /home/yiweijiao/woke_lab/paho 2.解压paho.mqtt.c到/home/yiweijiao/woke_lab/paho/paho.mqtt.c 3.新建文件夹/home/yiweijiao/woke_lab/paho/openssl_lib 将已经交叉编译好的openssl复制到这里 4.cd /home/yiweijiao/woke_lab/paho/paho.mqtt.c 新建文件夹…

hive和datax數據採集數量對不上

hive和datax數據採集數量對不上 對數據的時候發現有些對不上,在hive中 staff_id DF67B3FC-02DD-4142-807A-DF4A75A4A22E’的數據只有1033 而在mysql中發現staff_id DF67B3FC-02DD-4142-807A-DF4A75A4A22E’的數據有4783條記錄(昨天的記錄是4781&#…

控制哈威比例多路阀放大板

控制各种不带电气位移反馈的HAWE哈威多路比例阀PSV系列、PSVF系列等比例电磁铁。 比例多路阀用于控制液压执行元件的运动方向的运动方向和运动速度(无级地,并且不取决于负载).为此,可使多个执行元件同时并相互独立地以不同的速度和压力工作,直到所有部分流量的总和达到泵的流量…

leetcode 404. 左叶子之和

2023.7.6 这道题关键就是要判断某个节点是否为左叶子节点,但是必须要靠他的父节点来判断,逻辑就是其父节点的左孩子不为空 并且 父节点的左孩子的左孩子和右孩子都为空,此时该节点就是左叶子了。 下面用两种迭代法求解: 队列&…

聚观早报|比亚迪在巴西建工厂;国产Model系列贡献约半数交付量

今日要闻:比亚迪在巴西建三座工厂;小米对华为锁屏专利发起无效宣告请求;国产Model系列贡献约半数交付量;杨澜公司回应数百万财产被冻结;雅虎公司计划重新上市 比亚迪在巴西建三座工厂 7 月 5 日消息,据比亚…

C语言学习(三十三)---动态内存(二)

在上一节的内容中,我们初步学习了有关动态内存的有关内容,但是在使用上实际上还有很多的细节问题,今天我们将继续对该部分的内容进行学习,好了,话不多说,开整!!! 动态内…

第一章 Android 基础--开发环境搭建

文章目录 1.Android 发展历程2.Android 开发机器配置要求3.Android Studio与SDK下载安装4.创建工程与创建模拟器5.观察App运行日志6.环境安装可能会遇到的问题7.练习题 本专栏主要在B站学习视频: B站Android视频链接 本视频范围:P1—P8 1.Android 发展历…

【机器学习核心总结】什么是KNN( K近邻算法)

什么是KNN( K近邻算法) 虽然名字中有NN,KNN并不是哪种神经网络,它全名K-Nearest-Neighbors:K近邻算法,是机器学习中常用的分类算法。 物以类聚,人以群分。KNN的基础思想很简单,要判断一个新数据的类别&…

AI最新开源:LMSYS Org开源LongChat、法律大语言模型ChatLaw、中文医疗对话模型扁鹊

一周SOTA:LMSYS Org开源LongChat、法律大语言模型ChatLaw、中文医疗对话模型扁鹊 文章目录 1. LMSYS Org发布LongChat,上下文碾压64K开源模型2. 北大团队发布法律大模型 ChatLaw3. 扁鹊:指令与多轮问询对话联合微调的医疗对话大模型 1. LMSY…

Linux 内核源代码情景分析(四)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理 Linux 内核源代码情景分析(一) Linux 内核源代码情景分析(二) Linux 内核源代码情景分析&#xff…

开源项目推荐 【SkyEyeSystem】

大家好,今天向大家推荐一个开源项目——SkyEyeSystem。 这是一个基于Spring Boot的全网热点爬虫项目,旨在提供全面而准确的全网热搜数据。 关于项目 SkyEyeSystem通过定时任务间隔10min爬取全网热搜数据。目前包括的平台有: 微博热搜B站热…

Huawei Cloud EulerOS 安装 MySQL8.0

EulerOS 安装 MySQL8.0 安装MySQL配置文件 安装MySQL 当创建一个基于EulerOS的服务器时,MySQL是一个常见且强大的数据库管理系统选择。在此博客中,我将向您展示如何在EulerOS上安装MySQL 8.0。 步骤1:更新系统 在开始之前,让我…

【FATE】联邦学习 optimizer在FATE的自定义trainer中被改变

起因 使用torch的optimizer添加了2组parameter,传参进入FATE的trainer后,optimizer被改变,且FATE框架无提示。 代码差不多是下面这样: # optimizer中加入2组优化参数(param) optimizer torch.optim.SGD…

滑动窗口 /【模板】单调队列

day1 滑动窗口 /【模板】单调队列 题目描述 有一个长为 n n n 的序列 a a a,以及一个大小为 k k k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 例如: The array is [ …