基于matlab使用卷积神经网络对晶圆图上的八种制造缺陷进行分类(附源码)

news2024/10/5 14:16:38

一、前言

此示例展示了如何使用简单的卷积神经网络 (CNN) 对晶圆图上的八种制造缺陷进行分类。

晶圆是半导体材料(通常是硅)的薄盘,用作集成电路的基础。每个晶圆产生几个单独的电路(IC),分成芯片。自动检测机测试晶圆上IC的性能。这些机器生成称为晶圆图的图像,指示哪些芯片性能正确(通过),哪些芯片不符合性能标准(失败)。

晶圆图上合格和失效芯片的空间模式可以指示制造过程中的特定问题。深度学习方法可以有效地对大量晶圆上的缺陷图案进行分类。因此,通过使用深度学习,您可以快速识别制造问题,从而及时修复制造过程并减少浪费。

此示例演示如何训练检测和分类八种制造缺陷模式的分类网络。该示例还演示如何评估网络的性能。

二、下载WM-811K晶圆缺陷图数据

此示例使用 WM-811K 晶圆缺陷图数据集。该数据集由811,457张晶圆图图像组成,其中包括172,950张标记图像。每个图像只有三个像素值。该值表示背景,该值表示行为正确的模具,该值表示有缺陷的模具。标记的图像具有基于缺陷模具空间模式的九个标签之一。数据集的大小为 3.5 GB。

设置为数据集的所需位置。使用帮助程序函数下载数据集。

二、预处理和扩充数据

数据作为结构数组存储在MAT文件中。将数据集加载到工作区中。

通过显示结构的第一个元素来浏览数据。该字段包含图像数据。该字段包含缺陷的标签。

2.1 重新格式化数据

此示例仅使用带标签的图像。从结构中删除未标记的图像。

该示例使用与字段指定的约定不同的约定将数据分区为训练集、验证集和测试集。

指定图像类。

要对数据应用其他预处理操作,例如调整图像大小以匹配网络输入大小或应用随机训练网络进行分类,可以使用增强图像数据存储。您无法从结构中的数据创建增强映像数据存储,但可以从表中的数据创建数据存储。将数据转换为具有两个变量的表:

  • WaferImage- 晶圆缺陷图图像

  • FailureType- 每个图像的分类标签

使用帮助程序函数显示每个输入图像类的示例图像。此函数作为支持文件附加到示例。

2.2 通过过采样平衡数据

显示每个类的图像数量。数据集严重不平衡,每个缺陷类别的图像明显少于没有缺陷的图像数量。

要改进类平衡,请使用帮助程序函数对缺陷类进行过采样。此函数作为支持文件附加到示例。帮助程序函数在数据集后附加每个缺陷图像的五个修改副本。每个副本都有以下修改之一:水平反射、垂直反射或旋转 90 度的倍数。

显示类平衡后每个类的图像数量。

2.3 将数据划分为训练集、验证集和测试集

将过采样数据集拆分为训练集、验证集和测试集。大约 90% 的数据用于训练,5% 用于验证,5% 用于测试。

2.4 扩充训练数据

对象指定一组要应用于训练数据的随机增强。向训练图像添加随机增强可以避免网络过度拟合训练数据。

指定网络的输入大小。创建一个增强图像数据存储(深度学习工具箱),用于读取训练数据,将数据大小调整为网络输入大小,并应用随机增强。

创建用于读取验证和测试数据的数据存储,并将数据大小调整为网络输入大小。您无需对验证或测试数据应用随机增强。

三、创建网络

定义卷积神经网络架构。图像输入层的范围反映了晶圆图只有三个级别的事实。

四、指定训练选项

指定 Adam 优化的训练选项。训练网络 30 个纪元。

五、训练网络或下载预训练网络

默认情况下,该示例加载预训练的晶圆缺陷分类网络。预训练网络使您能够运行整个示例,而无需等待训练完成。

六、根据测试数据量化网络性能

使用分类(深度学习工具箱)函数对每个测试图像进行分类。使用混淆垫(深度学习工具箱)函数以混淆矩阵的形式计算网络与地面实况分类相比的性能。使用混淆图(深度学习工具箱)函数可视化混淆矩阵。此矩阵对角线上的值表示正确的分类。完美分类器的混淆矩阵仅在对角线上具有值。

6.1 精度、召回率和 F1 分数

此示例使用多个指标评估网络性能:精度、召回率和 F1 分数。这些指标是为二元分类定义的。为了克服此多类问题的限制,您可以将预测视为一组二元分类,每个分类对应一个分类。

精度是正确预测属于某个类的图像的比例。

对于每个类,使用混淆矩阵中可用的 TP、FP 和 FN 结果计数计算精度、召回率和 F1 分数。

显示每个类的指标。分数接近 1 表示网络性能越好。

6.2 精确召回曲线和曲线下面积 (AUC)

