昇腾社区首页
中文
注册

执行AscendCL应用工程推理

创建应用工程

  1. 单击菜单栏File > New > Project...,弹出“New Project”窗口,选择Ascend App > Samples > ACL ResNet-50(C++)模板样例工程,单击“Change”配置CANN版本。如图1所示。
    图1 创建工程
    • CANN Version:CANN软件包版本,如未识别或想要更换使用的版本,可单击“Change”,在弹出界面中选择Ascend-cann-toolkit开发套件包的安装路径(注意需选择到版本号或者latest一级)。
    • Samples:样例工程,选择“ACL ResNet-50(C++)”
  2. 单击“Next”进入配置工程相关参数界面,配置工程名称和目录。如图2所示。
    图2 配置工程相关参数
    • Project name:工程名称,可自定义。
    • Project location:工程目录,默认在“$HOME/MindstudioProjects”下创建。
  3. 单击“Finish”,完成工程创建。

    生成应用工程目录如图3所示。

    图3 应用工程目录

获取模型和数据文件

  1. 获取第三方模型文件。

    您可以从以下链接中获取ResNet-50网络的模型文件(*.prototxt)、权重文件(*.caffemodel),并以MindStudio安装用户将获取的文件上传至MindStudio安装服务器工程目录/model”目录下。

    • ResNet-50网络的模型文件(*.prototxt):单击Link下载该文件。
    • ResNet-50网络的权重文件(*.caffemodel):单击Link下载该文件。
  2. 转换模型。

    需要先按照如下步骤将第三方模型转换为适配昇腾AI处理器的离线模型(*.om文件),之后在应用工程内添加*.om模型文件。

    1. 单击菜单栏Ascend > Model Converter打开模型转换页面,在“Model Information”页签中配置模型文件(Model File)和权重文件(Weight File),界面参考如图4所示。
      图4 配置模型信息
    2. 单击“Next”,进入“Data Pre-Processing”配置数据预处理(FP16无需进行数据预处理),界面参考如图5所示。
      图5 配置数据预处理功能
    3. 单击“Next”,进入“Advanced Options Preview”高级选项配置,界面参考如图6所示。
      图6 高级选项配置
    4. 单击“Finish”,开始进行模型转换。

      在MindStudio界面下方,“Output”窗口会显示模型转换过程中的日志信息,如果提示“Model converted successfully”,则表示模型转换成功。“Output”窗口会显示模型转换所用的命令、所设置的环境变量、模型转换的结果、模型输出路径以及模型转换日志路径等信息。

      模型转换完毕,在服务器后台路径(Output Path)下会生成用于运行环境运行的*.om模型文件。

  3. 准备推理数据。

    请通过以下链接获取该样例的输入图片,根据实际使用场景进行操作。

    数据图片1数据图片2
    1. 以运行用户将获取的文件上传至开发环境的工程目录/data”目录下。如果目录不存在,需自行创建。
    2. 以运行用户登录开发环境。
    3. 切换到工程目录/data”目录下,执行“transferPic.py”脚本,将*.jpg转换为*.bin,同时将图片从1024*683的分辨率缩放为224*224。在工程目录/data”目录下生成2个*.bin文件。
      python3 ../script/transferPic.py

      如果执行脚本出现以下报错,则表示缺少Pillow库,请使用pip3 install Pillow --user命令安装Pillow库。

      ModuleNotFoundError: No module named 'PIL'

开发应用

创建应用工程后,工程的src目录下自带应用的模板代码,包含系统初始化、模型执行、模型卸载、资源销毁等代码。若想直接使用src目录下的*.cpp模板代码,则只需按照模型文件和图片的名称、所在的路径修改sample_process.cpp中的如下代码。此处只能设置相对路径,不能设置绝对路径。
  • 请根据实际情况,修改图片文件的名称以及路径。
    //此处的..表示相对路径,相对可执行文件所在的目录
    //例如,编译出来的可执行文件存放在out目录下,此处的..就表示out目录的上一级目录
    string testFile[] = {
            "../data/dog1_1024_683.bin",
            "../data/dog2_1024_683.bin"
        };
  • 请根据实际情况,将*.om模型文件拷贝至工程目录/model”下(若有重名文件可重命名以防覆盖)。
    //此处的..表示相对路径,相对可执行文件所在的目录
    //例如,编译出来的可执行文件存放在out目录下,此处的..就表示out目录的上一级目录
    const char* omModelPath = "../model/resnet50.om";

在模板代码中,“接口名称以acl开头”的接口是系统对用户开放的接口。关于接口的详细说明,请参见应用软件开发指南(C&C++)中“AscendCL API参考”章节。

编译并运行应用工程

  1. 编译配置。
    MindStudio工程界面菜单栏,选择Build > Edit Build Configuration...,进入编译配置页面。
    1. 配置编译参数,单击添加新增配置。

      列表中带有“(default)”标记的配置项为当前默认配置项,如需进行变更,可选中所需配置项,并单击进行切换。

      图7 编译配置
    2. 单击“OK”保存编译工程。
  2. MindStudio工程界面,依次选择Build > Build CMake Project,使用默认配置进行增量编译。

    如果在编译过程中无错误提示,且提示“Build finished”,则表示编译成功。

  3. MindStudio工程界面菜单栏,选择Run > Edit Configurations...,进入运行配置页面。
  4. 单击“ > CMake Application”新增并配置应用工程运行参数,图8为配置示例。
    图8 运行参数配置
    • Executable:选择编译用可执行文件的路径,选择到文件一级。
    • Working directory:工作目录。(如工程中配置了相对路径,则需在该选项中选择相对的工作目录。本工程须指定工作目录。)
  5. 配置完成后,单击“Apply”保存运行配置,单击“OK”,关闭运行配置窗口。
  6. MindStudio工程界面,依次选择“Run > Run...”

    在弹出框中选择已创建好的运行配置信息,运行应用。

    • 如果在运行过程中无错误提示,且提示“Running *** finished”,则表示运行结束。
    • 如果运行过程中有错误提示,且需要查看运行环境的详细日志时,请参见日志参考
      • 可参见“日志文件介绍”章节查看日志,日志文件路径默认为“$HOME/ascend/log ”
      • 可参见“设置日志级别”章节查看或修改日志级别(默认为ERROR)。