导入(转换)模型
技能可以抽象地理解为算法模型+逻辑代码。算法模型负责关键的AI推理,逻辑代码负责处理模型推理的结果。因此在开发技能前,需要将模型导入华为HiLens。
模型要求
导入的模型可为“.om”格式、“.pb”格式或“.caffemodel”格式,其中“.om”格式的模型才可以在HiLens Kit上运行,“.pb”格式或“.caffemodel”格式的模型在“导入(转换)”过程中,华为HiLens平台会自动将模型转换为“.om”格式。
并非所有模型都能转换成功,进行导入(转换)模型操作前,请确认是否为“.om”模型支持的TensorFlow和Caffe算子边界,详情请见附录Caffe算子边界和Tensorflow算子边界。
前提条件
在导入模型前,导入的模型可通过ModelArts在线训练,也可通过本地训练。
- 导入ModelArts模型文件
导入ModelArts模型文件前,需先在ModelArts训练自己的算法模型,训练模型可参见《ModelArts文档》。如果要使用ModelArts的预置算法,当前华为HiLens平台仅支持转换如下预置算法:
- yolov3_resnet18(检测物体类别和位置)
- ResNet_v1_50(图像分类)(该预置算法转换方式可参考最佳实践手势判断技能开发)。
- 暂不支持导入ModelArts中“自动学习”训练的模型。
- 华为HiLens 只能导入ModelArts中训练的模型文件,不能导入ModelArts的模型。
- 本地训练模型
导入自定义模型前,需要将自定义的模型上传到OBS服务,非“.om”格式的模型上传文件包含caffe模型文件“.caffemodel”和“.prototxt”和配置文件“.cfg”,或tensorflow的“.pb”模型文件和配置文件“.cfg”。
上传操作可参见OBS快速入门。模型文件上传至OBS的目录需满足一定规范,详情请见模型输入目录规范。
上传到OBS需要收取一定费用,收费规则请参见对象存储服务 OBS。
上传至OBS时,需确保OBS桶与华为HiLens在同一区域,且OBS文件夹名称满足如下要求:
- 文件夹名称不能包含以下字符:\:*?"<>|。
- 文件夹名称不能以英文句号(.)或斜杠(/)开头或结尾。
- 文件夹绝对路径总长度不超过1023个字符。
- 文件夹名称不能包含两个以上相邻斜杠(/)。
导入(转换)模型操作
- 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>模型管理”,进入“模型管理”页面。
- 在“模型管理”页面,单击右上角的“导入(转换)模型”。
- 在“导入模型”页面,然后参考表1填写参数,信息确认无误后单击“确定”完成导入。
图1 导入模型
表1 导入自定义模型 参数名称
参数说明
名称
导入模型的名称。模型名称仅支持输入小写字母、数字、中划线字符,输入以小写字母开头,以小写字母、数字结尾,长度2~24的字符。
版本
导入模型的版本号。
格式为“数字.数字.数字”,如2.1.3,每位数字范围为0~999,超过1位时,不能以0开头。
描述
导入模型的描述。仅支持输入长度1~100的字符。不允许输入&!"'\<>=等特殊字符。
模型来源
选择导入模型的来源,包括“从OBS导入”和“从ModelArts导入”。
转换类型
若在上文“模型来源”中,选择需要转换格式的模型(非“.om”格式模型),需要选择模型转换的类型,包括“TF-FrozenGraph-To-Ascend-HiLens”、“TF-SavedModel-To-Ascend-HiLens”、“TF-FrozenGraph-To-Ascend”、“TF-SavedModel-To-Ascend”、“Caffe 转 Ascend”。
- TF-FrozenGraph-To-Ascend-HiLens
该模板将TF frozen_graph模型转换成可在ascend芯片上运行的模型。HiLens Kit系统固件版本为2.2.200.011时,建议使用此模板进行转换。
- TF-SavedModel-To-Ascend-HiLens
该模板将TF saved_model模型转换成可在ascend芯片上运行的模型。HiLens Kit系统固件版本为2.2.200.011时,建议使用此模板进行转换。
- TF-FrozenGraph-To-Ascend
该模板将TF frozen_graph模型转换成可在ascend芯片上运行的模型。HiLens Kit系统固件版本低于2.2.200.011时,建议使用此模板进行转换。
- TF-SavedModel-To-Ascend
该模板将TF saved_model模型转换成可在ascend芯片上运行的模型。HiLens Kit系统固件版本低于2.2.200.011时,建议使用此模板进行转换。
- Caffe转Ascend
- TF-FrozenGraph-To-Ascend-893
该模板将TF frozen_graph模型转换成可在ascend芯片上运行的模型。HiLens Kit系统固件版本低于2.2.200.011时,建议使用此模板进行转换。
转换输入目录
若在上文“模型来源”中,选择需要转换格式的模型(非om格式模型),转换输入目录根据模型的来源自动初始化。目录下应该包含模型文件和转换所需的配置文件。模型文件的输入目录规范请见模型输入目录规范。
转换输出目录
若在上文“模型来源”中,选择需要转换格式的模型(非om格式模型),单击选择模型转换完成后输出的OBS目录。请确保该目录下没有om模型。输出目录规范请见模型输出目录规范。
高级选项
包括输入张量形状、转换输出节点等参数选项,详情请见表2。
表2 高级选项 参数名称
参数说明
输入张量形状
若在上文“模型来源”中,选择需要转换格式的模型(非om格式模型),并且转换类型是“Tensorflow frozen graph 转 Ascend”或“Tensorflow SavedModel 转 Ascend”时,需要填写输入张量形状。
张量形状即模型输入数据的shape,输入数据格式为NHWC,如“input_name:1,224,224,3”。“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。
如果存在多个输入,请以分号(;)隔开。
转换输出节点
指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。
输入数据格式
默认是“NHWC”,如果实际是“NCHW”的话,需要通过此参数指定“NCHW”。
优选数据格式
指定网络算子优先选用的数据格式,“ND(N=4)”和“5D”。仅在网络中算子的输入数据同时支持“ND”和“5D”两种格式时,指定该参数才生效。“ND”表示模型中算子按“NCHW”转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。
生成高精度模型
指定是否生成高精度“FP16 Davinci”模型。
- 0为默认值,表示生成普通“FP16 Davinci”模型,推理性能更好。
- 1表示生成高精度“FP16 Davinci”模型,推理精度更好。
网络输出数据类型
“FP32”为默认值,推荐分类网络、检测网络使用;图像超分辨率网络,推荐使用“UINT8”,推理性能更好。
模型导入后,将进入“模型管理”页面,您导入的模型可从列表中查看。
- TF-FrozenGraph-To-Ascend-HiLens
查看模型详情
重新转换模型
当您导入的模型格式不是“.om”格式,且模型状态处于“转换失败”的状态时,您可以修改模型的相关参数,重新转换模型。
模型状态可在华为HiLens管理控制台的“模型管理”页面查看。
删除模型
您可以根据自身业务需要,删除已导入(转换)的模型。状态为“转换中”的模型不可执行删除操作。
- 登录华为HiLens管理控制台,在左侧导航栏中选择“技能开发>模型管理”,进入“模型管理”页面。
- 单击操作列的“删除”,完成删除模型操作。也可单击操作列的“查看详情”,在“模型详情”页面的右上角单击“删除模型”,完成删除模型操作。
图3 删除模型