文档首页/ 华为HiLens/ 最佳实践/ 手势识别技能开发(ModelArts+华为HiLens)
更新时间:2024-09-11 GMT+08:00
分享

手势识别技能开发(ModelArts+华为HiLens)

ModelArts是面向AI开发者的一站式开发平台,您可以使用ModelArts开发一个用于华为HiLens平台的算法模型,然后基于您自定义的算法模型和逻辑代码新建技能。

本章节提供了一个手势识别技能的样例,介绍从模型训练到查看技能效果,新建一个全新技能的全流程,帮助您快速熟悉华为HiLens技能开发的使用过程。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。具体技能开发的步骤如下所示:

准备工作

  • 已注册华为云帐号,且在使用华为HiLens前检查帐号状态,帐号不能处于欠费或冻结状态。
  • 已购买HiLens Kit设备,并准备好网线,电脑,路由器,HDMI线,显示屏。
  • 成功注册设备HiLens Kit设备至华为HiLens控制台,详情请参见注册HiLens Kit
  • 登录OBS服务,创建桶和文件夹,用于存放样例的训练数据。创建名称为“hilens-gesture”OBS桶,区域选择“华北-北京四”,创建如下文件夹:
    • “gesture-data”:用于存放训练模型的数据。
    • “gesture-data-output”:用于存放模型输出数据。
    • “gesture-data-record”:用于存放日志。
    • “gesture-convert-output”:用于存放转换模型后的输出文件。

    创建OBS桶和文件夹的操作指导请参见创建桶新建文件夹。为保证模型数据能正常访问,请务必保证创建的OBS桶与华为HiLens在同一区域。

    占用OBS资源的操作均会收取一定费用,收费规则请参见对象存储服务 OBS

步骤1:准备数据

华为HiLens在公共OBS桶中提供了手势识别技能的用于模型训练的示例数据,命名为“gesture_recognition_data”,因此本文的操作示例使用此示例模型进行技能开发。您需要执行如下操作,将模型文件上传至您的OBS目录下,即准备工作中您创建的OBS目录“hilens-gesture/gesture-recognition”

  1. 单击示例数据下载链接,将手势识别案例示例数据“gesture_recognition_data”下载至本地,在文件存放目录完成签名校验(Windows系统推荐使用Git工具),验证成功将返回OK。执行命令如下:

    echo 244e86ec55fd54461b5f5eff53a7867f43f72f29778babd3fe89a20e860ca529 gesture_recognition_data.zip | sha256sum -c

  2. 在本地,将“gesture_recognition_data”压缩包解压。例如解压至本地“gesture_recognition_data”文件夹下,包括1个子文件夹“gesture-data”和1个“.py”文件。
  3. 参考上传文件,利用OBS Browser+工具将“gesture_recognition_data/gesture-data”文件夹下的所有数据上传至“hilens-gesture/gesture-data”OBS路径下,OBS Browser+使用方法请参见OBS Browser+工具指南

步骤2:创建数据集

  1. 登录ModelArts管理控制台,根据要求完成访问权限配置
  2. 在左侧菜单栏中选择“数据管理>数据集”
  3. 在数据集管理页面,单击“创建数据集”。在“创建数据集”页面,“数据集输入位置”选择步骤1:准备数据中上传的数据存储目录(OBS路径),需选择到具体图片存储的父目录。“数据集输出位置”,请指定一个空目录,且此目录不能是数据来源目录下的子目录。“标注类型”选择“图像分类”

    图1 创建数据集

  4. 参数填写完成后,单击“创建”,完成数据集创建。

    进入数据集管理页面,等待数据同步完毕,您可以单击数据集名称进入概览页面,了解进度。由于提供的样例数据集已完成数据标注,当数据集概览页面显示图片已标注,表示数据已同步完成。
    图2 标注进展

  5. 发布数据集。

    在数据集管理页面,单击“发布”,在弹出窗口中,根据界面提示进行配置。由于本示例使用的算法,必须使用切分的数据集进行训练,因此训练验证比例的参数必须设置,建议设置为“0.8”“0.9”,表示训练集和验证集的比例为“8:2”“9:1”

  6. 单击“确定”完成发布数据集。

    图3 发布数据集

步骤3:订阅算法

ModelArts官方提供了一个“ResNet_v1_50”,算法用途为图像分类,您可以使用此算法训练,得到所需的模型。目前“resnet_v1_50”算法发布在AI Gallery中。您可以前往AI Gallery,订阅此算法,然后同步至ModelArts中。

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择“AI Gallery”。进入新版AI Gallery。
  2. 单击图像分类-ResNet_v1_50,进入算法详情页。
  3. 单击右侧的“订阅”,根据界面提示完成算法订阅。

    此算法由ModelArts官方提供,目前免费开放。订阅算法完成后,页面的“订阅”按钮显示为“已订阅”

  4. 单击详情页的“前往控制台”,此时弹出“选择云服务区域”对话框,选择ModelArts对应的区域,然后再单击“确定”

    页面将自动跳转至ModelArts的“算法管理>我的订阅”中同步对应的算法。

    图4 前往控制台
    图5 选择云服务区域

  5. 在ModelArts管理控制台的算法管理页面,算法将自动同步至ModelArts中。

    图6 同步算法

