开发流程
使用SDK开发和运行推理业务步骤如图1所示,其中“深入开发”为SDK高级特性,用户可以视情况选择执行。
- 确定业务流程。
根据业务的功能如目标检测、图像分类、属性识别等,将业务流程进行模块化,如图1中介绍的目标检测和图像分类串联业务,将流程依次划分为图片获取、图片解码、图像缩放、目标检测、图像裁剪、图像缩放、图像分类、序列化、结果发送。
- 寻找合适插件。
首先根据已有SDK插件的功能描述和规格限制来匹配业务功能(SDK插件列表具体请参见已有插件介绍)。
当SDK提供的插件无法满足功能需求时,用户可以参考插件开发介绍开发自定义插件,该部分为SDK高阶特性。
- 准备推理模型。
网络模型(如MindSpore、Caffe、TensorFlow等)需要通过ATC工具进行转换,才能在昇腾AI处理器上进行推理(具体请参见模型转换),模型转换过程中可以实现算子调度的优化、权值数据重排、内存使用优化等,模型转换后需要进行后处理。此外,SDK提供了常用模型(例如ResNet-50、YOLOv3等)的后处理动态库(通过配置参数指定,被推理插件加载执行),当前支持的所有模型后处理列表请参考已有模型支持。
当模型后处理无法满足需求时,用户可以参考老框架模型后处理开发其他模型的后处理动态库,该部分同样为SDK高阶特性。
- 流程编排。
创建业务流配置文件,将业务流管理模块、功能插件、功能元件、插件缓存和插件元数据连接起来(具体请参见流程编排介绍),连通业务中输入到输出的数据流(具体请参见数据流程介绍)。
- 业务集成。
通过调用业务流管理的API(MxStreamManager),先进行初始化,再加载业务流配置文件(*.pipeline),然后根据业务流配置文件中的StreamName往指定Stream获取输出数据(具体请参见业务流数据对接接口介绍),最后销毁Stream。
- 剩余步骤。
首先设置“LD_LIBRARY_PATH”的环境变量后执行编译(可参考run包中“C++”目录下的CMakeLists.txt),再根据调试需求编写日志配置文件“logging.conf”,然后设置运行环境变量(MX_SDK_HOME、GST_PLUGIN_SCANNER、GST_PLUGIN_PATH),最后将插件动态库、模型文件(模型om文件和对应后处理库)、业务流配置文件打包后启动业务,可参考样例介绍运行业务流程。