华为HiLens华为HiLens

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
可信分布式身份服务
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
商标注册
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
安全治理云图 Compass
认证测试中心 CTC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
文档首页> 华为HiLens> 最佳实践> 口罩识别技能开发(ModelArts+华为HiLens)
更新时间:2021-12-10 GMT+08:00
分享

口罩识别技能开发(ModelArts+华为HiLens)

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

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

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

准备工作

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

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

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

步骤1:下载数据

  1. 登录ModelArts管理控制台,单击左侧导航栏的“AI Gallery”

    进入AI Gallery。

  2. 单击上方“资产集市>数据”,在搜索框中输入 “dataset_mask_detection_500”,单击“搜索”

    图1 下载数据

  3. 单击“dataset_mask_detection_500”卡片。

    进入资产详情页。

  4. 单击“下载”

    进入下载详情页。

  5. 按填写信息。

    图2 数据下载详情
    表1 数据下载详情

    参数

    说明

    推荐填写

    下载方式

    数据可下载至OBS,也可下载至ModelArts数据集列表。

    本样例将数据集下载至ModelArts数据集,此处选择“ModelArts数据集”

    目标区域

    选择您需要将该数据集下载到的区域位置,如“华北-北京四”

    本样例的目标区域必须保证ModelArts的区域和创建的OBS桶、华为HiLens在同一区域。

    目标位置

    选择OBS桶路径,桶内如有同名的文件或文件夹,将被新下载的文件或文件夹覆盖。

    本样例选择准备工作创建的OBS桶以及存放训练模型数据的文件夹“/mask/dataset-in”

    名称

    默认生成“data-xxxx”形式的数据集名称,该数据集会同步在ModelArts数据集列表中。

    使用默认生成的数据集名称。

    描述

    可以添加对于该数据集的相关描述。

    可自定义。

  6. 单击右下角“确定”,跳转至个人中心 > 我的数据 > 我的下载页面。下载成功后,数据集详情列表会显示“文件大小”

    图3 数据下载完成

步骤2:发布数据集

  1. 进入ModelArts管理控制台,单击左侧导航栏的“数据管理>数据集”

    数据集列表会显示上一步骤所下载的数据集。

  2. 单击操作列的“发布”
    弹出“发布新版本”对话框。
    图4 数据集发布
  3. 表2填写信息,单击“确定”
    图5 发布新版本
    表2 发布数据版本参数说明

    参数

    描述

    推荐填写

    “版本名称”

    默认按V001、V002递增规则进行命名,您也可以自定义版本名称。版本名称只能包含字母、数字、中划线或下划线组成的合法字符串。

    例如“V001”

    “数据切分”

    数据切分功能。默认不启用。

    启用后,需设置对应的训练验证比例。训练验证比例表示将已标注样本随机分为训练集和验证集的比例,发布生成mainfest文件的usage字段记录划分类别。如未输入该参数,则不开启数据切分功能。

    输入“训练集比例”,数值只能是0~1区间内的数。设置好“训练集比例”后,“验证集比例”自动填充。“训练集比例”“验证集比例”等于1。

    “训练集比例”即用于训练模型的样本数据比例;“验证集比例”即用于验证模型的样本数据比例。“训练验证比例”会影响训练模板的性能。

    本样例启用数据切分功能。

    • 训练集比例:0.8
    • 验证集比例:0.2

    “描述”

    针对当前发布的数据集版本的描述信息。输入字符长度范围为0~256。

    -

    “开启难例属性”

    默认不开启。启用后,会将此数据集的难例属性等信息写入对应的Manifest文件中。

    本样例可不开启难例属性功能。

步骤3:在AI Gallery订阅预置算法