步骤4:使用订阅算法创建训练作业

算法订阅成功后,算法将呈现在“算法管理>我的订阅”中,您可以使用订阅的“ResNet_v1_50”算法创建训练作业,获得模型。

  1. 进入“算法管理>我的订阅”页面,选择订阅的“ResNet_v1_50”算法,单击左侧的小三角展开算法,在版本列表中,单击“创建训练作业”

    图7 创建训练作业

  2. “创建训练作业”页面,参考如下说明填写关键参数。

    • “算法> 我的订阅”:系统默认选择订阅的算法,请勿随意修改。
    • “训练输入”:选择数据集,然后从下拉框中选择步骤2:创建数据集中创建好的数据集。数据集一定要选择切分训练集比例的版本,否则将会导致训练失败。
    • “训练输出”选择训练结果的存储位置(OBS路径)。为避免出现错误,建议选择一个空目录用作“训练输出”本样例选择准备工作中已创建的OBS桶“hilens-gesture”和文件夹“gesture-data-output”
    • “超参”:建议采用默认值。如需进行调优,可参考算法详情页的训练参数说明。
    • “资源类型”:建议选择加速卡规格的资源类型,训练效率会更高一些。

  3. 参数填写完成后,单击“提交”,确认规格,单击“确定”,完成训练作业创建。
  4. 进入“训练管理>训练作业(New)”页面,等待训练作业完成。

    训练作业运行需要几分钟时间,请耐心等待。根据经验,选择样例数据集,使用加速卡资源运行,预计3分钟左右可完成。

    当训练作业的状态变更为“已完成”时,表示已运行结束。

    图8 查看训练作业状态

    您可以单击训练作业名称,进入详情页面,了解训练作业的“配置信息”、“日志”、“资源占用情况”和“评估结果”等信息。

    您也可以在配置的“训练输出位置”对应的OBS目录下获得训练生成的模型。

步骤5:转换模型

  1. 在ModelArts管理控制台中,选择左侧导航栏的“AI应用管理 > 模型转换”,进入模型转换列表页面。
  2. 单击左上角的“创建任务”,进入任务创建任务页面。
  3. “创建任务”页面,按表1填写相关信息,如图9所示。

    表1 创建任务参数

    参数

    推荐填写

    “名称”

    输入“gesture-recognition”

    “描述”

    输入判断手势技能的简短描述,如:将判断手势技能模型转换为“.om”格式。

    “输入框架”

    选择“TensorFlow”

    “转换输入目录”

    选择转换输入目录为“hilens-gesture/gesture-data-output/frozen_graph”

    “输出框架”

    选择“MindSpore”

    “转换输出目录”

    选择转换输出目录为“hilens-gesture/gesture-convert-output”

    “转换模板”

    选择“TF-FrozenGraph-To-Ascend-HiLens”

    “高级选项”

    “输入张量形状”设置为“images:1,224,224,3”,其他选项均为默认值。

    图9 创建模型压缩/转换任务

  4. 任务信息填写完成后,单击右下角“立即创建”

    创建完成后,系统自动跳转至“模型压缩/转换列表”中。刚创建的转换任务将呈现在界面中,其“任务状态”“初始化”。任务执行过程预计需要几分钟到十几分钟不等,请耐心等待,当“任务状态”变为“成功”时,表示任务运行完成并且模型转换成功。

    如果“任务状态”变为“失败”,建议单击任务名称进入详情页面,查看日志信息,根据日志信息调整任务的相关参数并创建新的转换任务。

步骤6:导入模型至华为HiLens

  1. 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>模型管理”,进入“模型管理”页面。

    华为HiLens控制台技能开发所在的区域应和在ModelArts AI Gallery订阅算法的区域图4一致。

  2. “模型管理”页面,单击右上角的“导入(转换)模型”
  3. “导入模型”页面,然后参考表2填写参数,信息确认无误后单击“确定”完成导入,如图10所示。

    表2 导入模型参数

    参数

    推荐填写

    “名称”

    输入“gesture-recognition”

    “版本”

    输入“1.0.0”

    “描述”

    输入导入模型的描述。

    “模型来源”

    单击“从ModelArts导入”,在右侧下拉框中选择“OM(从转换任务中获取)”,然后在下方转换任务列表中勾选之前在步骤5:转换模型转换的模型“gesture-recognition”

    图10 导入模型

    模型导入后,将进入“模型管理”页面,您导入的模型可从列表中查看模型状态,导入成功后模型“状态”“导入成功”

