单插件测试样例
工具介绍
单插件测试工具可以根据待测试插件的配置,自动添加Load与Dump数据,生成待测插件的pipeline文件,并对待测插件进行串流测试。
父主题: 单插件测试工具
工具使用
-
在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”文件中,配置待测插件属性,config文件大小限制为100M。
"factory": "mxpi_pluginname", # 插件类型"plugin_name": "mxpi_pluginname0", # 插件名称"props": { # 插件属性"dataSource": "mxpi_parentName0","resizeHeight": "416","resizeWidth": "416"} -
在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”文件“load”参数中,配置插件的数据输入文件。若插件为多输入,可以配置多个数据输入文件。
数据输入文件中的内容必须是待测插件的输入数据。
"load": [ # load插件的输入文件名,一个输入文件对应一个load插件"input/pluginname0.json"] -
在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”文件“dump”参数中,若插件为多输出,可以配置多个数据输出文件。
"dump": [ # dump插件的输出文件名,一个输出文件对应一个dump插件"pluginname0-output.json"] -
运行单插件测试工具,生成待测插件的pipeline文件,并对待测插件进行串流测试。
执行run.sh脚本,会在pipeline目录下生成待测插件的pipeline文件,并对待测插件进行串流测试,生成“dump”参数中配置的数据输出文件(其最终执行文件为main.py)。
chmod +x run.sh && ./run.sh
父主题: 单插件测试工具
单插件测试样例
-
在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”配置文件中配置待测插件mxpi_imageresize的配置信息。配置信息如下:
- 如果待测插件是多输入插件,“load”配置项可以配置多个输入文件。
- 如果待测插件是多输出插件,“dump”配置项可以配置多个输出文件。
PipelineConfig = {"stream_config": {"deviceId": "0"},"factory": "mxpi_imageresize", # 插件名称"props": { # 插件属性"dataSource": "mxpi_imagedecoder0","resizeHeight": "416","resizeWidth": "416"},"load": [ # load插件的输入文件名,一个输入文件对应一个load插件"input/imageresize0.json"],"dump": [ # dump插件的输出文件名,一个输出文件对应一个dump插件"imageresize0-output.json"]} -
创建待测插件的数据输入文件“input/imageresize0.json”。
{"buffer": {},"metaData": [{"key": "ExternalObjects","protoDataType": "MxpiObjectList"},{"key": "ReservedFrameInfo","protoDataType": "MxpiFrameInfo"},{"key": "ReservedVisionList","content": "mxpi_imagedecoder0"},{"key": "mxpi_imagedecoder0","content": "{\"visionVec\":[{\"visionInfo\":{\"format\":1,\"width\":512,\"height\":512,\"widthAligned\":512,\"heightAligned\":512},\"visionData\":{\"dataPtr\":\"17695267880960\",\"dataSize\":393216,\"memType\":\"MXPI_MEMORY_DVPP\"}}]}","visionData": [{"dataPtr": "17695267880960", // dataPtr对应MxpiVisionData的dataPtr的地址"content": "vLu6ury9vr68vLy8" // 存在Device侧的图像数据,经过base64编码后的值}],"protoDataType": "MxpiVisionList"}]} -
运行单插件测试工具,生成待测插件的pipeline文件,并对待测插件进行串流测试。命令如下:
chmod +x run.sh && ./run.sh -
检测单插件测试工具生成了pipeline文件。执行命令如下:
cat pipeline/mxpi_imageresize0.pipeline{"TestPlugin": {"stream_config": {"deviceId": "0"},"mxpi_imageresize0": {"factory": "mxpi_imageresize","next": ["mxpi_dumpdata0"],"props": {"dataSource": "mxpi_imagedecoder0","resizeHeight": "416","resizeWidth": "416"}},"filesrc0": {"factory": "filesrc","next": "mxpi_loaddata0","props": {"location": "input/imageresize0.json","blocksize": "40960000"}},"mxpi_loaddata0": {"factory": "mxpi_loaddata","next": "mxpi_imageresize0:0"},"mxpi_dumpdata0": {"factory": "mxpi_dumpdata","next": "fakesink0","props": {"location": "imageresize0-output.json"}},"fakesink0": {"factory": "fakesink"}}} -
检测单插件测试工具生成了待测插件的输出文件“imageresize0-output.json”。
-
检测串流结果,串流成功后,会显示如图1所示的成功日志。
图1 成功日志

父主题: 单插件测试工具
工具介绍
插件信息收集工具用于快速搜集所有插件信息。
父主题: 插件信息搜集工具
工具使用
-
设置程序所需环境变量。
. ${MX_SDK_HOME}/set_env.sh -
执行程序。
进入到执行程序所在“bin”目录,执行如下命令。
./InspectAllPlugins -
获取结果。
程序输出结果保存在“AllPluginsInfo.json”文件。
父主题: 插件信息搜集工具
工具介绍
插件性能统计工具,可以快速测试分析MindX SDK的推理性能(所有性能统计数据涉及的时间单位都是微秒)。性能统计指标请见表1:
图1 MindX SDK推理简易流程图
表1 性能统计指标
| 性能 | 介绍 |
|---|---|
| 端到端耗时 | 从appsrc输入插件的srcpad输出数据(t1时刻)开始计时统计,到appsink输出插件的sinkpad接收数据(t4时刻)结束计时统计。 端到端耗时 = 结束时间(t4) - 开始时间(t1) |
| 单插件耗时 | 统计单个插件(只涉及SDK开发的插件,即插件名以mxpi_开头,不包含Gstreamer插件)的耗时。 如mxpi_modelinfer插件的耗时,从这个插件sinkpad(t2时刻)开始计时,到这个插件srcpad(t3时刻)结束计时。 单插件耗时 = 结束时间(t3) - 开始时间(t2) |
| 模型推理耗时 | 模型推理只在模型插件中存在,因此在模型推理插件内部会统计模型推理耗时。 |
| 后处理耗时 | 后处理只在modelinfer框架模型推理插件中存在,因此在modelinfer框架模型推理插件内部会统计后处理耗时。 |
| 吞吐率 | appsink输出插件每次从sinkpad接收一次数据,做一次统计。 |
| 队列长度 | 每隔“ps_queue_size_interval_time”时间,获取一次队列的当前长度,获取“ps_queue_size_times”次数后,做一次队列长度的统计。 |
父主题: 插件性能统计工具
在线提单