文档首页 > > 最佳实践> Ascend应用教程> 使用预置算法实现物体检测(Ascend310)

使用预置算法实现物体检测(Ascend310)

分享
更新时间:2020/07/17 GMT+08:00

ModelArts默认提供了一个预置算法“yolov3_resnet18”,通过简单调参配置后,训练所得模型,可快速部署至Ascend 310,提供高性能推理能力。

  1. 数据准备
  2. 使用预置算法创建训练作业
  3. 模型转换
  4. 导入模型
  5. 部署为在线服务(Ascend 310)

数据准备

  1. 获取样例数据集,获取的数据集包含“train”“test”两个目录,“train”目录下包含图片数据及其标注信息,请将“train”目录下的数据上传至OBS。

    由于数据集中数据较多,推荐使用OBS Browser+工具上传文件。为保证模型质量,建议将“train”目录下的数据全部上传至OBS,用于模型训练。

  2. 登录ModelArts管理控制台,在左侧菜单栏中选择“数据管理 > 数据集”
  3. 在数据集管理页面,单击“创建数据集”,创建一个“物体检测”类型的数据集。
    其中,“数据集输入位置”,选择步骤1中数据存储的OBS路径。“数据集输出位置”,请务必选择一个空目录存储,且此目录不能是“数据集输入位置”对应目录的子目录。
    图1 创建数据集
  4. 参数填写完成后,单击右下角的“创建”,完成数据集的创建。此时页面将自动跳转至“数据集”列表中。
  5. “数据集”列表页面,单击数据集名称,进入数据集概览页,然后单击右上角的“开始标注”,进入数据集详情页。
  6. 在数据集详情页面中,等待数据同步至ModelArts中。由于数据集已完成标注,无需重新标注,只需等待数据同步即可。

    “已标注”页签下呈现所有上传数据时,表示数据已完成同步。

    图2 数据完成同步
  7. 单击左上角“返回数据集概览”,然后在数据集概览页中,单击“发布”
  8. 在弹出的对话框中,填写“版本名称”“版本格式”,可使用默认值。本示例可不设置“训练验证比例”参数,可为空。然后单击“确定”完成发布。
  9. 在数据集列表页面,等待数据集发布完成。发布过程中的数据集,其名称前面有个运行标记。当数据集发布结束后,其操作列的发布按钮将呈现为蓝色可点击状态。
    请耐心等待,必须等数据集发布成功后,才可以执行下一步训练模型的操作。
    图3 发布过程中的数据集

使用预置算法创建训练作业

ModelArts提供了“yolov3_resnet18”预置算法,使用此算法训练的模型,可部署至Ascend 310芯片中。首先,需使用此算法创建训练作业,获得相应的模型。

  1. 在ModelArts管理控制台,选择“训练管理>训练作业”
  2. 在训练作业列表页面,单击“创建”。在创建训练作业页面中,几个关键参数的设置如下所示。

    “算法来源”:选择“预置算法”,然后预置算法列表中选择“yolov3_resnet18”

    “数据来源”:选择“数据集”,然后在下拉框中选择数据准备中创建的数据集及其对应的版本。

    “训练输出位置”:请选择一个OBS空目录,用于存储训练输出的模型。

    “运行参数”:可以直接使用默认值运行此示例。如果想了解更多参数详情,请参见运行参数说明

    “资源池”:建议选择GPU规格的资源池创建训练作业。

    图4 使用预置算法创建训练作业
  3. 参数填写完成后,单击“下一步”,按界面提示完成训练作业创建。
  4. 等待训练作业完成。

    训练作业运行需要一段时间,根据您设置的max_epochs以及数据集的大小不同而不同,max_epochs设置的值越大,数据集越大,作业运行时间则越长。

    根据使用经验,针对此样例数据集,当max_epochs设置为400时,选用GPU规格,其运行时长在4.5小时左右。

    当训练作业的状态变更为“运行成功”时,表示已运行结束。您可以单击训练作业名称,进入详情页面,了解训练作业的“配置信息”、“日志”、“资源占用情况”和“评估结果”等信息。您也可以在配置的“训练输出位置”对应的OBS目录下获得训练生成的模型。

    图5 训练作业运行成功

