基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别
wolfmax老狼,飞桨领航团无锡团团长,飞桨开发者技术专家(PPDE),AICA六期学员,某半导体CIM软件集成商图画算法工程师,首要研究方向为图画检测、图画分割等算法。
作者AI Studio主页
aistudio.baidu.com/aistudio/pe…

项目布景

半导体晶圆作为集成电路的载体,在制作进程中需求反复通过复杂的薄膜、光刻、刻蚀等工序。而这些制作进程中工序的异常会导致晶圆缺点的产生。在晶圆质检中,运用电学测验设备对晶圆片上的每颗晶粒进行电性测验,可得到用于描述晶圆缺点状态的晶圆图谱,如下图所示。

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

在上图中,每个小方块即是晶圆上的一颗芯片,有颜色标识的即为测验异常的芯片。对晶圆上有缺点的芯片的空间散布图谱的形式进行辨认剖析,可有用辅助辨认制作进程中的缺点本源,并有针对性的进行改进和预防,从而提升晶圆制作的产品良率。例如,上图中有部分长条状的失效可能是划伤等形成。

本项目依据开源的WM-811K晶圆缺点图谱数据集,运用飞桨图画分类套件PaddleClas进行晶圆缺点分类图谱剖析,演示怎么运用PaddleClas快速搭建一个完整的图画分类计划,包括数据集预备、模型练习、验证、测验以及相应的布置。

  • 项目链接

aistudio.baidu.com/aistudio/pr…

数据集介绍

本项目选用开源的WM-811K数据集。原始数据能够从以下网站下载。

  • 下载网址

mirlab.org/dataSet/pub…

需求注意的是从该网站下载下的数据分为MATLAB格局的.mat文件和python序列化后的.pkl文件。该数据集共收集了811457张晶圆测验后的图片。可是要注意,其中只有172950做了标签,将失效依照芯片的空间散布分类成9个类别(0,1,2…8)。

对每种缺点的图谱进行可视化预览能够对数据有根本的知道。在数据集中有个label_list.txt文件,该文件中包含了每种缺点的标签(0-8)及其对应的缺点称号。下面运用该文件创建缺点称号,并挑选相应的图片进行可视化。

在train.txt文件中,每种缺点随机挑选5个样本进行可视化。

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

依据图片和缺点的称号,能够大概了解每种缺点的分类方法,例如:

  • Center:大部分缺点的芯粒坐落晶圆圆心附近;​

  • Donut:缺点的芯粒空间散布类似于一个甜甜圈;

  • Loc:部分呈现缺点芯粒聚集等。

开发环境预备

本项目运用PaddleClas进行图谱分类算法模型的练习和验证,需求装置PaddleClas以及相应的东西,装备PaddleClas的运行环境。

下载PaddleClas

履行git clone指令下载,GitHub比较慢,能够从Gitee上下载。别的,在本项目环境中打包了一份PaddleClas,运用时直接解压即可。

  • git clone

gitee.com/paddlepaddl…

装置相应的依靠

运用pip install指令装置PaddleClas根目录下的requirements.txt即可,一同能够设置镜像,加快装置。

  • pip install –upgrade -r requirements.txt -i

mirror.baidu.com/pypi/simple

挑选模型练习

装备好PaddleClas的运行环境后,能够运用PaddleClas内的模型直接进行练习,这也是运用套件的优点。模型组网现已完结,直接修正config装备文件即可完结模型的练习,非常高效!在本项目中,咱们运用用于服务器端布置的ResNet模型和移动端布置的MobileNet模型来进行演示。

运用ResNet50模型进行练习

有了PaddleClas开发套件,只需求将对应模型的yaml文件依照自己的项目装备进行更改即可。首要是指定数据集的方位以及相应的优化器装备。关于ResNet50,相应的config文件方位为:

PaddleClas/ppcls/configs/ImageNet/ResNet/ResNet50.yaml

关于该模型,咱们作如下装备进行练习:

  • epochs:200
  • learning rate: 0.01
  • learning rate scheduler: PiecewiseDecay

运用toos/train.py脚本敞开一键练习:

pythontools/train.py-c/home/aistudio/PaddleClas/ppcls/configs/ImageNet/ResNet/ResNet50.yaml

练习成果可视化:

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

  • 将练习进程可视化能够方便地调查练习进程的变化。差不多150个epoch之后,模型的精度稳定到0.85以上;
  • 别的,能够直观地看到学习率选用PiecewiseDecay方式衰减的变化趋势。

模型评价

在练习进程中,咱们能够在练习的脚本中参加–eval,能够完结一边练习一边评价。别的,在练习结束之后,咱们也能够独自对模型进行评价,运行tools/eval.py脚本,一同指定模型的方位即可。履行以下指令评价ResNet50模型的作用:

