OpenHarmony移植案例与原理 - startup子系统之bootstrap_lite服务启动引导部件(1)
830
2022-05-30
本博客指导用户使用华为云HiLens的HiLens Studio 平台 ,实现简单的行人检测与跟踪应用。通过创建技能项目、转换原始模型、推理代码解读、运行技能等步骤,能够了解行人检测算法、检测与跟踪技能逻辑、学会如何使用HiLens Studio创建技能并成功实现技能应用等。
1 创建技能项目
步骤 1 点击进入 HiLens Studio , 点击 “HiLens管理控制台”页面的“技能开发>HiLens Studio”,打开“HiLens StudioGetting Started”页面。
步骤 2 在“HiLens StudioGetting Started”页面, 点击 “New Project” 按钮, 弹出“选择模板创建HiLens Studio项目”对话框。
步骤 3 在 “选择模板创建HiLens Studio项目”对话框中, 点击 "Pedestrian_Detection_and_Tracking"模板(Python语言)的“新建技能”。
步骤 4 在“创建技能”页面 可以修改技能的基本信息,如名称、版本号,可以为技能添加图标和描述,也可以不 改任何信息,直接点击“确定”。
将会自动跳转到HiLens Studio主页。
2 转换原始模型
在model文件夹下预置的是Tensorflow版本的行人检测模型,并不能在HiLens上直接进行使用,所以要将原始的TensorFlow模型转换为HiLens可以支持的Ascend模型。
步骤 1 点击 “Terminal>New Terminal”,打开终端。
步骤 2 复制以下命令在打开的终端中执行,如下图所示( 图片中 红色下划线 即为下方需要执行的模型转换 命令):
/opt/ddk/bin/aarch64-linux-gcc7.3.0/omg --model=./model/yolo3_resnet18_pedestrian_det.pb --input_shape='images: 1,352,640,3' --framework=3 --output=./model/pedestrian_det --insert_op_conf=./model/aipp.cfg
以上命令使用华为Ascend芯片的OMG(Offline Model Generator,离线模型生成器)工具,将模板中提供的原始TensorFlow版本的行人检测模型转换为HiLens可以支持的Ascend模型。其中的参数解释如下:
--model: 原始模型文件的路径;
--input_shape: 原始模型输入节点的名称与shape;
--framework: 原始模型的框架类型,0代表Caffe,3代表TensorFlow;
--output: 转换后的模型输出路径(包含文件名,会自动以“.om”后缀结尾);
--insert_op_conf: 对模型输入数据进行预处理的配置文件路径,即aipp配置文件。
本案例中的aipp配置文件内容如上所示,其中指定了转换后模型的输入数据格式为uint8类型的RGB格式图像(input_format),输入图像的尺寸为640x352(src_image_size_w/h),3通道数据的方差(var_reci_chn_0/1/2 )为 0.003922 (1/ 255 , 指的是输入数据除以255)。使用了aipp配置文件 ( aipp配置文件不是必须 的,但是加了这个文件推理性能有很大优化 ) 转换后的模型,某些预处理操作(如色域转换、归一化等)会内置在模型中,在推理时性能会更优。
步骤 3 成功后会在model文件夹下出现华为HiLens支持推理的.om文件。
本案例中使用的yolo3_resnet18_pedestrian_det.pb模型,是使用来自于ModelArts AI Gallery的“物体检测YOLOv3_ResNet18”算法训练得到的,您可以在华为云学院沙箱实验室列表中,搜索“基于ModelArts实现行人检测模型训练和部署”实验名,然后点击进入该实验,即可按照实验文档训练得到该模型,训练好的模型会存储在OBS中。
注: Studio从ModelArts导入模型操作
• 单击 “File> Import File (s) from OBS ”
• 找到 您想要导入的模型 在OBS中的具体位置 , 单击 “import”,模型将会出现在 当前工程目录 下。
3 准备测试数据
步骤 1 本次实验中,我们在test目录中预置了测试视频camera0.mp4,供用户使用。
用户也可以上传自己的视频进行测试,只需在文件目录区的空白处点击右键,选择“Upload Files…”,即可将本地的文件上传至HiLens Studio。
4 推理代码解读
在“src>main>python ” 的main.py 文件的代码中,主要用到 Yolo3和Tracker两个类。
步骤 1 首先会利用我们转换的pedestrian_det.om,创建一个检测模型Yolo3类的实例person_det。
步骤 2 person_det会使用Yolo3类的infer函数,进行模型推理并返回检测结果。
步骤 3 接下来会使用Yolo3类的draw_boxes函数,在返回检测结果的图像上画出检测框。
步骤 4 main.py初始化-。即连续3s匹配到的目标才创建跟踪对象,允许跟踪对象丢失的最大时间3s,跟踪对象匹配时的最小iou阈值为0.5(iou衡量了两个边界框重叠地相对大小)。
步骤 5 利用Tracker类的update函数进行多目标跟踪,再用draw_tracking_object函数在多目标的检测结果中画出跟踪框。
5 运行技能 —— 使用视频文件
步骤 1 打开“src>main>python”下的main.py文件。
步骤 2 选择上方导航栏的 中的“Read Stream from File ”,将使用工程目录中的视频文件进行推理测试,单击 执行推理代码。
步骤 3 在右侧的“Video Output” 看到视频的行人检测结果。
步骤 4 取消main.py脚本中tracker相关代码的注释。
步骤 5 选择上方导航栏的 中的“Read Stream from File ”,单击 执行推理代码。
步骤 6 在右侧的“Video Output” 看到视频的行人检测与跟踪结果。
6 关闭 HiLens Studio
步骤 1 点击 “File>Shutdown HiLens Studio”出现对话框。
步骤 2 点击 “Shutdown HiLens Studio”对话框的“OK”,退出HiLens Studio。
想了解更多的AI技术干货,欢迎上华为云的AI专区,目前有AI编程Python等六大实战营供大家免费学习。(六大实战营link:http://su.modelarts.club/qQB9)
AI 华为HiLens
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。