SDK样例工程使用指导

Detection and Classification(C++)使用指导

  1. 请参照开发前须知安装MindSDK软件包章节,配置环境变量,安装MindSDK软件包。
  2. 请参见创建应用工程创建Detection and Classification(C++)样例工程。
  3. 准备输入图片。

    请用户自行下载一张包含有一个动物的非渐进式图片(例如一只狗的图片),命名为test.jpg,上传到环境中工程文件的“C++”目录下。

  4. 参见表1,前往昇腾开发者社区下载YOLOv3和ResNet-50模型pb文件并上传到环境中。

    表1 模型获取

    模型名称

    版本

    获取链接

    YOLOv3

    1.6

    获取地址

    关键词搜索:YOLOv3

    应用级别:Released

    框架:TensorFlow

    进入模型页面后,确认模型版本后,单击“下载模型”下载或通过“历史版本”中找到对应版本,单击“下载模型”。

    ResNet-50

    1.7

    获取地址

    关键词搜索:ResNet-50

    应用级别:Released

    框架:TensorFlow

    进入模型页面后,确认模型版本后,单击“下载模型”下载或通过“历史版本”中找到对应版本,单击“下载模型”。

  5. 模型转换。

    在工程创建页面的顶部菜单栏中选择Ascend > Model Converter
    1. “Model Information”页面,页面参数配置指导如下:
      • 样例中YOLOv3、ResNet50模型适用参数及配置项请参考表2
      • YOLOv3模型参数配置页面结果请参考图2
      • ResNet50模型参数配置页面结果请参考图3
      表2 Model Information配置项说明及YOLOv3、ResNet50模型适用参数

      配置项

      配置项说明

      本样例YOLOv3模型适用参数

      本样例ResNet50模型适用参数

      Model File

      获取模型pb文件后,选择上传到环境中的模型pb文件路径。需要选择到pb文件一级。

      请根据实际情况设置模型pb文件路径。

      Model Name

      转换后的模型名称。

      请以“yolov3_tf_bs1_fp16”命名。

      请以“resnet50_aipp_tf”命名。

      Target SoC Version

      模型转换时指定芯片版本。

      请根据实际使用的芯片类型进行选择。

      OutputPath

      模型文件输出路径。

      请使用默认设置,不需要修改。

      Input Format

      输入数据格式。

      请使用默认设置,不需要修改。

      input/input_data

      模型转换入参,“Shape”模型输入的图形信息,“Type”为指定输入节点的数据类型。

      • “Shape”请使用“1,416,416,3”
      • “Type”请使用“FP32”
      • “Shape”请使用“1,224,224,3”
      • “Type”请使用“FP32”

      Output Nodes

      指定输出节点信息。

      1. 单击“Select”按钮。

        进入输出节点选择界面。

      2. 在搜索出的节点上,右击“Select”选中,如图1

      请选择“Conv_6/BiasAdd”“Conv_14/BiasAdd”“Conv_22/BiasAdd”三项。

      无需选择。

      图1 选择输出节点
      图2 YOLOv3模型参数配置
      图3 ResNet50模型参数配置
    2. 单击“Next”,进入“Data Pre-Processiong”页面,参照图4作为示例配置参数,详细请参见2
      图4 Data Pre-Processiong
    3. 单击“Next”,进入“Advanced Options Preview”页面,参照图5配置参数。

      “Additional Arguments”处请单击滑块启用该选项并填写模型aipp配置文件的绝对路径,Project_Path为SDK样例工程根目录,请用户自行替换。

      转换YOLOv3模型时请配置:

      --insert_op_conf=Project_Path/models/yolov3/aipp_yolov3_416_416.aippconfig

      转换ResNet50模型时请配置:

      --insert_op_conf=Project_Path/models/resnet50/aipp_resnet50_224_224.aippconfig
      图5 Advanced Options Preview
    4. 单击“Finish”,开始模型转换。

  6. 转换完成的模型om文件默认生成在$HOME/modelzoo”下。请分别移动放置于工程文件根目录/models/resnet50”工程文件根目录/models/yolov3”下。
  7. 编译应用工程。

    MindStudio工程界面,顶部菜单栏中单击Build > Edit Build Configuration...,进入编译配置页面。
    1. 配置编译参数。
      图6为编译配置示例。在“Build Type”下拉框处选择“Release”,修改“Name”,将编译配置组命名为“Release”,单击“OK”完成配置。(如无配置项,可单击新增。)
      图6 编译配置
    2. 单击顶部菜单栏中的“Build > Build CMake Project”编译工程。

      如果在编译过程中无错误提示,且编译进度到“100%”,则表示编译成功,您可以在如下目录中查看可执行文件main。

      ├── 工程名
      │   ├── C++
      │   │   ├──main         //可执行文件

  8. 运行应用工程。

    1. 配置运行参数,通过单击顶部菜单栏中的Run > Edit Configurations...进入运行配置,单击左上角的“+”,选择“CMake Application”工程运行配置项。
      图7为配置示例,由于样例工程中配置了相对路径,需要在Working directory配置相对的工作目录,此处配置为执行文件“main”所在的目录,配置完成后,单击“Apply”保存运行配置,单击“OK”,关闭运行配置窗口。

      如需远端运行应用工程,请确保运行环境已完成环境变量的配置,具体请参见开发前须知

      图7 SDK样例运行参数配置
    2. MindStudio工程界面,通过单击顶部菜单栏中的“Run > Run...”。在弹出框中选择已创建好的运行配置信息,运行应用。

      如下显示为SDK样例工程运行成功的返回示例。

      Results:{"MxpiObject":[{"MxpiClass":[{"classId":163,"className":"beagle","confidence":0.87109375}],"classVec":[{"classId":16,"className":"dog","confidence":0.99641436299999997,"headerVec":[]}],"x0":125.63256800000001,"x1":918.29089399999998,"y0":116.434044,"y1":597.21276899999998}]}

    如需对该样例进行调试操作,请在操作前修改以下内容:

    1. “C++/CMakeLists.txt”中找到以下命令。
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack  -s -pie")
    2. 将该命令替换为如下形式。
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack -pie")