pythontools/eval.py-c/home/aistudio/PaddleClas/ppcls/configs/ImageNet/ResNet/ResNet50.yaml-oGlobal.pretrained_model=/home/aistudio/PaddleClas/output/ResNet50/best_model

模型猜测

完结评价后,能够运用tools/infer.py脚本进行单张图片或者多张图片批量猜测。在猜测脚本中传入运用的模型和测验的图片路径即可。

pythontools/infer.py-c/home/aistudio/PaddleClas/ppcls/configs/ImageNet/ResNet/ResNet50.yaml-oGlobal.pretrained_model=/home/aistudio/PaddleClas/output/ResNet50/best_model-oInfer.infer_imgs=/home/aistudio/work/test/Center_85238.jpg

模型导出布置

飞桨支撑导出推理模型用于布置推理场景,比较于练习调优场景,推理模型会将网络权重与网络结构进行持久化存储。并且飞桨支撑运用猜测引擎加载推理模型进行猜测推理。在PaddleClas套件中通过tools/export_model.py导出模型。导出后,将生成以下三个文件:

  • inference.pdmodel:用于存储网络结构信息;
  • inference.pdiparams:用于存储网络权重信息;
  • inference.pdiparams.info:用于存储模型的参数信息,在分类模型和辨认模型中可忽略。

通过运行如下指令导出模型:

pythontools/export_model.py-c/home/aistudio/PaddleClas/ppcls/configs/ImageNet/ResNet/ResNet50.yaml-oGlobal.pretrained_model=/home/aistudio/PaddleClas/output/ResNet50/best_model-oGlobal.save_inference_dir=deploy/models/ResNet50

推理

运用ResNet50模型推理及可视化

运用以下指令完结ResNet50模型的推理:

%cd/home/aistudio/PaddleClas/deploy
!pythonpython/predict_cls.py\
-cconfigs/inference_cls.yaml

运用ResNet50模型进行推理,能够对照文件名和推理的成果来判断猜测是否正确。关于ResNet模型,能够统计出75张图片,有5张猜测过错。咱们将分类过错的图片独自拿出来剖析,直观地剖析过错的原因,便于改进。

importosimportpandasaspdimportcv2importmatplotlib.pyplotasplt%matplotlibinline
img_root="/home/aistudio/work/test"wrong_list=['Edge-Loc_48272.jpg','Edge-Loc_58508.jpg','Edge-Loc_7413.jpg','Loc_87266.jpg','Scratch_355662.jpg']wrong_label=['Loc','Edge-Ring','Loc','Donut','Loc']
plt.figure(figsize=(15,6))foriinrange(len(wrong_list)):img_path=os.path.join(img_root,wrong_list[i])img=cv2.imread(img_path)plt.subplot(1,len(wrong_list),i+1)plt.imshow(img[:,:,::-1])plt.xlabel(wrong_list[i])#plt.axis('off')plt.title("PredictResult:"+wrong_label[i],fontsize=12)

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

运用MobileNet推理及可视化

将inference_cls.yaml仿制一份并更改为inference_cls_mobilenetv3.yaml,一同将该文件内的模型的方位更改成MobileNet的方位,即:

inference_model_dir:"/home/aistudio/PaddleClas/deploy/models/MobileNetV3_large_x0_75"

履行以下指令完结MobileNet模型的推理:

%cd/home/aistudio/PaddleClas/deploy
!pythonpython/predict_cls.py\
-cconfigs/inference_cls_mobilenetv3.yaml

最终,仅有3张图片分错,Test_Acc达到 96%,进一步改进即可上demo!

wrong_list=['Donut_7334.jpg','Edge-Loc_48272.jpg','Loc_94941.jpg']
wrong_label=['Random','Loc','Donut']
plt.figure(figsize=(15,6))
foriinrange(3):
img_path=os.path.join(img_root,wrong_list[i])
img=cv2.imread(img_path)
plt.subplot(1,3,i+1)
plt.imshow(img[:,:,::-1])
plt.xlabel(wrong_list[i])
#plt.axis('off')
plt.title("PredictResult:"+wrong_label[i],fontsize=12)

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

依据上述两节的可视化成果来看,能够发现分类过错的图谱大部分是Loc、Edge-Loc等图片,这种现象与晶圆图谱分类的特殊性有关,与一般的图片分类不同,晶圆图谱的失效形式类别和区域方位强相关,例如同样是loc失效,在中间为center类别,在边际为Edge-Loc类别,在其他方位为Loc,这个和图片分类中的方位不变性相对立。对此,后期能够通过增加相应类别的样本数量来改进作用。

总结

本项目首要介绍怎么在半导体制作中引进深度学习技术解决问题。半导体制作作为高端制作业,其整个工业链的安全非常重要。本项目展示运用飞桨图画分类套件PaddleClas来快速解决问题,期望能在此范畴抛砖引玉,期望更多的小伙伴能发掘更多的应用,一同助力半导体智能制作工业的发展!大国崛起,吾辈自强!