除了返回每个测试图像的分类外,网络还可以预测测试图像是每个缺陷类别的概率。在这种情况下,精度-召回率曲线提供了一种评估网络性能的替代方法。

要计算精度-召回率曲线,首先通过将概率与任意阈值进行比较,对每个缺陷类执行二元分类。当概率超过阈值时,可以将图像分配给目标类。阈值的选择会影响 TP、FP 和 FN 结果的数量以及准确度和召回率分数。若要评估网络性能,必须考虑阈值范围内的性能。精度-召回率曲线在调整二元分类的阈值时绘制精度和召回率值之间的权衡。AUC 指标将类的精度-召回率曲线汇总为 [0, 1] 范围内的单个数字,其中 1 表示无论阈值如何,都是完美分类。

使用该函数计算每个类在阈值范围内的精度、召回率和 AUC。绘制精度-召回率曲线。

理想分类器的精度-召回率曲线通过点 (1, 1)。具有趋向于 (1, 1) 的精度召回率曲线的类(如 和 )是网络性能最佳的类。该网络的性能在该类中最差。计算并显示每个类的精度/召回率曲线的 AUC 值。

七、使用 GradCAM 可视化网络决策

梯度加权类激活映射(Grad-CAM)对网络做出的决策产生可视化解释。您可以使用 gradCAM(深度学习工具箱)函数来识别对网络预测影响最大的图像部分。

7.1 Donut缺陷类别

缺陷的特征是图像具有围绕芯片中心聚集在同心圆中的缺陷像素。缺陷类别的大多数图像在芯片边缘周围没有缺陷像素。

这两个图像都显示了带有缺陷的数据。网络将左侧的图像正确分类为缺陷。网络将右侧的图像错误分类为缺陷。图像具有与函数输出相对应的颜色叠加。对网络分类影响最大的影像区域在叠加层上以鲜艳的颜色显示。对于分类为缺陷的图像,模具边界处的缺陷被视为重要。造成这种情况的一个可能原因可能是,与图像相比,训练集中的图像要多得多。

7.2 Loc缺陷类别

缺陷的特征是图像具有缺陷像素聚集在远离芯片边缘的斑点中。这两个图像都显示了具有 Loc 缺陷的数据。网络将左侧的图像正确分类为缺陷。网络错误地分类了右侧的图像,并将缺陷分类为缺陷。对于分类为缺陷的图像,芯片边界处的缺陷对网络预测的影响最大。缺陷与缺陷的区别主要在于缺陷簇的位置。

八、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

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

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

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

相关文章

XXX汽车ERP系统供应商索赔业务上线,助力业财数据快速闭环(投稿数据化月报四)

供应商三包索赔款项源起QMS质量系统,联动金税系统完成发票开具,最终在SAP系统中创建完成财务凭证。该流程上线前为手工操作,费时费力且效率低下容易出错。针对该业务现状,SAP与QMS业务顾问及开发团队组成开发小组,导入…

Java性能权威指南-总结26

Java性能权威指南-总结26 数据库性能的最佳实践异常日志 数据库性能的最佳实践 异常 Java的异常处理一直有代价高昂的坏名声。其代价确实比处理正常的控制流高一些,不过在大多数情况下,这种代价并不值得浪费精力去绕过。另一方面,因为异常处…

添加 zabbix 客户端主机 自定义监控内容 自动发现与注册(得不到假装不想要)

文章目录 一、添加zabbix客户端主机2.关闭防火墙和修改主机名 二、自定义监控内容1.需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息在客户端创建自定义 key在 Web 页面创建自定义监控项模板 三、zabbix 自动发现与自动注册zabbix 自动发现&#…

HCIE-datacom | 网络准入控制

一、前言 之前提供网络技术咨询服务时,有一位实习生同学向我咨询了有关网络准入的相关情景,在这里我结合华为HCIE-datacom中“网络准入控制”这一节等相关资料,对网络准入技术进行一下简单的理论性说明,与资料的讲解思路相同&…

基于matlab使用AprilTag标记进行相机校准(附源码)

一、前言 AprilTags被广泛用作物体检测、定位应用的视觉标记,并作为相机校准的目标。AprilTags类似于QR码,但旨在编码更少的数据,因此可以更快地解码,这对于实时机器人应用程序非常有用。使用 AprilTags 作为校准模式的优点包括更…

Docker学习笔记21

