Model Arts 新手入门 —— 找云宝【我的低代码AI体验】

举报
福州司马懿 发表于 2023/01/02 00:46:18 2023/01/02
【摘要】 这里提供了一个“找云宝”样例(“云宝”是华为云的吉祥物),帮助您快速熟悉ModelArts自动学习的使用过程。

Model Arts

首先登录华为云官网:https://www.huaweicloud.cn/

然后依次选择“产品”—>“人工智能”—>“AI开发平台ModelArts”

图片.png

Model Arts 官网地址为:https://www.huaweicloud.cn/product/modelarts.html

图片.png

AI平台ModelArts,是面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。

新手入门 —— 找云宝

项目概述

使用自动学习实现物体检测应用

实验目的

这里提供了一个“找云宝”样例(“云宝”是华为云的吉祥物),帮助您快速熟悉ModelArts自动学习的使用过程。

实验步骤

  1. 准备数据
    登录OBS服务,创建OBS桶和文件夹。(请自定义桶名称,不能与其他桶重名)
    创建OBS桶和文件夹的操作指导请参见 创建桶新建文件夹。为保证数据能正常访问,请务必保证创建的OBS桶与ModelArts在同一区域。

  2. 获取数据
    单击 数据集下载链接,将 “Yunbao-Data-Custom” 数据集下载至本地并解压。
    参考 上传文件,使用批量上传方式将 “Yunbao-Data-Custom” 文件夹下的所有文件上传至 “test-modelarts/dataset-yunbao” OBS路径下。获取的数据集分为2个子目录,分别为 “eval” 和 “train”。“train” 存储的数据用于模型训练,“eval” 存储的数据可用于模型的预测。

  3. 执行引导
    完成前两步后,点击下面“开始引导”按钮,根据引导完成找云宝任务

准备数据

登录华为云官网:https://www.huaweicloud.cn/

然后依次选择“产品”—>“存储”—>“对象存储服务OBS”

图片.png

或者直接进入OBS官网:https://www.huaweicloud.cn/product/obs.html

图片.png

对象存储服务(Object Storage Service,OBS)是一个基于对象的存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求

创建OBS桶

进入控制台,左侧默认会定位到“桶列表”项,按流程引导步骤创建桶

注意:创建桶操作是免费的,但往桶里面存储数据需要按量收费

图片.png

桶命名规范有几点要求

  1. 不能与别人创建的桶重名
  2. 仅支持小写字母、数字、中划线(-)、英文句号(.)
  3. 禁止以中划线(-)或英文句号(.)开头及结尾

配置如下(你们可以自行修改)

  1. 区域:华北-北京四
  2. 桶名称:yunbao-2023
  3. 数据冗余存储策略:单AZ存储(为了省钱)
  4. 默认存储类型:低频访问存储
  5. 桶策略:私有

图片.png

点击“创建”按钮,会出来一个确认对话框,点击确认后就会立即创建桶了

图片.png

创建成功后,会跳转到桶列表页面,然后里面展现出你刚刚创建的OBS桶

图片.png

创建文件夹

注意:后面发现使用OBS Browser+工具上传,会把文件夹也上传上来,所以这里无需新建文件夹。如果你要手动一张张的通过网页端上传,这里才要新建这个文件夹

点击桶名称,来到“桶对象”页

图片.png

点击“新建文件夹”按钮,分别创建两个文件夹“eval” 和 “train”

  1. “train” 存储的数据用于模型训练
  2. “eval” 存储的数据可用于模型的预测

图片.png

图片.png

获取数据

数据集下载

数据集的地址为:https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/dataset-market/Yunbao-Data-Custom/archiver/Yunbao-Data-Custom.zip

点击链接,将 Yunbao-Data-Custom.zip 下载到本地。目录结构如下,里面有两个文件夹,分别是 eval 和 train

图片.png

train 文件夹中的内容

“train” 存储的数据用于模型训练。打开该目录,可以看到各种云宝的图片。其中,有的图片还带有一个同名的xml文件

图片.png

