更新时间:2024-09-06 GMT+08:00
分享

使用空模板

本章节介绍使用空模板新建技能的操作步骤。如果您选择使用空模板,需提前准备好使用的模型和逻辑代码。

背景信息

  • 在华为HiLens控制台开发技能时,会占用OBS资源,需要收取一定费用,收费规则请参见对象存储服务 OBS
  • 算法模型必须是.om格式,且满足华为HiLens的要求,详细可参考开发算法模型
  • 逻辑代码的存储方式有两种:“在线编辑代码”“从OBS上传代码”
    • 如果您的代码逻辑较简单,建议直接在线编辑代码。
    • 如果您的代码结构比较复杂,推荐用本地IDE开发完成后,使用OBS上传代码zip或tar.gz包的方式,上传操作可参见OBS快速入门。上传到OBS需要收取一定费用,收费规则请参见对象存储服务 OBS
      • 上传文件时,要求此OBS桶与您使用的华为HiLens处于同一区域。
      • 若您从OBS上传代码,需要将所有代码文件压缩后上传,上传的文件必须为“.zip”或“tar.gz”格式,且入口文件必须在一级目录。如下示例所示,入口代码(“main.py”)在一级目录,其它的代码按需求自行设计,您可将模型与代码一起打包上传。
      • 入口代码所在文件(如上面的main.py)通过参数【代码执行文件】进行配置,后面会有说明。

      代码目录示例如下所示:

      skill/
      |---main.py		#入口文件,名称与新建技能的“代码配置”参数一致
      |---depends/		#可选,用于存放模型文件
      |---workspace/		#工作空间,用于存放技能生成的数据
      	|---data/	#用于存放运行时配置
  • 若技能格式为容器镜像格式,请先将镜像上传至容器镜像服务(SWR),上传方式请参见Docker客户端上传镜像

前提条件

  • 保证华为云账号处于不欠费状态。在华为HiLens控制台开发技能时,会占用OBS资源,需要收取一定费用,收费规则请参见对象存储服务 OBS
  • 新建技能使用的算法模型已导入HiLens中。
  • 如果使用“从OBS上传代码”方式,请提前按照要求将逻辑代码上传至OBS桶中。

1. 开始新建技能

  1. 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>技能管理”,进入技能列表。
  2. “技能管理”页面,单击右上角“新建技能”,进入“创建技能”页面。
    图1 创建技能-21

2. 基本信息

“创建技能”页面,在“技能模板”中选择“使用空模板”后,填写基本信息。参数说明请参见表1

图2 填写基本信息
表1 基本信息参数设置

字段名称

说明

技能模板

是否使用模板来开发技能。如果选择已有模板,则会使用模板的模型和代码。即技能内容模块的字段都会使用模板的信息。

技能名称

技能的名称,下发到端侧也使用该名称作为根目录。

可输入中文、字母、数字、下划线或中划线,必须以中文、字母开头,以中文、字母或数字结尾,长度3~60个字符。

说明:

由于技能市场不允许存在同名技能,所以如果想发布到技能市场,请使用全局唯一的名称对您的技能进行命名。

技能版本

技能的版本。版本号格式为“A.A.A”“A”为不超过3位的自然数。例如“1.0.0”

“A”超过一位时,不允许以“0”开头,比如禁止输入“01.0.0”

适用芯片

技能支持的芯片。运行在HiLens Kit上的技能需选择Ascend 310芯片。

检验值

用于技能校验,防止技能伪冒。要与代码中初始化接口的参数一致。具体使用方法请参见开发指南>初始化HiLens Framework

应用场景

技能适用的场景,例如“智慧园区”“智慧家庭”“智能车载”“智能商超”的子场景及“其他”

技能图标

技能的头像。

OS平台

技能运行的操作系统平台,包括Linux、Android、IOS、LiteOS和Windows。HiLens Kit用的是基于CentOS制作的Linux发型版Euler系统操作系统,所以如果开发的是运行在HiLens Kit的技能,这里选择Linux。

描述

对技能的详细介绍。

最大长度2048,不允许输入~^$%&等特殊字符。

说明:

若新建技能的场景需要发送消息到用户的手机或邮箱,比如检测到陌生人技能需要在发现陌生人后发送消息提醒用户,描述中必须注明“本技能支持发送订阅消息”,发送的具体内容需在编写逻辑代码时注明,详细指导和API介绍可参见开发指南

3. 技能内容

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

图3 技能内容
表2 技能内容的参数说明

字段名称

说明

技能格式

技能的格式。可分为“技能包”“容器镜像”两种格式。

运行时语言

逻辑代码的运行时语言。目前支持“Python3.7”“C/C++”。如果选择C/C++语言开发,将不支持在线编辑代码。开发者线下开发完成后,需要在Linux环境下把代码编译打包,然后上传到obs。

代码执行文件

技能的启动将以该代码执行文件为入口,类似C语言的main函数。入口文件必须在一级目录。

  • “技能包”格式的技能要求该文件在技能包的根目录下,如Python技能请以.py结尾。
  • “容器镜像”格式的技能,如果dockerfile有配置ENTTRYPOINT,概述如可以为空,否则要求输入该镜像内执行文件的路径。

文件名不超过1024位,允许输入字母、数字或下划线。不允许输入#~^等字符。

模型

技能的核心算法。在本地或ModelArts训练,导入到HiLens平台。单击加号,您可以在弹出框中,选择华为HiLens平台模型管理列表下的模型。