步骤7:新建技能

  1. 在华为HiLens管理控制台的左侧导航栏中选择“技能开发>技能管理”,进入技能列表。
  2. “技能管理”页面,单击右上角“新建技能”,进入“创建技能”页面。
  3. “创建技能”页面,在“技能模板”中选择“使用空模板”后,填写基本信息和技能内容。

    基本信息

    表3填写技能的基本信息,如图11所示。
    表3 技能基本信息参数

    参数

    推荐填写

    “技能模板”

    选择“使用空模板”

    “技能名称”

    输入“Gesture_Recognition”

    “技能版本”

    输入“1.0.0”

    “适用芯片”

    默认为“Ascend310”

    “检验值”

    根据步骤1:准备数据所下载的“手势识别案例”文件夹中的“main.py”文件中init函数参数的值的代码,这里检验值应输入“gesture”。此处的检验值和init函数参数值应保持一致。

    “应用场景”

    选择“其他”,文本框中输入“手势识别”

    “技能图标”

    上传技能图标。

    “技能图片”

    用来向用户介绍技能的使用或技能的效果,可不上传。

    “OS平台”

    选择“Linux”系统。

    “描述”

    输入技能的描述。

    图11 填写基本信息

    技能内容

    根据您的模型和逻辑代码情况,按表4填写技能内容,详细参数说明请参见技能内容

    表4 技能内容参数

    参数

    推荐填写

    “技能格式”

    选择“技能包”格式。

    “运行时语言”

    选择“Python3.7”

    “代码执行文件”

    默认输入“index.py”

    “模型”

    单击加号,您可以在弹出框中,选择导入的模型“gesture-recognition”

    “代码上传方式”

    选择“在线编辑”,在代码编辑框中直接编辑代码,可直接复制步骤1:准备数据所下载的“手势识别案例”文件夹中的“.py”文件中的代码内容,请核对代码中模型名称,保持代码中的模型名称与步骤5:转换模型的模型名称一致。此样例中模型名称应是“gesture-recognition.om”,如下所示。
    model   = hilens.Model(hilens.get_model_dir() + "gesture-recognition.om")
    图12 技能内容

    基本信息和技能内容填写完成后,您可以在界面右侧查看其配置参数值,如果某个字段填写错误,在右侧会显示一个小红叉。

  4. 确认信息无误后,单击“确定”完成技能创建。

    图13 确认信息并完成新建技能

创建完成后,您的技能将进入“技能开发>技能管理”页面,且状态为“未发布”,您可以执行发布操作,将技能发布至技能市场;您也可以安装技能至设备,并查看设备使用技能效果。

步骤8:(可选)发布技能

  1. 在华为HiLens管理控制台,单击左侧导航栏“技能开发>技能管理”,进入“技能管理”页面。
  2. 选择需要发布的技能,单击右边的“发布”
  3. 在弹出的“发布技能到技能市场”对话框中,按图14设置相关信息,单击“确定”

    图14 发布技能
    表5 发布技能参数说明

    参数字段

    说明

    发布服务

    技能发布的服务位置。本样例选择“HiLens技能市场”

    计费策略

    技能发布在技能市场的计费策略。可选择“免费”“收费”

    计费模式

    技能发布后的计费模式。

    • 若选择“免费”计费策略,仅可选择“一次性”计费模式。
    • 若选择“收费”计费策略,可选择“包年/包月”“一次性”两种计费模式。

    计量单位

    每份License可用在设备上的规格。有“路数”“并发量”两种计量方式。若以“路数”规格,一份License可安装在设备上使用一路视频。

    规格限制

    技能在同一设备上最多可以处理视频的路数,或最大并发量。

    隐私声明

    技能涉及到的用户隐私声明。

    提交之后,将发送至华为HiLens后台,由工作人员进行审核,3个工作日之内完成审核,请您耐心等待。当审核通过后,状态将变更为“审核通过,已发布”

步骤9:安装技能

  1. “技能开发>技能管理”页面,选择已开发的的技能,单击右侧操作列“安装”
  2. 勾选已注册且状态在线的设备,单击“安装”,安装成功后单击“确定”,完成安装技能操作,如图15所示。

    安装过程中,华为HiLens管理控制台会将技能包下发到设备。下发技能包需要一段时间,可以从进度条中看到技能安装进度,下发完成后“进度”栏会提示“安装成功”
    图15 安装成功

    安装成功后,您可以启动技能查看技能输出数据。

步骤10:启动技能

  1. 使用HDMI视频线缆连接HiLens Kit视频输出端口和显示器。
  2. 单击左侧导航栏“设备管理>设备列表”,进入“设备列表”页面。
  3. 单击已注册设备的“技能管理”,查看技能状态已安装的手势识别技能状态为“停止”,单击操作列的“启动”,并单击“确定”,确定启动技能运行在端侧设备上。

    等待一会,当状态变为“运行中”,则技能成功运行在端侧设备上。

    安装技能的状态说明如图16所示。

    图16 查看技能状态
    表6 安装技能状态

    状态名

    状态说明

    停止

    停止状态,技能停止运行在端侧设备上。

    运行中

    运行状态,技能成功安装在端侧设备。

    技能处于“运行中”状态时,您可以通过显示器查看技能输出的视频数据,此样例所开发的手势识别技能可识别一般的手势,技能输出的视频中会用方框标记出手势,并标记出手势含义。

相关文档