注意:巨坑提醒:python版本和mindx sdk有关联,python3.7.5最高支持的mindx sdk版本为2.0.3 如果使用2.0.4版本,会报错: 如果有遇到这类问题的小伙伴一定要记得注意一下Python和MindX SDK的版本哈。 MindX SDK2.0.4推荐Python用3.9.2版本,我的上面使用3.7.5是报错了。
基于MindX SDK部署应用的源码介绍
Mindx sdk提供了极简易用的开发sdk,可以快速部署应用。 我们运行mxVision样例,使用python实现。 整个运行的入口在python下的run.sh中,更新环境变量后,执行main.py脚本。 Main.py脚本需要修改的内容如下,一个是pipeline的路径,一个是pipeline中streamName的名字。然后调用pipeline。 用户可以修改的pipeline内容:
开发流程
参考: MindX SDK 2.0.3.6 mxVision 用户指南 01 第六章 使用命令行方式开发
(1)确定业务流程
首先我们知道我们要干什么事情。 我们的业务是基于YoloV3和Resnet50实现目标框提取和分类。 整个流程需要先获取图片、图片解码为RGB格式、图片缩放到模型输入要求的大小、使用Yolov3目标检测提取感兴趣区域、将感兴趣的图像裁剪出来、图像缩放到Resnet50模型的大小、运行Resnet50图片分类、结果保存为json格式并序列化、结果发送出去。
(2)寻找合适插件
根据已有SDK插件的功能描述和规格限制来匹配业务功能。 当SDK提供的插件无法慢足功能需求时,用户还可以开发自定义插件。这部分是高级教程。 这里我们使用的是官方的插件就可以满足要求。 如下是我们这次的业务用到的插件类型:
业务流程模块 | 插件名称 |
---|
获取图片流 | stream_config | 图片解码 | mxpi_imagedecoder | 图片缩放 | mxpi_imageresize | 推理任务 | mxpi_tensorinfer | 目标结果处理 | mxpi_objectpostprocessor | 分类结果处理 | mxpi_classpostprocessor | 序列化 | mxpi_dataserialize | 结果发送 | appsink |
关于插件一些介绍 什么是插件:是一种遵循一定规范的应用程序接口编写出来的程序。英文为 Plugin。在MindX SDK中的每一个插件名称前面都有一个mxpi. 比如视频拉流插件:mxpi_rtspsrc 图像缩放插件:mxpi_imageresize 图像推理插件:mxpi_tensorinfer
(3)准备推理模型
网络模型(如MindSpore、 Caffe、 TensorFlow等)需要通过ATC工具进行转换,才能在昇腾AI处理器上进行推理。 模型转换过程中可以实现算子调度的优化、权值数据重排、内存使用优化等,模型转换后需要进行后处理。
YOLOv3: https://www.hiascend.com/zh/software/modelzoo/detail/1/ba2a4c054a094ef595da288ecbc7d7b4 Resnet: https://www.hiascend.com/zh/software/modelzoo/detail/C/d63df55c1f7f4112a97c8a33e6da89fe 将om模型放置到对应的models路径下。
(4) 执行
运行脚本
sh run.sh
运行结果如下:
|