使用 ModelArts,轻松玩转手写数字识别

前言

最近有个新功能,需要完成手抄数据的录入功能,现写功能肯定来不及。

想起来之前写我与ModelArts的故事时,体验过的ModelArts的功能里,除了数据标注,还有手写数字识别,正好做下调研,看能不能借助ModelArts,快速实现业务需求。

又见ModelArts

ModelArts,是华为云提供的一个面向AI开发者的一站式开发平台.

ModelArts提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成,以及端-边-云模型按需部署能力,帮助用户快速创建和部署模型管理全周期AI工作流。

ModelArts具有数据准备效率高、模型训练耗时少、一键部署云/边/端、自动学习等优点,支持应用到图像分类、物体检测、视频分析、语音识别、产品推荐、异常检测等多种AI应用场景。

使用 ModelArts,轻松玩转手写数字识别_第1张图片

手写数字识别体验

什么是手写数字识别

手写数字识别,即手写数字图像识别,是华为云AI开发平台ModelArts提供的基于自定义算法构建模型。用户可以在ModelArts平台上训练作业、部署推理模型并预测。

ModelArts产品文档中提供了详细的流程手册,为用户提供如何将本地的自定义算法通过简单的代码适配,实现在ModelArts上进行模型训练与部署的全流程指导。

接下来,让我们一起开启这个有趣的实验。

手写数字识别实验的官方文档地址:使用自定义算法构建模型(手写数字识别)。

前置工作

开始前,我们还需要做一些简单的前置工作:

  • 已注册华为帐号并开通华为云;
  • 使用华为云帐号登录ModelArts管理控制台,检查ModelArts帐号状态,帐号不能处于欠费或冻结状态。

操作流程

步骤1:准备训练数据

第一步需要下载MNIST数据集,数据集是本次体验必须的基础数据。

数据集的来子MNIST官网,从官网讲数据集下载至本地。

官网有四个文件分别是训练集的压缩包文件、训练集标签的压缩包文件、验证集的压缩包文件、验证集标签的压缩包文件。验证集标签。

这四个文件均需要下载:

使用 ModelArts,轻松玩转手写数字识别_第2张图片

步骤2:准备训练文件和推理文件

本地新增三个文件train.py、customize_service.py和config.json,它们分别是该实验需使用的训练脚本、推理脚本和推理配置文件。每个文件的具体内容见文档。

步骤3:创建OBS桶并上传文件

1、登录OBS管理控制台,创建OBS桶。

区域:华北-北京四

桶名称:obs-modelarts-test(注意如果重复可加后缀)

其他保持默认,点击"立即创建"。

使用 ModelArts,轻松玩转手写数字识别_第3张图片

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。

2、在新增的BOS桶中新增文件。

  • 新增文件pytorch。
  • 在pytorch文件下新增三个文件:mnist-data、mnist-code、mnist-output。
  • 在mnist-data下上传之前下载的好的训练数据集。

使用 ModelArts,轻松玩转手写数字识别_第4张图片

  • 在mnist-code下上传之前的本地文件train.py,并新增文件:infer。
    • 在infer中上传之前的本地文件customize_service.py和config.json。

使用 ModelArts,轻松玩转手写数字识别_第5张图片

步骤4:创建训练作业

1、登录ModelArts管理控制台,选择和OBS桶相同的区域。

使用 ModelArts,轻松玩转手写数字识别_第6张图片

2、在左侧导航栏的“训练管理”-> “训练作业”中,单击“创建训练作业”。

  • 填写创建训练作业相关信息,其他项保持默认(如下截图)。

使用 ModelArts,轻松玩转手写数字识别_第7张图片

使用 ModelArts,轻松玩转手写数字识别_第8张图片

使用 ModelArts,轻松玩转手写数字识别_第9张图片

  • 单击“提交”,确认训练作业的参数信息,确认无误后单击“确定”。

2、检查训练结果

  • 页面自动返回“训练作业”列表页,当训练作业状态变为“已完成”时,即完成了模型训练过程。

使用 ModelArts,轻松玩转手写数字识别_第10张图片

  • 单击训练作业名称,进入作业详情界面。

查看训练作业日志信息。