ModelArts提供了“YOLOv3_ResNet18”预置算法,使用此算法训练的模型,可安装至Ascend 310芯片中。

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择“AI Gallery”,进入AI Gallery页面。
  2. 选择资产集市-“算法”页签,默认进入公共页面,该页面展示了所有共享的模型,包括ModelArts模型和HiLens技能。
  3. 搜索“物体检测YOLOv3_ResNet18”

    图6 搜索算法

  4. 单击目标模型进入详情页面。

    在详情页面您可以查看模型的“描述”“限制”“版本”“交付”“评论”等信息。

  5. 在详情页面单击“订阅”

    图7 订阅算法

    若订阅的是非华为云官方资产,则会弹出“温馨提示”页面,勾选并阅读《数据安全与隐私风险承担条款》和《华为云AI Gallery服务协议》后,单击“继续订阅”才能继续进行模型订阅。

    模型被订阅后,详情页的“订阅”按钮显示为“已订阅”,订阅成功的资产也会展示在个人中心 > 我的资产 > 算法 > 我的订阅

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

获取预置算法后,需使用此算法创建训练作业,获得相应的模型。

  1. 在ModelArts管理控制台,选择“训练管理>训练作业New”
  2. 在训练作业列表页面,单击“创建训练作业”
  3. 在创建训练作业页面填写相关参数。

    • 基本信息

      基本信息包括名称和描述。

      图8 基本信息
    • 算法配置

      根据选择的算法类型选择算法来源。本样例“算法来源”选择“算法管理”

      图9 算法配置
      表3 创建训练作业参数说明

      参数

      说明

      算法

      选择“我的订阅”页签,单击下拉三角标选择算法版本。勾选算法版本,即选中该算法。

      本样例是在AI Gallery订阅的算法,因此选择“我的订阅”页签,单击上一步骤在AI Gallery订阅的算法下拉三角标,选择算法版本。勾选算法版本,即选中该算法。

      训练输入

      从ModelArts数据管理中选择可用的数据集及其版本。

      单击“选择数据集”的下拉三角标,选择步骤1:下载数据中下载的数据集。

      单击“选择版本”的下拉三角标,选择步骤2:发布数据集中发布的数据集版本。

      训练输出

      选择训练结果的存储位置(OBS路径)。为避免出现错误,建议选择一个空目录用作“训练输出”

      本样例选择准备工作中已创建的OBS桶“mask”和文件夹“model-output”

      超参

      此参数根据您选择的算法不同而不同。

      本样例使用默认参数。

    • 训练资源规格
      图10 选择训练资源规格
      表4 训练资源规格参数说明

      参数

      说明

      资源池

      选择训练作业资源池。训练作业支持选择“公共资源池”“专属资源池”。目前暂时不支持“专属资源池”

      资源类型

      可选CPU、GPU、Ascend。

      本样例选择GPU。

      规格

      针对不同的资源类型,选择资源规格。如果您的算法已定义使用CPU或GPU,根据已有算法约束条件,您可以在有效规格选择合适的资源规格,无效选项置灰不可选。

      不同的资源类型的数据盘容量是不同的,为避免训练过程中出现内存不足的情况,请参考训练环境中不同规格资源“/cache”目录的大小

      计算节点个数

      默认值为“1”

      永久保存日志

      • 如果用户选择CPU或者GPU规格,可以选择是否打开永久保存按钮。

        打开永久保存按钮后,用户需要选择作业运行中产生的日志文件存储路径。

      • 如果用户选择Ascend规格,用户需要选择作业运行中产生的日志文件存储路径。
      说明:

      请选择一个空的OBS目录用于存储日志文件。

  4. 参数填写完成后,单击“下一步”,按界面提示完成训练作业创建。
  5. 等待训练作业完成。

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

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

    图11 训练作业运行成功