我们打开 2018-09-25_222145.jpg 和与之同名的 2018-09-25_222145.xml 看看

图片.png

下面是 2018-09-25_222145.xml 文件的内容,可以看到 xml 记录了如下信息

  1. 图片文件名(filename)
  2. 图片尺寸(宽和高,width & height)
  3. 4个云宝对象,和其对应的位置信息(bndbox)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<annotation>
    <folder>Images</folder>
    <filename>2018-09-25_222145.jpg</filename>
    <source>
        <database>Unknown</database>
    </source>
    <size>
        <width>708</width>
        <height>565</height>
        <depth>1</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>106.00</xmin>
            <ymin>26.00</ymin>
            <xmax>272.00</xmax>
            <ymax>203.00</ymax>
        </bndbox>
    </object>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>462.00</xmin>
            <ymin>66.00</ymin>
            <xmax>676.00</xmax>
            <ymax>222.00</ymax>
        </bndbox>
    </object>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>81.00</xmin>
            <ymin>346.00</ymin>
            <xmax>306.00</xmax>
            <ymax>535.00</ymax>
        </bndbox>
    </object>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>420.00</xmin>
            <ymin>323.00</ymin>
            <xmax>610.00</xmax>
            <ymax>533.00</ymax>
        </bndbox>
    </object>
</annotation>

另外,该目录下还有一个 label_map_dict 文件。它是一个json格式的,存储的是云宝名字等于云宝。

{
  "yunbao" : "yunbao"
}

eval 文件夹中的内容

“eval” 存储的数据可用于模型的预测。打开该目录,可以看到各种云宝的图片。其中,有的图片还带有一个同名的xml文件

图片.png

我们打开 2018-09-25_221913.jpg 和与之同名的 2018-09-25_221913.xml 看看

图片.png

下面是 2018-09-25_221913.xml 文件的内容,可以看到 xml 记录了如下信息

  1. 图片文件名(filename)
  2. 图片尺寸(宽和高,width & height)
  3. 4个云宝对象,和其对应的位置信息(bndbox)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<annotation>
    <folder>Images</folder>
    <filename>2018-09-25_221913.jpg</filename>
    <source>
        <database>Unknown</database>
    </source>
    <size>
        <width>963</width>
        <height>676</height>
        <depth>1</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>199.00</xmin>
            <ymin>35.00</ymin>
            <xmax>477.00</xmax>
            <ymax>416.00</ymax>
        </bndbox>
    </object>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>565.00</xmin>
            <ymin>44.00</ymin>
            <xmax>807.00</xmax>
            <ymax>428.00</ymax>
        </bndbox>
    </object>
    <object>
        <name>yunbao</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>445.00</xmin>
            <ymin>467.00</ymin>
            <xmax>598.00</xmax>
            <ymax>656.00</ymax>
        </bndbox>
    </object>
</annotation>

另外,该目录下还有一个 label_map_dict 文件。它是一个json格式的,存储的是云宝名字等于云宝。

{
  "yunbao" : "yunbao"
}

train 与 eval 文件夹中的内容总结

通过对比可以得出

  1. train 和 eval 文件夹总都存有包含云宝的图片(并且一幅图片中,可能只包含一个云宝照片,也可能包含多个云宝照片)
  2. 两个文件夹中,有的图片带有同名的xml文件,而有些图片不带xml
  3. 两个文件夹中的xml文件,均是同样的格式,而且均描述了云宝在图片中的位置信息
  4. 两个文件夹下均有一个 label_map_dict 文件。它存储着一个JSON对象:{"yunbao":"yunbao"}

数据集批量上传至OBS

对象是数据存储的基本单位,在OBS中文件和文件夹都是对象。您可以上传任何类型(文本、图片、视频等)的文件,并在桶中对这些文件进行管理。

图片.png

若需要将对象移动到桶内其他位置,推荐下载使用OBS Browser+图形化管理工具,下载地址如下:https://developer.huaweicloud.cn/tools#section-1

图片.png

下载OBS Browser+

这里我选择图形化界面的 OBS Browser+工具。

