开发流程

图1 开发流程(不包含媒体数据处理)
图2 开发流程(包含媒体数据处理)
  1. 准备环境,包括开发环境运行环境
  2. 开发场景分析。

    根据开发场景分析涉及哪些功能(例如,数据传输、模型推理等)的开发,确定功能后,再明确涉及的命令或接口。

  3. 创建代码目录。

    在开发应用前,您需要先创建目录,存放代码文件、编译脚本、测试图片数据、模型文件等。

    开发环境的安装用户,在开发环境的任意目录下创建存放应用代码的目录,如下仅是示例,可参考:

    ├App名称
    ├── model     //该目录下存放模型转换相关的配置文件
    │   ├── xxx.cfg               
    
    ├── data
    │   ├── xxx.jpg            //测试数据
    
    ├── inc         //该目录下存放声明函数的头文件
    │   ├── xxx.h               
    
    ├── out      //该目录下存放输出结果     
    
    ├── src     //该目录下存放系统初始化的配置文件、编译脚本、函数的实现文件
    │   ├── xxx.json         //系统初始化的配置文件
    │   ├── CMakeLists.txt         //编译脚本
    │   ├── xxx.cpp          //实现文件   
  4. 开发应用。
    1. AscendCL初始化,请参见AscendCL初始化与去初始化

      使用AscendCL接口开发应用时,必须先调用aclInit接口进行AscendCL初始化,否则可能会导致后续系统内部资源初始化出错,进而导致其它业务异常。

    2. 运行管理资源申请,请参见运行管理资源申请与释放
    3. 数据传输,请参见数据传输
    4. 若需要抠图、缩放等操作,还需要进行媒体数据处理,输出YUV420 SP格式的图片,作为模型推理的输入。请参见媒体数据处理V1

      媒体数据处理结束后,需及时释放相关资源。

    5. 执行模型推理。请参见模型推理基本场景

      模型推理结束后,需及时释放相关资源。

    6. 若需要处理模型推理的结果,还需要进行数据后处理,例如对于图片分类应用,通过数据后处理从推理结果中查找最大置信度的类别标识。
    7. 所有数据处理结束后,需及时释放运行管理资源,请参见运行管理资源申请与释放
    8. 执行AscendCL去初始化,请参见AscendCL初始化与去初始化
  5. 编译运行应用,包括模型转换、编译代码、运行应用,请参见编译及运行应用