
# 使用空模板
本章节介绍使用空模板新建技能的操作步骤。如果您选择使用空模板，需提前准备好使用的模型和逻辑代码。
 #### 背景信息
- 在华为HiLens控制台开发技能时，会占用OBS资源，需要收取一定费用，收费规则请参见[对象存储服务 OBS](https://www.huaweicloud.com/pricing.html?tab=detail#/obs)。
- 算法模型必须是.om格式，且满足华为HiLens的要求，详细可参考[开发算法模型](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0025.html)。
- 逻辑代码的存储方式有两种："在线编辑代码"和"从OBS上传代码"。
  - 如果您的代码逻辑较简单，建议直接在线编辑代码。
  
  - 如果您的代码结构比较复杂，推荐用本地IDE开发完成后，使用OBS上传代码zip或tar.gz包的方式，上传操作可参见[OBS快速入门](https://support.huaweicloud.com/qs-obs/obs_qs_0002.html)。上传到OBS需要收取一定费用，收费规则请参见[对象存储服务 OBS](https://www.huaweicloud.com/pricing.html?tab=detail#/obs)。
    ![](https://support.huaweicloud.com/usermanual-hilens/public_sys-resources/note_3.0-zh-cn.png)
    - 上传文件时，要求此OBS桶与您使用的华为HiLens处于同一区域。
    
    - 若您从OBS上传代码，需要将所有代码文件压缩后上传，上传的文件必须为".zip"或"tar.gz"格式，且入口文件必须在一级目录。如下示例所示，入口代码（"main.py"）在一级目录，其它的代码按需求自行设计，您可将模型与代码一起打包上传。
    
    - 入口代码所在文件（如上面的main.py）通过参数【代码执行文件】进行配置，后面会有说明。
     
    代码目录示例如下所示：
    ```
    skill/
    |---main.py#入口文件，名称与新建技能的“代码配置”参数一致
    |---depends/#可选，用于存放模型文件
    |---workspace/#工作空间，用于存放技能生成的数据
    |---data/#用于存放运行时配置
    ```
    
   
 
- 若技能格式为容器镜像格式，请先将镜像上传至容器镜像服务（SWR），上传方式请参见[Docker客户端上传镜像](https://support.huaweicloud.com/qs-swr/index.html)。
#### 前提条件
- 保证华为云账号处于不欠费状态。在华为HiLens控制台开发技能时，会占用OBS资源，需要收取一定费用，收费规则请参见[对象存储服务 OBS](https://www.huaweicloud.com/pricing.html?tab=detail#/obs)。
- 新建技能使用的算法模型已[导入HiLens](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0062.html)中。
- 如果使用"从OBS上传代码"方式，请提前按照要求将逻辑代码上传至OBS桶中。
 
#### 1. 开始新建技能
1. 登录华为HiLens管理控制台，在左侧导航栏中选择"技能开发\>技能管理"，进入技能列表。
2. 在"技能管理"页面，单击右上角"新建技能"，进入"创建技能"页面。
   图1创建技能-21   
   ![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0000001208300353.png "点击放大") 
 
 #### 2. 基本信息
在"创建技能"页面，在"技能模板"中选择"使用空模板"后，填写基本信息。参数说明请参见[表1]。
图2填写基本信息   
![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0259171623.png "点击放大")
 表1基本信息参数设置 
| 字段名称 | 说明                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| 技能模板 | 是否使用模板来开发技能。如果选择已有模板，则会使用模板的模型和代码。即技能内容模块的字段都会使用模板的信息。                                                                                                                                                                                                                                                                                                                                                          |
| 技能名称 | 技能的名称，下发到端侧也使用该名称作为根目录。 可输入中文、字母、数字、下划线或中划线，必须以中文、字母开头，以中文、字母或数字结尾，长度3\~60个字符。 说明： 由于技能市场不允许存在同名技能，所以如果想发布到技能市场，请使用全局唯一的名称对您的技能进行命名。                                                                                                                                                                           |
| 技能版本 | 技能的版本。版本号格式为"A.A.A"，"A"为不超过3位的自然数。例如"1.0.0"。 当"A"超过一位时，不允许以"0"开头，比如禁止输入"01.0.0"。                                                                                                                                                                                                                                                                                               |
| 适用芯片 | 技能支持的芯片。运行在HiLens Kit上的技能需选择Ascend 310芯片。                                                                                                                                                                                                                                                                                                                                                                       |
| 检验值  | 用于技能校验，防止技能伪冒。要与代码中初始化接口的参数一致。具体使用方法请参见[开发指南\>初始化HiLens Framework](https://support.huaweicloud.com/devg-hilens/hilens_05_0006.html)。                                                                                                                                                                                                                                                                            |
| 应用场景 | 技能适用的场景，例如"智慧园区"、"智慧家庭"、"智能车载"、"智能商超"的子场景及"其他"。                                                                                                                                                                                                                                                                                                                                                                 |
| 技能图标 | 技能的头像。                                                                                                                                                                                                                                                                                                                                                                                                          |
| OS平台 | 技能运行的操作系统平台，包括Linux、Android、IOS、LiteOS和Windows。HiLens Kit用的是基于CentOS制作的Linux发行版Euler系统操作系统，所以如果开发的是运行在HiLens Kit的技能，这里选择Linux。                                                                                                                                                                                                                                                                                  |
| 描述   | 对技能的详细介绍。 最大长度2048，不允许输入\~\^$%\&等特殊字符。 说明： 若新建技能的场景需要发送消息到用户的手机或邮箱，比如检测到陌生人技能需要在发现陌生人后发送消息提醒用户，描述中**必须注明** ："本技能支持发送订阅消息"，发送的具体内容需在[编写逻辑代码](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0029.html)时注明，详细指导和API介绍可参见[开发指南](https://support.huaweicloud.com/devg-hilens/hilens_05_0001.html)。 |
   
 #### 3. 技能内容
根据您的模型和逻辑代码情况，填写技能内容，详细参数说明请参见[表2]。
图3技能内容   
![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0259171832.png "点击放大")
 表2技能内容的参数说明 
| 字段名称   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|
| 技能格式   | 技能的格式。可分为"技能包"和"容器镜像"两种格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 运行时语言  | 逻辑代码的运行时语言。目前支持"Python3.7"和"C/C++"。如果选择C/C++语言开发，将不支持在线编辑代码。开发者线下开发完成后，需要在Linux环境下把代码编译打包，然后上传到obs。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 代码执行文件 | 技能的启动将以该代码执行文件为入口，类似C语言的main函数。入口文件必须在一级目录。 - "技能包"格式的技能要求该文件在技能包的根目录下，如Python技能请以.py结尾。  - "容器镜像"格式的技能，如果dockerfile有配置ENTTRYPOINT，概述如可以为空，否则要求输入该镜像内执行文件的路径。   文件名不超过1024位，允许输入字母、数字或下划线。不允许输入#\~\^等字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 模型     | 技能的核心算法。在本地或ModelArts训练，[导入到HiLens平台](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0062.html)。单击加号，您可以在弹出框中，选择华为HiLens平台模型管理列表下的模型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 代码上传方式 | 逻辑代码的上传方式。 说明： 固件1.1.2及以后版本支持配置技能的Python依赖库。开发者在开发技能过程中，可根据自身需要配置技能的Python依赖库，详情请见[配置技能的Python依赖库](https://support.huaweicloud.com/hilens_faq/hiLens_03_0115.html)。 - "在线编辑" 使用在线开发技能的逻辑代码，会自动生成一个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客户端上传镜像](https://support.huaweicloud.com/qs-swr/index.html)。    |
   
 #### 4. 运行时配置（可选）
图4运行时配置-22   
![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0000001208300811.png "点击放大")
部分技能在运行的时候需要用户配置参数，比如人脸判断类的技能需要用户上传人脸库等。运行时配置就像是一个"钩子"，开发者把"钩子"放出去，用户运行技能的时候设置了这些配置项，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]填写您的配置项。
![](https://support.huaweicloud.com/usermanual-hilens/public_sys-resources/note_3.0-zh-cn.png)
在配置弹性技能参数前，您需要提前[开发模型](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0025.html)，并导入模型至ModelArts，模型处于"正常"状态，模型的"部署类型"支持"在线服务"。
图5弹性技能参数   
![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0000001208141837.png "点击放大")
 表4弹性技能参数说明 
| 字段名称     | 说明                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|
| web请求uri | ModelArts模型对应的请求路径。 请输入以斜杠开头，长度1\~255的字符，不允许输入#\~\^$%\*\<\>等特殊字符。                                                                                                                                                                                                                                                                  |
| 模型地址     | ModelArts模型的地址。 1. 默认从ModelArts导入模型，在下拉框中选择模型框架。 当前仅支持"TensorFlow"和"Caffe"两种模型框架。   2. 在下方的模型列表中勾选待导入的模型。   |
| 请求方法     | 模型发送请求的方法类型。当前支持"POST"、"GET"、"PUT"、"DELETE"。                                                                                                                                                                                                                                                                                                                         |
| 计算资源     | 该算法模型使用的计算资源。                                                                                                                                                                                                                                                                                                                                                        |
   
#### 6. 确认信息并完成新建技能
上述参数填写完成后，您可以在界面右侧查看其配置参数值，如果某个字段填写错误，在右侧会显示一个小红叉。
确认信息无误后，单击"确定"完成技能创建。
图6确认信息并完成空模板新建技能   
![](https://support.huaweicloud.com/usermanual-hilens/zh-cn_image_0252635527.png)
创建完成后，您的技能将进入"技能开发\>技能管理"页面，且状态为"未发布"，您可以执行发布操作，将技能[发布至Modelarts AI Gallery](https://support.huaweicloud.com/usermanual-hilens/hilens_02_0077.html)。