OBS Browser+ 是一款全新的图形化桌面应用工具,支持完善的桶管理操作和对象管理操作,支持众多的批量操作,也支持许多高级的桶管理和对象管理功能,能够满足不同用户的业务场景需求。具有性能稳定,效率高,体验佳等优势。轻松帮您数据上云!

它提供了3种登录方式,分别是

  1. AK方式登录
  2. 账号登录
  3. 授权码登录

图片.png

图片.png

图片.png

这里我选择AK方式登录,其中桶路径为:obs://bucket-name/folder-name

获取AK/SK

获取AK和SK的方式为

  1. 右上角账户名,点击“我的凭证”
  2. 左侧切换到“访问密钥”选项卡
  3. 新建访问密钥
  4. 下载 credentials.csv 密钥文件
  5. Access Key Id 就是AK;Secret Access Key 就是SK

注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥。

图片.png

图片.png

登录OBS Browser+ 上传文件

用户名可以随便输入,不必与华为云账号名相同,然后输入credentials.csv里的AK/SK后,即可登录

图片.png

登录后就可以看到我的 yunbao-2023这个桶了

图片.png

切换到 obs:\yunbao-2023\train (应该是 obs:\yunbao-2023 目录下即可,因为会连文件夹一起上传) 路径下。然后击“上传”按钮,然后“添加文件夹”,选中train

图片.png

图片.png

上传后,在任务管理器选项卡可以查看到上传进度(多文件并行上传,我截图慢了,所以只截到最后一个)

图片.png

图片.png

注意:上面犯了一个错误,其实只要在 obs:\yunbao-2023 这个目录下上传文件夹即可(因为会把这个文件夹,也给上传上来,这里要注意了)

分别上传train 和 eval 两个文件夹后,如下图

图片.png

图片.png

Model Arts 创建物体检测

回到 Model Arts,并进入管理控制台,其地址如下:
https://www.huaweicloud.cn/product/modelarts.html

图片.png

对“步骤一”和“步骤二”分别点击“我已准备完成”按钮,然后再点击“步骤三”的开始引导

图片.png

它会弹窗提醒你,接下来的操作一共有4步

  1. 创建:创建“自动学习”项目
  2. 标注:给素材标注好标签
  3. 训练:设置训练参数,发布训练
  4. 部署上线:发布上线

图片.png

创建

点击左侧面板的“自动学习”按钮

图片.png

创建“物体检测”项目

图片.png

填写“项目名称”、“数据集名称”,选择“数据集输入位置”,云宝数据集OBS路径为 “/test-modelarts/dataset-yunbao/train/” (它这里写的不对,数据集无法手动输入,只能选区自己的OBS桶里的数据,因此应该是要用我们自己刚刚上传到OBS的数据)。“数据集输出位置”选择一个空目录。

图片.png

我们新建一个“output”目录用来输出

图片.png

最后如下图所示,点击底部的“创建项目”按钮,开始创建项目

图片.png

图片.png

标注

之前在文件目录下看到的xml文件,就是云宝的标注文件了。但华为云留了几个未标注的图片,供我们练练手

图片.png

我以第一行为例,蓝色的是未标注,红色的是已标注

图片.png

切换到“未标注”选项卡,单击任意一张图片,进入图片标注界面。

图片.png

点击鼠标左键,选择对话框左上角,再次点击则为右下角

图片.png

这里我只标注了一个,它就提示我开始训练了

训练

图片.png

在弹出的“训练设置”对话框中配置相关参数,然后单击“下一步 > 提交”开始模型的自动训练

有几个比较重要的参数,含义如下

  1. 训练验证比例:表示将已标注样本随机分为训练集和验证集的比例,默认训练集比例为0.8,manifest中的usage字段记录划分类别
  2. 增量学习版本:用户可以在之前训练成功的版本中,自主选择精度最高的版本进行再训练,可以加快模型收敛速度,提高训练精度。
  3. 训练偏好:值为accuracy first(精度优先,训练时间较长,模型较大)、balance(平衡)、performance first(性能优先,训练时间较短,模型较小)三档

