使用空模板
本章节介绍使用空模板新建技能的操作步骤。如果您选择使用空模板,需提前准备好使用的模型和逻辑代码。
背景信息
- 在华为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客户端上传镜像。
前提条件
1. 开始新建技能
- 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>技能管理”,进入技能列表。
- 在“技能管理”页面,单击右上角“新建技能”,进入“创建技能”页面。
图1 创建技能-21
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。
字段名称 |
说明 |
---|---|
技能格式 |
技能的格式。可分为“技能包”和“容器镜像”两种格式。 |
运行时语言 |
逻辑代码的运行时语言。目前支持“Python3.7”和“C/C++”。如果选择C/C++语言开发,将不支持在线编辑代码。开发者线下开发完成后,需要在Linux环境下把代码编译打包,然后上传到obs。 |
代码执行文件 |
技能的启动将以该代码执行文件为入口,类似C语言的main函数。入口文件必须在一级目录。
文件名不超过1024位,允许输入字母、数字或下划线。不允许输入#~^等字符。 |
模型 |
技能的核心算法。在本地或ModelArts训练,导入到HiLens平台。单击加号,您可以在弹出框中,选择华为HiLens平台模型管理列表下的模型。 |
代码上传方式 |
逻辑代码的上传方式。
说明:
固件1.1.2及以后版本支持配置技能的Python依赖库。开发者在开发技能过程中,可根据自身需要配置技能的Python依赖库,详情请见配置技能的Python依赖库。
|
4. 运行时配置(可选)
部分技能在运行的时候需要用户配置参数,比如人脸判断类的技能需要用户上传人脸库等。运行时配置就像是一个“钩子”,开发者把“钩子”放出去,用户运行技能的时候设置了这些配置项,HiLens就会帮开发者把“钩子”收回来,这时候在代码里面开发者就可以使用这些用户的设置。您可以在界面中单击添加配置标签,参考表3填写您的配置。
您还可以单击“预览JSON格式”查看“钩子”的格式。开发者通过HiLens Framework提供的get_skill_config接口获取技能配置的JSON格式,读取里面字段的值来使用用户的配置。
{ //全局配置 "Language": "enum", //视频分路配置 "multi_camera": [ //该字段key值multi_camera固定,值表示摄像头分路配置 { "camera_names": [ //该字段key值camera_names固定,值表示该分组配置里包含了哪些摄像头 "cameraX", "cameraY" ], "FaceLib": { //配置名 "from": "file source", //文件类型值,表示文件来自哪个服务。比如OBS "path": "file path" //文件类型值,表示文件的路径 } } ], }
字段名称 |
说明 |
---|---|
配置名 |
配置的名称,逻辑代码里面可用该字段获取该配置的值。运行时配置指技能在运行的时候,由用户配置的内容。比如人脸判断技能需要用户上传人脸库等。需要说明的是,整个运行时配置是可选的,但如果添加了一条配置,那么“配置名”、“配置说明”是必填项。 |
值类型 |
表示该配置项的值是什么类型的数据。 数值类型(int、float)、枚举类型、字符串和文件类型。 |
值约束 |
表示该配置可以设置的范围。跟值类型有关。
|
配置说明 |
说明该配置的作用,以及配置方法。该字段非常重要,用户会根据该字段的说明来配置,所以如果有运行时配置,开发者一定要在这里解释清楚。 |
配置对象 |
HiLens Kit可以连接多个(个数不大于设备上所安装技能的支持通道数之和)摄像头,所以可以开发支持多路视频的技能。
|
6. 确认信息并完成新建技能
上述参数填写完成后,您可以在界面右侧查看其配置参数值,如果某个字段填写错误,在右侧会显示一个小红叉。
确认信息无误后,单击“确定”完成技能创建。
创建完成后,您的技能将进入“技能开发>技能管理”页面。