OE开发包示例介绍

算法工具链覆盖了模型训练(浮点训练和量化训练,可选)、转换、性能/精度验证、部署和推理等关键步骤。为了方便您快速体验和学习,OE开发包中提供了丰富、全面的示例。为了方便了解和使用这些示例,本文将对这些示例进行详细介绍。

首先,在获取OE开发包后,解压后的示例包目录结构如下所示:

samples # 示例包 ├── ai_toolchain | ├── horizon_model_convert_sample # 浮点模型转定点模型的转换示例 | ├── horizon_model_train_sample # 浮点模型训练框架示例 | └── model_zoo # 模型库,用于放置工具链示例模型编译的源模型和runtime模型 ├── model_zoo -> ai_toolchain/model_zoo └── ucp_tutorial # 统一计算平台UCP的示例包,提供UCP必要的依赖以及相关示例

samples目录中提供了模型训练示例、浮点模型转定点模型示例以及统一计算平台UCP的相关示例。如下为工具链各阶段使用的一般流程和示例的分布:

oe_package_sample

在上图工具链的使用流程中,这些示例对应着不同的使用阶段:

  • 模型转换示例包含了模型PTQ转换阶段的模型检查、校准数据处理、模型量化编译、单张图片推理和精度评估等过程。
  • 模型训练示例包含了浮点模型训练(可选)和QAT量化训练(可选)阶段的数据集打包脚本、模型config文件、训练脚本以及其它工具脚本,当应用模型精度调优手段后仍未达到预期精度时,可以尝试QAT量化训练策略。
  • UCP板端部署示例,包含视觉处理、模型推理、高性能算子库、自定义算子及目标检测全流程等示例,模型推理示例中提供了模型部署阶段的编译脚本、运行脚本和源代码。

模型转换示例(horizon_model_convert_sample)

工具链在samples/ai_toolchain/horizon_model_convert_sample文件夹下提供了模型转换示例,示例包目录结构如下所示:

├── 01_common # 校准数据、数据加载、预处理代码 ├── 03_classification # 分类模型转换示例 ├── 04_detection # 检测模型转换示例 ├── 07_segmentation # 分割模型转换示例

OE包内不仅提供了PTQ模型转换示例,另外还包含了模型检查、校准数据预处理、转换编译、推理等一键运行脚本。

horizon_model_convert_sample/03_classification目录下的03_resnet50为例,介绍相关脚本的作用:

├── 00_init.sh # 获取示例对应的校准数据集和原始模型脚本 ├── 01_check.sh # 模型检查脚本 ├── 02_preprocess.sh # 校准数据预处理脚本 ├── 03_build.sh # 模型量化编译脚本 ├── 04_inference.sh # 单张图片推理脚本 ├── 05_evaluate.sh # 精度评测脚本 ├── resnet50_config.yaml # 模型编译yaml配置文件 ├── postprocess.py # 模型后处理代码 ├── preprocess.py # 数据预处理代码 └── README.cn.md

PTQ模型转换示例的使用教程请参考PTQ模型转换示例章节的介绍。

模型训练示例(horizon_model_train_sample)

工具链在samples/ai_toolchain/horizon_model_train_sample目录下提供了模型训练示例,示例包结构如下所示:

└── plugin_basic # horizon_plugin_pytorch基础示例

统一计算平台示例(ucp_tutorial)

工具链在samples/ai_toolchain/ucp_tutorial目录下提供了统一计算平台UCP的示例源代码和运行脚本,示例包结构如下所示:

ucp_tutorial ├── deps_aarch64 # AArch64 Linux 公共依赖目录 ├── deps_qnx # AArch64 QNX 公共依赖目录 ├── deps_x86 # X86仿真 公共依赖目录 ├── dnn # DNN示例 | ├── ai_benchmark # AI Benchmark示例 | └── basic_samples # 模型推理基础示例 └── tools # 工具
  • deps_aarch64:AArch64公共依赖目录,包含UCP依赖库及头文件等内容。

  • deps_x86:X86仿真公共依赖目录。

  • dnn:DNN示例,包括:

    • ai_benchmark,提供了嵌入式应用开发常见模型的性能和精度评测示例,详细介绍及使用教程请参考 AI Benchmark使用说明 章节的介绍。

    • basic_samples,提供了模型推理相关由浅及深的使用示例,旨在帮助您熟悉和学习模型推理相关的接口以及各种进阶功能,详细介绍及使用教程请参考 基础示例包使用说明 章节的介绍。

  • tools:统一计算平台UCP提供的工具。