注意:

  1. 自动学习训练免费规格用于使用体验,训练作业会在1小时(不包括模型发布时间)后自动停止,请勿在训练设置中使用超过1小时的最大训练时长。
  2. 自动学习训练免费规格资源不包含对象存储服务(OBS)存储资源费用

图片.png

确认参数无误后,点击“提交”按钮

图片.png

训练任务提交后,它就会自动开始训练了,我们需要耐心等待。现在是23:05分,我们记录一下训练完成时长

图片.png

只花了6分钟左右,找云宝的项目就训练完毕了,准确率有91%

图片.png

评估结果如下

  • 召回率:0.800
  • 精确率:1.00
  • 准确率:0.906
  • F1值:0.889

图片.png

部署上线

在版本管理这边,点击“部署”按钮,使用“自动学习免费规格CPU”

图片.png

图片.png

图片.png

部署失败解决

部署失败,错误信息为:A maximum of 1 free services are allowed

这个错误的意思就是,免费版的最多只能部署一个,虽然你之前的时间到了,被停止了,但是还必须手动删除,才能再部署这个免费的

图片.png

重新部署

点击“返回自动学习”按钮,左侧选项卡切换到“部署上线”—> “在线服务”,删掉我们之前部署的项目

图片.png

图片.png

然后再切换到“自动学习”选项卡,点击项目名称“find_yunbao_demo”,切换到“模型训练”选项卡,然后再次点击“部署”按钮

图片.png

图片.png

部署任务提交成功后,照例要等待一段时间,华为云会在后台对项目进行自动部署

图片.png

部署大概需要3分钟左右,现在已经部署完毕了

图片.png

服务测试

从华为云博客奖品页面,找到一个云宝图片,然后下载到本地

图片.png

点击“上传图片”按钮,上传我们刚刚下载的云宝照片

图片.png

然后点击“预测”按钮,它会出现一个扫描线动画,水平扫描你这张图片,最后告诉你有多少概率是云宝

图片.png

从预测结果来看,有94%的概率,被自动学习应用判断为是“云宝”,并且在返回的JSON报文中,还会帮你圈出云宝的位置范围,并在图片上做出相应的标识,从图上来看,还是蛮准的

图片.png

返回的报文格式如下

{
    "detection_classes": [
        "yunbao"
    ],
    "detection_boxes": [
        [
            "25.272814",
            "51.2215",
            "473.16373",
            "352.3046"
        ]
    ],
    "detection_scores": [
        "0.9414309"
    ]
}

下面换另一张不是华为云云宝的图片,我这里用皮卡丘的图片,图片链接如下:
https://img2.baidu.com/it/u=2058826265,3911122445&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500

图片.png

注意:百度下载的图片现在默认是webp格式,而华为云的这个项目只支持识别:jpg、jpeg、bmp、png这四种类型,因此要进行手动转码,才能上传

惊呆了,这准确率还有待提高啊!!!居然认为皮卡丘图片,有80%的概率是云宝。。。。

图片.png

另外,点击右下角的“接口调用”,可以查看到调用方式的帮助文档

图片.png

总结

  1. 整个"找云宝"的AI项目完成下来,我惊讶的发现居然没涉及到什么算法问题,可以说是零代码构建AI应用了。
  2. 但其背后实现的智能算力却很强,不但能够识别是否是云宝,并给出准确率,还能精准的找到云宝的位置(虽然也有被误判的情况,比如上图给的皮卡丘,也被判定为云宝)
  3. 我认为一个产品是否优秀,在于其可解决问题的难度,和其操作过程的简单程度。化繁为简,让外行也能解决难题,虽然有点小瑕疵,但是瑕不掩瑜 —— 这大概就是ModelArts给我留下的第一印象吧,总而言之,棒极了

【万众瞩目的低代码AI应用开发实战营来啦!开启实战营之旅(免费体验),写体验文章,赢开发者大礼包!】有奖征文火热进行中:https://bbs.huaweicloud.cn/blogs/384262

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。