案例三:使用容器运行一个wordpress应用: 语言开发环境(PHP) 数据库 第一步:创建一个工程目录: mkdir wordpress cd wordpress 第二步:创建一个docker-compose.yaml文件: [rootnode…

Mybatis进阶(2)——为什么用mybatis? 多表查询解决 延迟加载 mybatis缓存 【未完待续】

目录 引出一、为啥用mybatis?二、多表查询之一对多【待续】1.一对多的情况方案一:采用多表联查的方式(1)resultMap(2)查询的java接口和xml的SQL语句(3)对应关系分析(4&am…

使用docker搭建minio分布式对象存储系统

使用docker搭建minio分布式对象存储系统 这里我简单的和大家介绍一下什么是minio ? 附上Minio官网链接:https://minio.org.cn/ MinIO是一种开源的对象存储服务器,通过使用标准的HTTP/REST API来访问和管理数据。它采用分布式架构&#xff0c…

【SAP UI5 控件学习】DAY02 Input组PartII

1. CheckBox控件 1.1 最普通的CheckBox <CheckBox text"Option a" selected"true" />如果需要设置选中状态&#xff0c;需要设置selected属性为true 1.2 部分选中CheckBox <CheckBox text"Option partially selected" selected"t…

【ElasticSearch】DSL查询语法

文章目录 1、DSL查询分类2、DSL基本语法3、全文检索查询4、精确查询5、地理查询6、复合查询--相关性打分算法7、复合查询之Function Score Query8、复合查询之BooleanQuery 1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;…

【ARM Coresight 系列文章 2 - ARM Coresight 介绍】

文章目录 1.1 ARM Coresight 介绍1.1.1 ARM Coresight 发展历史 1.2 ARM Coresight 框架介绍1.1.1 Trace 通路1.1.3 Debug 通路1.1.4 Trigger 通路 1.1 ARM Coresight 介绍 ARM Coresight是ARM公司提供的一种调试和跟踪技术&#xff0c;用于ARM处理器的调试和性能分析。它通过…

Java中规模软件开发实训——简单的文本编辑器(代码注释详解)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;在现代社会中…

k8s如何伸缩应用程序和执行滚动更新

一、伸缩应用程序 我们创建了一个 Deployment (opens new window)&#xff0c;然后通过 服务 (opens new window)提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序。当流量增加时&#xff0c;我们需要对应用程序进行伸缩操作以满足系统性能…

第五章:L2JMobius学习 – 快速部署L2JMobius汉化版

L2JMobius是一套开源的 LineageII 的服务器端代码&#xff0c;使用Java语言编写。在前面的章节中&#xff0c;我们安装了mariadb10数据库以及jdk17运行环境&#xff0c;这两个是必须的。紧接着&#xff0c;我们又安装了eclipse开发工具&#xff0c;然后创建了“L2J_Mobius”Jav…

按键输入实验(stm32)

目录 按键的相关代码key.ckey.h LED的相关代码BEEP的相关代码beep.cbeep.h main.c代码的相关说明相关硬件说明实验结果 说明&#xff1a;以下内容参考正点原子资料 按键的相关代码 key.c void KEY_Init(void) //IO初始化 { GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2Peri…

ModaHub魔搭社区:可视化的AI原生云向量数据库 Milvus 2.2.9 :JSON、PartitionKey、Dynamic Schema

目录 新特性 功能增强 其他优化 问题修复 亮点颇多、精彩程度堪比大版本的 Milvus 2.2.9 来啦&#xff01; 随着 LLM 的持续火爆&#xff0c;众多应用开发者将目光投向了向量数据库领域&#xff0c;而作为开源向量数据库的领先者&#xff0c;Milvus 也充分吸收了大量来自社…

ROS:话题名称设置

目录 一、 前言二、rosrun设置话题重映射三、launch文件设置话题重映射四、编码设置话题名称4.1C4.1.1全局名称4.1.2相对名称4.1.3私有名称 4.2Python 实现4.2.1全局名称4.2.2相对名称4.2.3私有名称 一、 前言 在ROS中节点名称可能出现重名的情况&#xff0c;同理话题名称也可…

[攻防世界] [RE] [APK] app2

解题思路 导入jadx查看manifest.xml 查看主函数并未发现有价值的东西&#xff0c;于是查看manifest.xml中主函数下一个<activity> 截取FileDataActivity代码 package com.tencent.testvuln;import android.os.Bundle; import android.widget.TextView; import com.tence…

2022年真题 - 15 - 磁盘管理(vdo磁盘)

磁盘管理 - vdo磁盘 题目配置验证配置题目 StorageSrv - 磁盘管理 在 storagesrv 上新加一块 10G 磁盘;创建 vdo 磁盘,并开启 vdo 磁盘的重删和压缩;名字为 vdodisk,大小为150G,文件系统为 ext4;并设置开机自动挂载。挂载到 /vdodata。配置 新加一块 10G 磁盘; 安装…

驱动 作业 day4

编写LED灯的驱动&#xff0c;创建三个设备文件&#xff0c;每个设备文件和一个LED灯绑定&#xff0c;当操作这个设备文件时只能控制设备文件对应的这盏灯。 此时没有安装led2 和led3的驱动所以会打开设备文件失败 装完以后就可以正常控制了 以下是设备现象 head.h ubuntuu…