自定义场景pipeline生成
“{自定义场景pipeline生成}.py”定义了生成stream业务流配置、准备模型、后处理配置文件等流程。
编写要点
- 定义推理服务生成的函数。
get_pipeline_name:返回流程编排的主函数名。通过执行推理服务主函数脚本“infer_service_generation.py”,扫描到自定义场景时执行该函数,将自定义流程编排主函数名与自定义场景名进行绑定。
流程编排主函数:实现自定义场景业务流程编排。通过上述绑定的映射关系调用流程编排主函数。
- mxManufacture流程编排。
流程编排定义了场景业务流程中模型的串联关系,使用mxManufacture流程编排的方式可以迅速实现高性能应用的开发。
如下示例描述了模型的串联关系,并高效实现了场景业务流程。from mindx.sdk.stream import PluginNode, FunctionalStream if __name__ == '__main__': # 定义mxpi_tensorinfer插件属性 props0 = { "dataSource": "mxpi_imageresize0", "modelPath": "./ssd_mobilenetv1_fpn_best.om" # 模型路径与实际保持一致 } # 定义mxpi_objectpostprocessor插件属性 props1 = { "dataSource": "mxpi_tensorinfer0", "postProcessConfigPath": "./post_process_0.cfg", # 配置文件与实际保持一致 "labelPath": "./label_0.names", # 配置文件与实际保持一致 "postProcessLibPath": "libSsdMobilenetFpn_MindsporePost.so" } # 定义mxpi_objectpostprocessor插件属性 props2 = { "outputDataKeys":"mxpi_objectpostprocessor0" } # 模型串联 appsrc0 = PluginNode("appsrc") mxpi_imagedecoder0 = PluginNode("mxpi_imagedecoder")(appsrc0) mxpi_imageresize0 = PluginNode("mxpi_imageresize")(mxpi_imagedecoder0) mxpi_tensorinfer0 = PluginNode("mxpi_tensorinfer", props0)(mxpi_imageresize0) mxpi_objectpostprocessor0 = PluginNode("mxpi_objectpostprocessor", props1)(mxpi_tensorinfer0) mxpi_dataserialize0 = PluginNode("mxpi_dataserialize", props2)(mxpi_objectpostprocessor0) appsink0 = PluginNode("appsink")(mxpi_dataserialize0) # 生成pipeline f=FunctionalStream('stream', [appsrc0], [appsink0]) f.set_device_id('0') f.build() print('json pipeline:' + f.to_json())
- 归档推理模型及配置文件。推理模型及配置文件归档路径:与平台下发的项目配置json文件中的“result_path”字段保持一致。
调试方法
安装自定义推理服务包后,执行如下命令:
python mxAOIService/scripts/infer_service_generation.py --model_params=平台下发的项目配置json文件路径
参数含义:“--model_params”平台下发的项目配置json文件路径。
- 查看配置文件“mxAOIService/config/models/model_configs.json”是否完整。
- 查看“mxAOIService/config/models/project_*/assm1-2/1/”的模型是否准备就绪。
- 查看“mxAOIService/config/models/project_*/assm1-2/1/”的pipeline是否完整。
- 查看“mxAOIService/config/models/project_*/assm1-2/1/”的后处理配置文件是否完整。
父主题: 流程描述