昇腾社区首页
中文
注册

简介

基于MindSpore源码进行产品化封装,提供“reference”“inspection”两个模型的训练和评估脚本文件,晶圆参考图生成和AOI缺陷检测应用场景,训练代码接受命令行参数,进行模型训练、生成图片和精度结果保存。
图1 模型训练流程
图2图3所示,两个模型代码分别存放在“wafer_mindspore/reference”“wafer_mindspore/inspection”目录当中,“reference_train.py”“inspection_train.py”“eval.py”是训练和评估的入口脚本文件。
图2 reference目录

图3 inspection目录

模型训练、转换和评估功能

  • 模型训练:根据给定的训练数据集,划分为训练部分和测试部分,先用训练部分对模型的超参数进行训练,得到ckpt文件后再用测试部分进行精度评估,保存精度最好的ckpt文件。
  • 模型转换:首先使用MindSpore将最好精度的ckpt文件转成air文件,再通过ATC工具将air转成Atlas 200/300/500 推理产品推理所用的om模型。
  • 模型评估:根据给定的测试数据集,采用训练过程中精度最好的ckpt文件进行精度评估,保存评估过程中生成的图片等数据。

配置文件准备

在执行wafer相关脚本前,需要先准备两个“config.json”分别放在“wafer_mindspore/reference”“wafer_mindspore/inspection”目录。(文件名必须为“config.json”。)

  • “wafer_mindspore/reference”下的“config.json”文件示例。

    “range_lut”为必须字段,对应字典内每一个key值(类型:str)代表芯片ID+层ID,value值表示相应芯片层的配置参数,参数说明请参见表1

    {
      "range_lut": {
        "001M1": [[15, 75], [35, 95], 0.4, 12312.123, 2243.23, 2342, 3453, 0, 0, 123]
      }
    }
    表1 wafer_mindspore/reference下config.json文件的range_lut参数说明

    索引值

    类型

    取值范围

    说明

    0

    list

    两个范围在[0, 100000]的int值

    x轴范围。

    1

    list

    两个范围在[0, 100000]的int值

    y轴范围。

    2

    float

    [0, 1]

    阈值。

    3

    float

    (0, 100000)

    die宽。

    4

    float

    (0, 100000)

    die高。

    5

    float

    (0, 100000)

    灰度图宽。

    6

    float

    (0, 100000)

    灰度图高。

    7

    int

    [-1000, 1000]

    x轴偏移量。

    8

    int

    [-1000, 1000]

    y轴偏移量。

    9

    int

    [50, 2048]

    小图尺寸。

  • “wafer_mindspore/inspection”下的“config.json”文件示例。
    • “range_lut”“soie_zone”“stations”为必须字段,“range_lut”“soie_zone”对应字典内每一个key值(类型:str)代表芯片ID+层ID,value值(类型:list)表示相应芯片层的配置参数。“range_lut”的参数说明请参见表2
    • “soie_zone”每个key对应的value类型为list,list的每个元素代表两对x,y坐标,共四个值,每个值的取值范围是[0, 100000]。
    • “stations”每个key代表机台名称(类型:str),对应的value值(类型:int,取值:0或1)代表该机台的x,y轴范围在“range_lut”第一和第二个list里的索引值。
    {
      "range_lut": {
        "001M1": [[[15, 75], [35, 95]], [[60, 120], [20, 80]], 0.4, 12312.123, 2243.23, 2342, 3453, 1]
      },
      "soie_zone": {
        "001M1": [[[15, 75], [35, 95]], [[345, 735], [435, 995]]]
      },
      "stations": {
        "device_a": 0,
        "device_b": 1
      }
    }
    表2 wafer_mindspore/inspection下config.json文件的range_lut参数说明

    索引值

    类型

    取值范围

    说明

    0

    list

    两个长度为2的list,每个元素类型为int,范围为[0, 100000]

    两个机台的x轴范围。

    1

    list

    两个长度为2的list,每个元素类型为int,范围为[0, 100000]

    两个机台的y轴范围。

    2

    float

    [0, 1]

    阈值。

    3

    float

    (0, 100000)

    die宽。

    4

    float

    (0, 100000)

    die高。

    5

    float

    (0, 100000)

    灰度图宽。

    6

    float

    (0, 100000)

    灰度图高。

    7

    float

    [0.1, 10]

    倍率比例。