模型转换

使用预置算法训练所得的模型,需通过转换功能,转成适用于Ascend芯片的格式,即“om”格式。

  1. 在ModelArts管理控制台,选择“模型管理 > 压缩/转换”
  2. 在模型转换作业列表页面,单击“创建任务”。在创建转换任务页面中,几个关键参数的设置如下所示。
    • “输入框架”:选择“TensorFlow”
    • “转换输入目录”:请选择训练作业输出路径下的“<输出路径>/V00X/frozen_gragh”目录。其中“<输出路径>/V00X”请根据实际参数填写。
    • “输出框架”:选择“MindSpore”
    • “转换输出目录”:请选择训练作业输出路径下的“<输出路径>/V00X/om/model”目录。其中“<输出路径>/V00X”请根据实际参数填写。
    • “转换模板”:用于Ascend 310芯片的模型请选择“TF-FrozenGraph-To-Ascend-C32”模板。更多转换模板及其高级参数介绍请参见转换模板

      “高级选项”:本示例可直接使用参数值如下所示。如果需要修改,请参见转换模板了解参数说明。

      “images”代表模型输入节点,“1”表示batch size,“3”表示channels数量,其中,“images”“1”“3”都是固定的,不支持修改,“352”“640”根据训练作业中的“input_shape”参数进行设置。“images:1,352,640,3”中间用英文逗号隔开,不能包含空格。其他“高级选项”参数使用默认值即可。

      图6 转换模型
  3. 转换模型的参数填写完成后,单击“立即创建”,页面自动跳转至“压缩/转换”列表。

    当模型转换的“任务状态”变为“成功”时,表示模型已被转换成“om”格式。

    图7 模型转换成功

导入模型

模型转换为om格式后,可采用“从模板中选择元模型”的方式,导入模型。

  1. 在ModelArts管理控制台,选择“模型管理 > 模型”
  2. 在模型列表页面,单击导入。进入导入模型页面,参考如下说明填写关键参数。
    • “元模型来源”:选择“从模板中选择”
    • “模型模板”:本示例的模型需部署在Ascend 310芯片上,因此需选择“ARM-Ascend模板”。然后在“模型目录”中选择模型转换步骤中“转换输出目录”
    • “输入输出模式”:由于“yolov3_resnet18”预置算法的模型为“物体检测”类型的,因此此处需选择预置物体检测模式
    • “部署类型”:默认勾选“在线服务”“批量服务”“边缘服务”。保持默认选项即可。
      图8 从模板中选择模型
  3. 模型导入参数填写完成后,单击立即创建。页面自动跳转至模型列表页面,等待模型导入结果。

    当模型的状态变为“正常”时,表示模型导入成功。

    图9 模型导入成功

部署为在线服务(Ascend 310)

模型导入成功后,可将此模型部署为在线服务,在部署时可使用Ascend 310芯片资源。

本文仅描述了部署为在线服务的操作指导,针对批量服务的部署,其操作步骤类似,不再赘述。详细批量服务的部署指导,可参见ModelArts用户指南

  1. “模型管理>模型>我的模型”列表中,单击操作列的“部署 > 在线服务”
    图10 部署模型
  2. “部署”页面,参考如下说明填写关键参数。

    “资源池”:选择“公共资源池”

    “选择模型及配置”“模型”“版本”会自动选择前面导入的模型。在“计算节点规格”中,选择您创建的Ascend 310芯片资源,目前支持“ARMCPU:3 核 6 GiB Ascend: 1 * Ascend 310”资源规格。其他参数可使用默认值。

    图11 部署为在线服务
  3. 参数设置完成后,单击“下一步”,根据界面提示,完成在线服务的部署。

    您可以进入“在线服务列表”页面,等待服务部署结束,当服务状态变为“运行中”时,表示服务部署成功。

    图12 运行中的服务
  4. 在线服务部署完成后,您可以单击服务名称进入服务详情页。
    • 访问服务:了解调用指南,获取API接口地址,可通过postman或使用curl命令发送请求,访问在线服务
    • 预测:单击“预测”页签,上传一个测试图片,进行预测。
    更多操作,可参见ModelArts用户指南
    图13 调用指南
    图14 预测
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问