Detection and Classification(Python)使用指导

  1. 请参照开发前须知安装MindSDK软件包章节,配置环境变量,安装MindSDK软件包。
  2. 请参见创建应用工程创建Detection and Classification(Python)样例工程。
  3. 准备输入图片。

    请用户手动下载一张包含动物的图片(例如一只狗的图片),命名为test.jpg,上传到环境中工程文件的“python”目录下。

  4. 参见表3,前往昇腾开发者社区下载YOLOv3和ResNet-50模型pb文件并上传到环境中。

    表3 模型获取

    模型名称

    版本

    获取链接

    YOLOv3

    1.6

    获取地址

    关键词搜索:YOLOv3

    应用级别:Released

    框架:TensorFlow

    进入模型页面后,确认模型版本后,单击“下载模型”下载或通过“历史版本”中找到对应版本,单击“下载模型”。

    ResNet-50

    1.7

    获取地址

    关键词搜索:ResNet-50

    应用级别:Released

    框架:TensorFlow

    进入模型页面后,确认模型版本后,单击“下载模型”下载或通过“历史版本”中找到对应版本,单击“下载模型”。

  5. 模型转换。

    在工程创建页面的顶部菜单栏中选择Ascend > Model Converter
    1. “Model Information”页面,页面参数配置指导如下:
      • 样例中YOLOv3、ResNet50模型适用参数及配置项请参考表4
      • YOLOv3模型参数配置页面结果请参考图9
      • ResNet50模型参数配置页面结果请参考图10
      表4 Model Information配置项说明及YOLOv3、ResNet50模型适用参数

      配置项

      配置项说明

      本样例YOLOv3模型适用参数

      本样例ResNet50模型适用参数

      Model File

      获取模型pb文件后,选择上传到环境中的模型pb文件路径。需要选择到pb文件一级。

      请根据实际情况设置模型pb文件路径。

      Model Name

      转换后的模型名称。

      请以“yolov3_tf_bs1_fp16”命名。

      请以“resnet50_aipp_tf”命名。

      Target SoC Version

      模型转换时指定芯片版本。

      请根据实际使用的芯片类型进行选择。

      OutputPath

      模型文件输出路径。

      请使用默认设置,不需要修改。

      Input Format

      输入数据格式。

      请使用默认设置,不需要修改。

      input/input_data

      模型转换入参,“Shape”模型输入的图形信息,“Type”为指定输入节点的数据类型。

      • “Shape”请使用“1,416,416,3”
      • “Type”请使用“FP32”
      • “Shape”请使用“1,224,224,3”
      • “Type”请使用“FP32”

      Output Nodes

      指定输出节点信息。

      1. 单击“Select”按钮。

        进入输出节点选择界面。

      2. 在搜索出的节点上,右击“Select”选中,如图8

      请选择“Conv_6/BiasAdd”“Conv_14/BiasAdd”“Conv_22/BiasAdd”三项。

      无需选择。

      图8 选择输出节点
      图9 YOLOv3模型参数配置
      图10 ResNet50模型参数配置
    2. 单击“Next”,进入“Data Pre-Processiong”页面,参照图11作为示例配置参数,详细请参见2
      图11 Data Pre-Processiong
    3. 单击“Next”,进入“Advanced Options Preview”页面,参照图12配置参数。

      “Additional Arguments”处请单击滑块启用该选项并填写模型aipp配置文件的绝对路径,Project_Path为SDK样例工程根目录,请用户自行替换。

      转换YOLOv3模型时请配置:

      --insert_op_conf=Project_Path/models/yolov3/aipp_yolov3_416_416.aippconfig

      转换ResNet50模型时请配置:

      --insert_op_conf=Project_Path/models/resnet50/aipp_resnet50_224_224.aippconfig
      图12 Advanced Options Preview
    4. 单击“Finish”,开始模型转换。

  6. 转换完成的模型om文件默认生成在$HOME/modelzoo”下。请分别移动放置于工程文件根目录/models/resnet50”工程文件根目录/models/yolov3”下。
  7. 运行应用工程。

    1. 在MindStudio顶部菜单栏单击Run > Edit Configurations...,进入运行配置。
    2. 单击左上角的“+”,新建“Python”运行配置项,配置运行参数(如需配置Python编译器,具体操作请参见Python SDK依赖设置)。

      图13为配置示例,配置完成后,单击“Apply”保存运行配置,单击“OK”,关闭运行配置窗口。

      图13 SDK样例(python)运行参数配置
    3. MindStudio工程界面,顶部菜单栏中单击“Run > Run...”。在弹出框中选择已创建好的运行配置信息,运行应用。

      如下显示为SDK样例工程运行成功的返回示例。

      {"MxpiObject":[{"MxpiClass":[{"classId":163,"className":"beagle","confidence":0.87109375}],"classVec":[{"classId":16,"className":"dog","confidence":0.99641436299999997,"headerVec":[]}],"x0":125.63256800000001,"x1":918.29089399999998,"y0":116.434044,"y1":597.21276899999998}]}