文档

工业质检解决方案

更新时间:

在生产制造过程中,为了提升缺陷检测效率,PAI提供了工业质检解决方案。该解决方案借助人工智能算法,帮助您快速构建端到端的质检服务。本文为您介绍该解决方案的使用流程。

背景信息

缺陷检测是生产制造过程中必不可少的一步,广泛应用于各个工业领域,包括3C、电子、汽车、化工及轻工等领域。虽然人工智能和机器视觉等检测技术逐渐成熟,但人工目视的方法仍占据较大比重,导致了生产自动化程度低、生产效率低、难以形成精益化生产等问题。针对该问题,阿里云PAI借助人工智能算法,提出了如下解决方案。

  • 解决方案

    1. 基于智能标注(iTAG)平台和PAI数据集管理,对目标场景的数据进行快捷标注和样本管理。

    2. 基于PAI提供的模型和算法,针对自己的数据,在DSW平台上进行模型Fine-Tune,从而构建具体场景的质检模型。

    3. 将模型进行EAS在线部署,形成完整的端到端流程,通过访问服务自动识别图片中的缺陷。

  • 使用流程

    基于阿里云PAI,构建工业质检解决方案的使用流程如下。

    image
    1. 准备数据

      使用PAI提供的示例iTAG数据,或基于智能标注(iTAG)进行原始数据标注。导出标注结果上传到OSS,用于后续的模型训练。

    2. 基于DSW构建质检模型

      在DSW平台,参考DSW Gallery提供的案例,构建模型。

    3. 部署及调用模型服务

      通过模型在线服务EAS,您可以将训练好的模型部署为在线服务,并在实际的生产环境中调用,从而进行推理。

前提条件

在开始执行操作前,请确认您已完成以下准备工作。

  • 已开通PAI(DSW、EAS)后付费,并创建默认工作空间,详情请参见开通并创建默认工作空间

  • 已创建OSS存储空间(Bucket),用于存储原始图像和训练获得的模型文件。关于如何创建存储空间,详情请参见控制台创建存储空间

  • 已创建DSW实例,建议镜像选择modelscope:tf1.15torch1.11-gpu-py37-cu113-ubuntu20.04,GPU机型为P100或V100,内存大于32 GB,详情请参见创建DSW实例

准备数据

您可以使用DSW Gallery中PAI提供的示例iTAG数据,也可以使用iTAG标注的自定义数据集。如果数据未标注,可基于智能标注(iTAG)对原始数据进行标注。iTAG标注流程如下,更详细的操作流程,详情请参见iTAG使用文档

  1. 将待标注的图像数据上传到OSS,具体操作,请参见控制台上传文件

  2. 创建数据集。

    在PAI的数据集管理模块,通过扫描文件夹创建数据集的方式,将上传到OSS的图像文件创建为数据集,具体操作,请参见创建及管理数据集

  3. 创建打标任务并完成打标任务处理。

    1. 通过智能标注(iTAG)管理员控制台,创建标注任务,详情请参见创建标注任务

    2. 通过智能标注(iTAG)标注员控制台,进行数据标注,详情请参见标注图像(打标,质检及验收)。标注示例如下。

    imageimageimageimage

  4. 标注完成后,导出.manifest的标注结果文件,详情请参见导出标注结果数据

  5. 将标注结果文件、标签文件、原始图像文件按照以下目录结构,上传到DSW的Notebook,详情请参见上传与下载数据文件

    itag_det_example
    |--imgs
    |--class_list.txt
    |--pet_det.manifest

    其中:

    • imgs:该目录存放原始图像文件。

    • class_list.txt:标签文件,按行填写数据标签,例如:

      类别一
      类别二
    • pet_det.manifest:在上述步骤中获取的标注结果文件。

基于DSW构建质检模型

  1. 进入DSW Gallery页面,详情请参见进入DSW Gallery

  2. 在DSW Gallery页面,构建以下两种质检模型。

    • 目标检测模型

      名称或描述文本框中输入YOLOX,然后按回车键。在右侧的基于YOLOX模型和iTAG标注数据的图像检测示例区域,单击在阿里云DSW打开,并按照控制台操作指引构建yolox目标检测模型。image.png如果您使用的是iTAG标注的自定义数据集,请将以下数据集目录替换为准备数据中的自定义数据集目录。image

    • 语义分割模型

      名称或描述文本框中输入STDC,然后按回车键。在右侧的基于EasyCV的STDC图像语义分割示例区域,单击在阿里云DSW打开,并按照控制台操作指引构建图像语义分割模型。image.png

      说明

      目前只能使用DSW Gallery中PAI提供的示例数据,不能使用自定义数据集。

  3. 将训练后得到的_export.pt为后缀的模型,上传到OSS,详情请参见控制台上传文件

部署及调用模型服务

部署模型服务的具体操作步骤如下。

  1. 进入模型在线服务(EAS)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型部署 > 模型在线服务(EAS),进入模型在线服务(EAS)页面。

  2. 部署模型服务。

    1. 模型在线服务(EAS)页面,单击部署服务,在自定义模型部署区域,单击自定义部署

    2. 部署服务页面,配置参数,并单击部署image

      将以下JSON文件内容粘贴到对应配置编辑下的文本框中。

      {
          "name": "easycv_yolox_example",
          "processor": "easycv",
          "model_path": "oss://examplebucket/epoch_10_export.pt",
          "model_config": {"type":"YoloXPredictor"},
          "metadata": {
              "instance": 1
          },
          "cloud": {
              "computing": {
                  "instance_type": "ecs.gn5i-c4g1.xlarge"
              }
          }
      } 

      其中:

      • name:需要替换为您自己的服务名称,您可以直接在控制台模型服务信息区域修改该参数。

      • processor:配置为easycv。EAS提供的EasyCV Processor可以加载EasyCV框架训练得到的深度学习模型,更多EasyCV processor使用说明,详情请参见预置Processor使用说明

      • model_config:您可以在控制台模型服务信息区域修改模型类别

        • 当部署yolox目标检测模型时,该参数配置为yolox目标检测

        • 当部署图像语义分割模型时,该参数配置为语义分割

  3. 查看模型服务的公网地址和访问Token。

    1. 模型在线服务(EAS)页面,单击目标服务服务方式列下的调用信息

    2. 调用信息对话框的公网地址调用页签,查看公网调用的访问地址和Token

  4. 使用脚本进行批量调用。

    1. 创建调用模型服务的Python脚本eas_predict.py。

      import requests
      import base64
      import json
      resp = requests.get('http://exmaplebucket.oss-cn-zhangjiakou.aliyuncs.com/images/000000123213.jpg')
      ENCODING = 'utf-8'
      datas = json.dumps( {
                  "image": base64.b64encode(resp.content).decode(ENCODING)
                  })
      head = {
         "Authorization": "NTFmNDJlM2E4OTRjMzc3OWY0NzI3MTg5MzZmNGQ5Yj***"
      }
      for x in range(0,10):
          resp = requests.post("http://150231884461***.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/test_easycv_yolox_example", data=datas, headers=head)
          print(resp.text)

      其中:image:需要将图像数据编码成Base64格式。

    2. eas_predict.py的Python脚本上传至您的任意环境,并在脚本上传后的当前目录执行如下调用命令。

      python <eas_predict.py>

      其中<eas_predict.py>需要替换为实际的Python脚本名称。

  5. 监控服务指标。调用模型服务后,您可以查看模型调用的相关指标水位,包括QPS、RT、CPU、GPU及Memory。

    1. 模型在线服务(EAS)页面,单击已调用服务服务监控列下的image图标。

    2. 服务监控页签,即可查看模型调用的指标水位。image