华为HiLens
华为HiLens
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 快速入门
- 用户指南(基础版控制台)
- 用户指南(专业版控制台)
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
- 其他问题
- 计费问题
- 算法类问题
- 管理数据
- 管理产品
- 购买/定制技能
- 安装/启动技能
- HiLens Studio使用
- 技能开发
- 管理设备
- 注册设备
-
端侧设备HiLens Kit
- 设备介绍
- HiLens Kit硬件操作
-
HiLens Kit系统操作
- 如何使用SSH登录设备?
- 为什么更改设备系统密码后,使用新密码可以使用浏览器登录华为HiLens智能边缘管理系统,但是无法使用PuTTY登录设备?
- 如何对HiLens Kit系统进行底层操作?
- HiLens Kit可以导入自定义的Python模块吗?
- 如何在HiLens Kit安装yum?
- 如何管理设备文件?
- 如何在HiLens Kit安装软件包?
- 如何使用root登录设备,并关闭连接超时?
- 基于Python的openmv 的设备,是否支持通过调用API去调用HiLens Kit的技能?
- HiLens Kit不能显示中文怎么办?
- HiLens Kit如何清除已保存的wifi信息?
- HiLens Kit 如何使用命令行连接无线网络
- HiLens Kit如何配置永久性DNS?
- 视频帮助
- 文档下载
- 通用参考
本文导读
展开导读
链接复制成功!
示例-模型管理
模型管理示例如下:
#! /usr/bin/python3.7 import hilens import numpy as np def run(): # 构造摄像头 cap = hilens.VideoCapture() # 获取一帧画面,自带摄像头获取图像为YUV_NV21格式,默认分辨率720p frame = cap.read() # 加载模型 # filepath不能只是文件名,如果模型与程序在同一个目录,取相对路径则应当写作"./my_model.om" # 如果模型是在技能开发页面中附加进来的,则使用hilens.get_model_dir()可以得到模型所在目录,应当写为: # model = hilens.Model(hilens.get_model_dir() + "my_model.om") # 如果有多个模型,需要分别加载 model1 = hilens.Model("./my_model1.om") model2 = hilens.Model("./my_model2.om") model3 = hilens.Model("./my_model3.om") # 假设模型1的输入是一张480*480的YUV_NV21图片,数据类型为uint8 pro = hilens.Preprocessor() input1 = pro.resize(frame, 480, 480, 1) input1 = input1.flatten() # 进行推理 output1 = model1.infer([input1]) # 假设模型2的输入为模型1的输出(已经是list),数据类型为float32 input2 = output1 # 进行推理 output2 = model2.infer(input2) # 假设模型3的输入是多输入,数据类型为float32 ip_0 = (sample_data[0]).transpose(0, 3, 1, 2).astype(np.float32).flatten() ip_1 = (sample_data[1]).transpose(0, 3, 1, 2).astype(np.float32).flatten() ip_2 = (sample_data[2]).transpose(0, 3, 1, 2).astype(np.float32).flatten() ip_3 = (sample_data[3]).transpose(0, 3, 1, 2).astype(np.float32).flatten() ip_4 = (sample_data[4]).transpose(0, 3, 1, 2).astype(np.float32).flatten() # 进行推理 output3 = model3.infer([ip_0, ip_1, ip_2, ip_3, ip_4]) # 其他处理 pass if __name__ == '__main__': hilens.init("hello") run() hilens.terminate()
如果推理的实际输入与模型输入大小不一致,推理将会失败。此时infer的返回值将是一个int的错误码,日志会报出错误信息,开发者可以通过错误信息来定位错误。如下所示:
>>> input0 = np.zeros((480*480*3), dtype='uint8') >>> outputs = model.infer([input0]) 2019-09-30 18:44:24,075 [ERROR][SFW] Ascend 310: aiModelManager Process failed, please check your input. Model info: inputTensorVec[0]: name=data n=1 c=3 h=480 w=480 size=345600 outputTensorVec[0]: name=output_0_reg_reshape_1_0 n=1 c=6750 h=1 w=1 size=27000 your input size:0: 691200; >>> outputs 17 >>> type(outputs) <class 'int'>
父主题: 模型管理模块