代码上传方式

逻辑代码的上传方式。

说明:

固件1.1.2及以后版本支持配置技能的Python依赖库。开发者在开发技能过程中,可根据自身需要配置技能的Python依赖库,详情请见配置技能的Python依赖库

  • “在线编辑”

    使用在线开发技能的逻辑代码,会自动生成一个zip包上传到OBS中。HiLens会自动创建一个OBS桶用于存储技能包,桶名称命名规则为“<project_id>-hilens-skill”,您可以前往OBS服务,找到对应命名规则的OBS桶,并获取在线编辑的代码包文件。

    在线编辑时,可在编辑区创建文件或文件夹,并在文件中编辑逻辑代码。默认创建初始入口文件“index.py”,可重命名文件夹或文件名称,也可根据自身业务创建非“.py”格式的文件或文件夹。

  • “从OBS桶上传文件”

    针对比较复杂的工程代码可以线下开发,手动生成zip或tar.gz包并上传到OBS中,然后在此参数中选择使用OBS中的zip或tar.gz代码包。在上传OBS之前,您可以把模型一起打包并上传使用,模型与代码结构可参考背景信息中定义的规范。

  • “从容器镜像中选择”

    针对容器镜像格式的技能,可以提前将容器镜像文件上传至SWR,方式请参见Docker客户端上传镜像

4. 运行时配置(可选)

图4 运行时配置-22

部分技能在运行的时候需要用户配置参数,比如人脸判断类的技能需要用户上传人脸库等。运行时配置就像是一个“钩子”,开发者把“钩子”放出去,用户运行技能的时候设置了这些配置项,HiLens就会帮开发者把“钩子”收回来,这时候在代码里面开发者就可以使用这些用户的设置。您可以在界面中单击添加配置标签,参考表3填写您的配置。

您还可以单击“预览JSON格式”查看“钩子”的格式。开发者通过HiLens Framework提供的get_skill_config接口获取技能配置的JSON格式,读取里面字段的值来使用用户的配置。

运行时配置JSON格式如下所示:
{
        //全局配置
	"Language": "enum",
        //视频分路配置
	"multi_camera": [ //该字段key值multi_camera固定,值表示摄像头分路配置
		{       
			"camera_names": [     //该字段key值camera_names固定,值表示该分组配置里包含了哪些摄像头
				"cameraX",
				"cameraY"
			],
			"FaceLib": {        //配置名
				"from": "file source", //文件类型值,表示文件来自哪个服务。比如OBS
				"path": "file path"  //文件类型值,表示文件的路径
			}
		}
	],
       }
表3 运行时配置的参数说明

字段名称

说明

配置名

配置的名称,逻辑代码里面可用该字段获取该配置的值。运行时配置指技能在运行的时候,由用户配置的内容。比如人脸判断技能需要用户上传人脸库等。需要说明的是,整个运行时配置是可选的,但如果添加了一条配置,那么“配置名”“配置说明”是必填项。

值类型

表示该配置项的值是什么类型的数据。

数值类型(int、float)、枚举类型、字符串和文件类型。

值约束

表示该配置可以设置的范围。跟值类型有关。

  • 数值类型:用开闭区间的表示方法。如[1,100)表示大于等于1小于100。
  • 字符串和文件:该项无需输入。
  • 枚举:集合的表示方式,如{a,b}。

配置说明

说明该配置的作用,以及配置方法。该字段非常重要,用户会根据该字段的说明来配置,所以如果有运行时配置,开发者一定要在这里解释清楚。

配置对象

HiLens Kit可以连接多个(个数不大于设备上所安装技能的支持通道数之和)摄像头,所以可以开发支持多路视频的技能。

  • 选择“视频”,则表示该配置是可以针对设备上每个摄像头视频进行配置的,比如摄像头1和摄像头2采用不同的人脸库。
  • 选择“全局”,则表示设备上所有摄像头都用同一个配置值。

5. 弹性技能参数(可选)

部分技能不仅支持端侧部署技能,还能支持调用云侧发布的算法API,这种端云一体化的技能,需要配置弹性技能参数,参考表4填写您的配置项。

在配置弹性技能参数前,您需要提前开发模型,并导入模型至ModelArts,模型处于“正常”状态,模型的“部署类型”支持“在线服务”

图5 弹性技能参数
表4 弹性技能参数说明

字段名称

说明

web请求uri

ModelArts模型对应的请求路径。

请输入以斜杠开头,长度1~255的字符,不允许输入#~^$%*<>等特殊字符。

模型地址

ModelArts模型的地址。

  1. 默认从ModelArts导入模型,在下拉框中选择模型框架。

    当前仅支持“TensorFlow”“Caffe”两种模型框架。

  2. 在下方的模型列表中勾选待导入的模型。

请求方法

模型发送请求的方法类型。当前支持“POST”“GET”“PUT”“DELETE”

计算资源

该算法模型使用的计算资源。

6. 确认信息并完成新建技能

上述参数填写完成后,您可以在界面右侧查看其配置参数值,如果某个字段填写错误,在右侧会显示一个小红叉。

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

图6 确认信息并完成空模板新建技能

创建完成后,您的技能将进入“技能开发>技能管理”页面,且状态为“未发布”,您可以执行发布操作,将技能发布至Modelarts AI Gallery

相关文档