使用 ModelArts,轻松玩转手写数字识别_第11张图片

注:观察日志是否有明显的Error信息,如果有则表示训练失败,请根据日志提示定位原因并解决。

  • 在训练详情页左下方单击训练输出路径,跳转到OBS目录。

使用 ModelArts,轻松玩转手写数字识别_第12张图片

  • 在OBS目录页,查看是否存在model文件夹,且model文件夹中是否有生成训练模型。

使用 ModelArts,轻松玩转手写数字识别_第13张图片

注:如果未生成model文件夹或者训练模型,可能是训练输入数据不完整导致,请检查训练数据上传是否完整,并重新训练。

步骤5:推理部署

1、创建AI应用

  • 在ModelArts管理控制台击左侧导航栏中的“AI应用管理>AI应用”,进入“我的AI应用”页面,单击“创建”。

使用 ModelArts,轻松玩转手写数字识别_第14张图片

  • 在“创建AI应用”页面,填写相关参数(如下截图),然后单击“立即创建”。

使用 ModelArts,轻松玩转手写数字识别_第15张图片

  • 在AI应用列表页面,查看AI应用状态,当状态变为“正常”时,表示AI应用创建成功。

使用 ModelArts,轻松玩转手写数字识别_第16张图片

  • 单击AI应用名称左侧的小三角,打开此AI应用下的所有版本。在对应版本所在行,单击操作列“部署>在线服务”,将AI应用部署为在线服务。

使用 ModelArts,轻松玩转手写数字识别_第17张图片

  • 在“部署”页面,参考下图填写参数,然后根据界面提示完成在线服务创建。本案例适用于CPU规格,节点规格需选择CPU。

使用 ModelArts,轻松玩转手写数字识别_第18张图片

  • 完成服务部署后,返回在"线服务页面列表"页,等待服务部署完成,当服务状态显示为“运行中”,表示服务已部署成功。

使用 ModelArts,轻松玩转手写数字识别_第19张图片

步骤6:预测结果

1、在"线服务页面列表"页,单击"预测",进入预测页。

使用 ModelArts,轻松玩转手写数字识别_第20张图片

2、请求类型选择“multipart/form-data”,请求参数填写“image”,单击“上传”按钮上传示例图片,然后单击“预测”。

示例图片:

使用 ModelArts,轻松玩转手写数字识别_第21张图片

预测结果:

使用 ModelArts,轻松玩转手写数字识别_第22张图片

步骤7:清除资源

如果不再需要使用此模型及在线服务,建议清除相关资源,避免产生不必要的费用。

需要清除的资源包括在线服务、AI应用、训练作业、OBS 桶及文件夹:

  • 在“在线服务”页面,“停止”或“删除”刚创建的在线服务。
  • 在“AI应用管理”页面,“删除”刚创建的AI应用。
  • 在“训练作业”页面,“删除”运行结束的训练作业。
  • 进入OBS,删除本示例使用的OBS 桶及文件夹,以及文件夹的文件。

总结

这次的手写数字识别实验就完成了。

先来说体验感受:

  • 整体感觉是流程顺畅,步骤清晰简便,基本上没有遇到阻塞的地方。
  • 产品文档讲解的十分详细,需要特别注意的地方给了文字提示,所以实验基本没耗费太长时间。
  • 无论是模型训练,还是手写数字识别,都十分快速。

体验中,唯一的不方便的地方,就是这个实验要求预测的图片尽量与训练集中的图片相似,有些局限性。对相似的界定在哪呢?手写数字的纸张样式还是水性笔的型号?

比如我写了一组数据,有些可以识别正确,有些却识别错了,且最常被错误识别成数字“2”。

使用 ModelArts,轻松玩转手写数字识别_第23张图片

这里希望对于有固定要求的方面,能够要求更明确一些,比如明确一下手写数字的大小、字体的粗细。

而,文档中还有一个很友好的提示:

ModelArts的AI Gallery中提供了常见的精度较高的算法和相应的训练数据集,用户可以在AI Gallery的资产集市中获取。

我准备找些精读高的训练数据集,继续进行实验。

你可能感兴趣的:(华为云,机器学习)