一、前言
mxVision是MindX SDK软件开发套件的一个核心组件,其致力于简化昇腾 AI 处理器推理业务开发过程,降低使用昇腾AI处理器开发的门槛。主要功能如下:
- 插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程。
- 提供丰富的插件库,用户可根据业务需求组合 Jpeg 解码、抠图、缩放、模型推理、数据序列化等插件。
- 基于 Ascend Computing Language(AscendCL),提供常用功能的高级API,如模型推理、编解码、预处理等,简化ACL编程开发。
- 支持自定义插件开发,用户可快速地将自己的业务逻辑封装成插件,打造自己的应用插件。
这里我们主要体验一下使用mxVision的流程编排功能(Pipeline)实现可视化AI推理应用开发。
我们选择应用案例中的口罩识别项目:
mindxsdk-referenceapps: MindX SDK Reference Apps - Gitee.com
二、编辑Pipeline
使用Pipeline插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程。我们在工程中新建一个test.pipeline文件:
在input、output和other栏中,我们可以看到许许多多的插件,它们都有对应的一个功能,我们将使用这些插件来实现业务逻辑,我们可以从左侧插件栏拖出想要的插件到编辑区,并自由地连接它们。
根据项目README文件中的业务逻辑,此项目的推理逻辑如图所示:
1、图像输入
使用appsrc插件输入,参数为默认值。
blocksize
:每个buffer读取的大小(以字节为单位),默认值为4096。
2、图像前处理
使用mxpi_imagedecoder插件对图像进行解码,参数为默认值。
deviceId
:Ascend设备的芯片编号
status
:异步
imageFormat
:解码图像的格式
cvProcessor
:使用Ascend或者Opencv
outputDataFormat
:解码后数据的格式
dataType
:解码数据的类型
formatAdaptation
:是否进行色域转换
使用mxpi_imageresize插件对图像进行缩放成256*256,参数如图:
重点关注resizeHeight和resizeWidth即可,这里我们都设置成256。
3、模型推理
使用mxpi_tensorinfer插件进行模型推理,参数如图:
设置modelPath模型路径即可,其他参数默认,注意模型需是om格式,可以先使用ATC工具将模型转成om离线模型格式。
4、输出推理
使用mxpi_dataserialize插件输出推理结果,将结果组装成json字符串输出,参数如图。
outputDataKeys:指定需要输出的数据的索引,(通常情况下为元件名称),我们输入上一个插件的名字mxpi_tensorinfer。
5、输出图像
使用appsink插件输出图像,参数为默认值。
6、编排Pipeline
进行最终Pipeline编排,连接各个插件,效果图如下:
具体各插件的功能与使用可以查看官方文档:
插件总体介绍-已有插件介绍-mxVision 用户指南-智能视频分析-3.0.RC3-MindX SDK-文档首页-昇腾社区 (hiascend.com)
三、运行image.py
打开image.py脚本,修改pipeline的路径为刚刚所配置的test:
设置测试的图片的路径:
运行成功!
四、总结
使用mxVision套件的pipeline功能,我们可以可视化的编辑AI推理应用的逻辑,插件化开发模式,将整个推理流程“插件化”,每个插件提供一种功能,通过组装不同的插件,灵活适配推理业务流程,从而实现可视化推理应用开发,降低了AI开发的门槛。其实,MindX SDK还有其他三个核心组件针对不同的应用场景:制造质检mxManufacture、检索聚类mxIndex和大模型微调套件mxTuningKit。感兴趣的小伙伴值得一试~
标签:插件,mxVision,AI,模型,初体验,开发,使用,推理 From: https://blog.51cto.com/u_15916909/5965295