MENU

如何在 ModelArts 环境中实现简易的自动图像识别

• November 17, 2022 • 编程心得,技术分享阅读设置

引言

作者本次计算机导论课的产学实验介绍如何利用 ModelArts 进行手势识别,根据课程要求,实验需要实现以下内容:

  • 利用数据集在 ModelArts 上训练一个可以识别不同手势的识别模型
  • 自定义一个自己的专属手势,加到数据集中重新训练
  • 在线部署并预测以上内容

然而,很遗憾的是。实验信息中提供的文档已经过期,无法正常使用。因此,本文档将会介绍如何利用 ModelArts 进行手势识别,以及如何自定义手势。

准备工作

创建一个 OBS 存储桶

部署一个 ModelArts 的训练作业需要一个 OBS 存储桶供训练作业读取和存储数据。

首先,访问 华为云的对象存储服务创建页面

推荐的配置:

设置项目推荐输入
区域华北-北京四
桶名称<符合规则即可>
数据冗余存储策略单AZ存储*
默认存储类别标准存储
桶策略私有
默认加密
归档数据直读关闭

*:单AZ存储是指数据只存储在一个可用区中,不会跨可用区存储。显然对于训练作业来说,多AZ存储是不必要的。

点击 立即创建 ,等待创建完成即可。

创建完成后,进入桶管理页面,点击刚刚创建的桶,进入桶详情页面。点击 对象,先创建一个文件夹,这将是你的整个项目的根目录

推荐按照以下目录结构创建:

  • <项目根目录>

    • datasets
    • model_output
    • organized_datasets

其中,datasets 用于存放原始数据集,model_output 用于存放训练好的模型,organized_datasets 用于存放整理好的数据集。

上传训练数据

创建完 OBS 项目后,需要将训练数据上传到 OBS 项目中。由于训练数据有超过5,000个项目,因此需要使用华为云的 OBS Browser 工具进行上传。

访问 OBS Browser 下载页面,选择合适的版本,下载并安装 OBS Browser

若要登录 OBS Browser 你需要为你的账户申请一个 Access Key。访问 Access Key 管理页面,点击 安全设置 进入详情页面,下滑,在 访问密钥 区域点击 新增访问密钥 ,输入描述信息后下载包含密钥信息的 .csv 文件。使用文本编辑器(记事本或任何非特定格式的编辑器)打开,文件内依次是以下内容:
User Name,Access Key Id,Secret Access Key
将对应内容复制到 OBS Browser 的登录界面,点击 登录 即可。

登录链接位于Access Key 管理页面的上部。

访问地址格式为 obs://<bucket>/<folder>,其中 <bucket> 为你的 OBS 存储桶名称,<folder> 为你的项目根目录。

点击登录,进入你的数据集文件夹,导入你的数据集到你的 原始数据集文件夹 中。

训练模型

数据集处理

为了使 ModelArts 能够对你的数据进行自动学习,你需要为它准备一个经过整理的标记数据集。当然,你可以在训练时完成此步骤。因此,如果你不准备调整数据集,可以跳过此步骤。

返回 ModelArts 控制台,点击 数据管理 -> 数据集 -> 创建数据集 进入数据集创建页面。

不要使用新版数据集,这将导致你无法使用自动学习功能。

推荐的配置:

设置项目推荐输入
名称<符合规则即可>
标注场景图片
标注类型图像分类
数据集输入位置<原始数据集文件夹>
数据集输出位置<整理好的数据集文件夹>

点击创建,进入数据集管理页面。等待全部数据文件被导入后,点击 开始标注,大约需要5分钟完成标记任务。

完成标记后,点击发布。完成后,返回 ModelArts 控制台页面。

开始训练

点击 自动学习 -> 图像分类 - 创建项目 进入项目创建页面。

推荐的配置:

设置项目推荐输入
名称<符合规则即可>
数据集来源新建数据集/已有数据集**
其他项目<按要求输入>

**: 如果你跳过了 数据集处理 步骤,你需要选择 新建数据集 以创建新数据集;如果你完成了 数据集处理 步骤,你需要选择 已有数据集 并选择你的数据集。

确认 数据标注 页面的图像都是 已标注 状态后,点击 开始训练,使用默认参数即可。

请等待模型训练完毕,完成后,请点击 部署

测试

点击自动学习中的 部署上线 或在 ModelArts 控制台中的 部署上线 -> 在线服务 -> 预测,进入预测页面。

上传一个数据集中的图片,或者拍摄一张 与测试集内标签图片相近手势的图片,点击 预测,查看预测结果。

请注意,由于 ModelArts 自动学习的模型是基于数据集的,实验提供的数据集并不算 充沛,因此,如果你的测试图片与数据集内图片不相似,预测结果可能会出现错误。

添加自己的手势

数据准备

选择一个你感兴趣的手势,为保证效果,建议准备至少50张此手势的图片如果对识别广度要求不高,可以只使用10张样本图片。且手势图片之间应有所变化,例如角度或光照等,否则训练效果可能会不佳。

在数据集管理页面,点击 开始标注,进入标注页面后,点击 添加图片,将你准备的图片导入,选中并添加此手势的标签。

重复刚刚的训练步骤,可以在 开始训练 菜单的 增量训练版本 选择上一个版本的数据集加大数据训练量,等待训练结果。

重复测试步骤,查看预测结果。

导出数据集

返回数据集管理页面,点击 前往新版,选择 更多-> 导出,将他导出到你指定的文件夹中。使用 OBS Browser 将导出的文件夹下载到本地,打包即符合要求。

结语

本文的写就目的在于为同道之人顺利完成此项目提供一些提示和作者自己的想法,希望能够帮助到你的研究。

感谢你的耐心阅读!

Last Modified: December 16, 2022