Skip to main content

单插件测试样例

工具介绍

单插件测试工具可以根据待测试插件的配置,自动添加Load与Dump数据,生成待测插件的pipeline文件,并对待测插件进行串流测试。

父主题: 单插件测试工具

工具使用

  1. 在“${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"
    }
  2. 在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”文件“load”参数中,配置插件的数据输入文件。若插件为多输入,可以配置多个数据输入文件。

    数据输入文件中的内容必须是待测插件的输入数据。

    "load": [ # load插件的输入文件名,一个输入文件对应一个load插件
    "input/pluginname0.json"
    ]
  3. 在“${MX_SDK_HOME}/toolkit/TestPlugin/config/config.py”文件“dump”参数中,若插件为多输出,可以配置多个数据输出文件。

    "dump": [ # dump插件的输出文件名,一个输出文件对应一个dump插件
    "pluginname0-output.json"
    ]
  4. 运行单插件测试工具,生成待测插件的pipeline文件,并对待测插件进行串流测试。

    执行run.sh脚本,会在pipeline目录下生成待测插件的pipeline文件,并对待测插件进行串流测试,生成“dump”参数中配置的数据输出文件(其最终执行文件为main.py)。

    chmod +x run.sh && ./run.sh

父主题: 单插件测试工具

单插件测试样例

  1. 在“${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"
    ]
    }
  2. 创建待测插件的数据输入文件“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"
    }]
    }
  3. 运行单插件测试工具,生成待测插件的pipeline文件,并对待测插件进行串流测试。命令如下:

    chmod +x run.sh && ./run.sh
  4. 检测单插件测试工具生成了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"
    }
    }
    }
  5. 检测单插件测试工具生成了待测插件的输出文件“imageresize0-output.json”。

  6. 检测串流结果,串流成功后,会显示如图1所示的成功日志。

    图1 成功日志

父主题: 单插件测试工具

工具介绍

插件信息收集工具用于快速搜集所有插件信息。

父主题: 插件信息搜集工具

工具使用

  1. 设置程序所需环境变量。

    . ${MX_SDK_HOME}/set_env.sh
  2. 执行程序。

    进入到执行程序所在“bin”目录,执行如下命令。

    ./InspectAllPlugins
  3. 获取结果。

    程序输出结果保存在“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”次数后,做一次队列长度的统计。

父主题: 插件性能统计工具

在线提单