步骤5:模型转换

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

  1. 在ModelArts管理控制台,选择“模型管理>压缩/转换”
  2. 在模型转换作业列表页面,单击“创建任务”
  3. 在创建转换任务页面按表5设置参数。

    图12 模型转换
    表5 模型转换参数说明

    参数

    说明

    推荐填写

    名称

    模型转换任务的名称。

    本样例可设置名称“convert-mask-detection”

    描述

    模型转换任务的描述。

    -

    输入框架

    当“输入框架”选择“Caffe”时,“输出框架”支持“MindSpore”。

    当“输入框架”选择“TensorFlow”时,“输出框架”支持“TFLite”、“MindSpore”、“TensorRT”。

    本样例选择“TensorFlow”

    转换输入目录

    用于转换的模型所在目录,此目录必须为OBS目录。

    本样例选择训练作业输出路径下的“frozen_gragh”目录,即“mask/model-output/frozen_gragh”

    输出框架

    根据实际情况选择模型转换后的框架。

    本样例选择“MindSpore”

    转换输出目录

    模型转换完成后,根据此参数设置的目录存储模型

    本样例选择训练作业输出路径,即“mask/model-output”

    转换模板

    ModelArts提供了一系列的模板,定义转换功能以及转换过程中所需的参数。当前支持的转换模板详细描述请参见转换模板。转换模板右侧下拉框,将根据您选择的“输入框架”“输出框架”,展现匹配的模板。

    本样例选择“TF-FrozenGraph-To-Ascend-HiLens”,即将TensorFlow的frozen graph格式的模型转换成可在昇腾芯片上推理的格式。

    高级选项

    “输入张量形状”“输入数据格式”等参数。

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

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

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

    图13 模型转换成功

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

  1. 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>模型管理”,进入“模型管理”页面。
  2. “模型管理”页面,单击右上角的“导入(转换)模型”
  3. “导入模型”页面,然后填写参数,信息确认无误后单击“确定”完成导入。

    • “名称”:输入“mask-recognition”
    • “版本”:输入“1.0.0”
    • “描述”:输入导入模型的简短描述。
    • “模型来源”:单击“从ModelArts导入”,在右侧下拉框中选择“OM(从转换任务中获取)”,然后在下方转换任务列表中勾选之前在步骤5:模型转换中转换的模型“convert-mask-detection”
    图14 导入模型

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

步骤7:新建技能

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

    基本信息

    图15所示。

    • “技能模板”:选择“使用空模板”
    • “技能名称”:输入“Mask_Detection”
    • “技能版本”:输入“1.0.0”
    • “适用芯片”:默认为“Ascend310”
    • “检验值”:根据“index.py”文件中init函数参数的值的代码,这里检验值应输入“mask”。此处的检验值和init函数参数值应保持一致。
    • “应用场景”:选择“其他”,文本框中输入“口罩识别”
    • “技能图标”:上传技能图片。
    • “OS平台”:选择“Linux”系统。
    • “摘要”:输入技能摘要。
    • “描述”:输入技能描述。
    图15 填写基本信息

    技能内容

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

    • “技能格式”:选择“技能包”
    • “运行时语言”:选择“Python3.7”
    • “代码执行文件”:输入“index.py”
    • “模型”:单击加号,您可以在弹出框中,选择导入的模型“mask-detection”
    • “代码上传方式”:选择“在线编辑”,在代码编辑框中直接编辑代码,可单击技能代码下载技能代码,复制所下载的文件夹中的“index.py”“utils.py”文件内容。 “utils.py”文件可通过代码编辑框左上角“文件>创建同级文件”来创建。
    图16 技能内容

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

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

步骤8:安装技能

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

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

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

步骤9:启动技能

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

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

    安装技能的状态说明如表6所示。

    图18 查看技能状态
    表6 启动技能状态

    状态名

    状态说明

    停止

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

    运行中

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

    技能处于“运行中”状态时,您可以通过显示器查看技能输出的视频数据,此样例所开发的口罩识别技能可识别人是否佩戴口罩。

    为避免技能持续收费,请及时停止技能。在技能管理页签单击操作列的“停止”

分享:

    相关文档

    相关产品

关闭导读