开发流程
- 准备环境,包括开发环境和运行环境。
- 开发场景分析。
根据开发场景分析涉及哪些功能(例如,数据传输、模型推理等)的开发,确定功能后,再明确涉及的命令或接口。
- 创建代码目录。
在开发应用前,您需要先创建目录,存放代码文件、编译脚本、测试图片数据、模型文件等。
以开发环境的安装用户,在开发环境的任意目录下创建存放应用代码的目录,如下仅是示例,可参考:
├App名称 ├── model //该目录下存放模型转换相关的配置文件 │ ├── xxx.cfg ├── data │ ├── xxx.jpg //测试数据 ├── inc //该目录下存放声明函数的头文件 │ ├── xxx.h ├── out //该目录下存放输出结果 ├── src //该目录下存放系统初始化的配置文件、编译脚本、函数的实现文件 │ ├── xxx.json //系统初始化的配置文件 │ ├── CMakeLists.txt //编译脚本 │ ├── xxx.cpp //实现文件
- 开发应用。
- AscendCL初始化,请参见AscendCL初始化与去初始化。
使用AscendCL接口开发应用时,必须先调用aclInit接口进行AscendCL初始化,否则可能会导致后续系统内部资源初始化出错,进而导致其它业务异常。
- 运行管理资源申请,请参见运行管理资源申请与释放。
- 数据传输,请参见数据传输。
- 若需要抠图、缩放等操作,还需要进行数据预处理,输出YUV420 SP格式的图片,作为模型推理的输入。请参见媒体数据处理。
数据预处理结束后,需及时释放相关资源。
- 执行模型推理。请参见模型推理基本场景。
模型推理结束后,需及时释放相关资源。
- 若需要处理模型推理的结果,还需要进行数据后处理,例如对于图片分类应用,通过数据后处理从推理结果中查找最大置信度的类别标识。
- 所有数据处理结束后,需及时释放运行管理资源,请参见运行管理资源申请与释放。
- 执行AscendCL去初始化,请参见AscendCL初始化与去初始化。
- AscendCL初始化,请参见AscendCL初始化与去初始化。
- 编译运行应用,包括模型转换、编译代码、运行应用,请参见编译及运行应用。