OE开发包示例介绍
算法工具链覆盖了模型训练(浮点训练和量化训练,可选)、转换、性能/精度验证、部署和推理等关键步骤。为了方便您快速体验和学习,OE开发包中提供了丰富、全面的示例。为了方便了解和使用这些示例,本文将对这些示例进行详细介绍。
首先,在获取OE开发包后,解压后的示例包目录结构如下所示:
samples目录中提供了模型训练示例、浮点模型转定点模型示例以及统一计算平台UCP的相关示例。如下为工具链各阶段使用的一般流程和示例的分布:
在上图工具链的使用流程中,这些示例对应着不同的使用阶段:
- 模型转换示例包含了模型PTQ转换阶段的模型检查、校准数据处理、模型量化编译、单张图片推理和精度评估等过程。
- 模型训练示例包含了浮点模型训练(可选)和QAT量化训练(可选)阶段的数据集打包脚本、模型config文件、训练脚本以及其它工具脚本,当应用模型精度调优手段后仍未达到预期精度时,可以尝试QAT量化训练策略。
- UCP板端部署示例,包含视觉处理、模型推理、高性能算子库、自定义算子及目标检测全流程等示例,模型推理示例中提供了模型部署阶段的编译脚本、运行脚本和源代码。
模型转换示例(horizon_model_convert_sample)
工具链在samples/ai_toolchain/horizon_model_convert_sample文件夹下提供了模型转换示例,示例包目录结构如下所示:
OE包内不仅提供了PTQ模型转换示例,另外还包含了模型检查、校准数据预处理、转换编译、推理等一键运行脚本。
以horizon_model_convert_sample/03_classification目录下的03_resnet50为例,介绍相关脚本的作用:
PTQ模型转换示例的使用教程请参考PTQ模型转换示例章节的介绍。
模型训练示例(horizon_model_train_sample)
工具链在samples/ai_toolchain/horizon_model_train_sample目录下提供了模型训练示例,示例包结构如下所示:
通常只需要使用以下命令就可以实现模型的训练:
-
${CONFIGS} 需要配置为configs文件夹中模型训练对应的 config 文件路径,它定义了模型结构、数据集加载、以及整套的训练流程,示例中提供了包括分类、检测、分割和光流估计任务等模型。
-
tools文件夹提供了包含数据集处理、模型训练、转换编译、计算量统计等执行脚本,相关脚本的功能如下:
-
calops.py:网络模型计算量统计工具。
-
compile_perf_hbir.py:编译和perf工具。
-
create_data.py:数据集预处理工具,用于预处理Kitti3D雷达数据集。
-
dataset_converters:文件夹下提供了不同数据集格式转换脚本。
-
datasets:文件夹下提供了数据集打包和数据可视化脚本。
-
export_hbir.py:HBIR模型导出工具。
-
export_onnx.py:ONNX模型导出工具,导出的ONNX模型只可用于可视化,不支持推理。
-
gen_camera_param_nusc.py:从nuscenes中获取相机内外参的脚本。
-
homography_generator.py:计算ego到图像的转换矩阵的脚本。
-
reference_points_generator.py:从单应性矩阵计算模型输入参考点的脚本。
-
gen_reference_points_nusc.py:从nuscenes中获取模型输入参考点的脚本。
-
infer_hbir.py:单图预测工具。
-
model_checker.py:模型检查工具。
-
predict.py:预测工具。
-
quant_analysis.py:精度debug工具。
-
train.py:模型训练脚本,支持浮点模型训练、量化训练功能。
-
validation_hbir.py:精度验证工具,提供上板完全对齐的结果。
-
模型训练示例的使用教程请参考Horizon Torch Samples章节的介绍。
统一计算平台示例(ucp_tutorial)
工具链在samples/ai_toolchain/ucp_tutorial目录下提供了统一计算平台UCP的示例源代码和运行脚本,示例包结构如下所示:
-
all-round:目标检测全流程示例,详细介绍及使用教程请参考 目标检测全流程示例 章节的介绍。
-
custom_operator:自定义算子示例,包含DSP示例和基于OpenCL接口调用板端GPU的开发示例,详细介绍及使用教程请参考 UCP-自定义算子 章节的介绍。
-
deps_aarch64:AArch64公共依赖目录,包含UCP依赖库及头文件等内容。
-
deps_x86:X86仿真公共依赖目录。
-
dnn:DNN示例,包括:
-
ai_benchmark,提供了嵌入式应用开发常见模型的性能和精度评测示例,详细介绍及使用教程请参考 AI Benchmark使用说明 章节的介绍。
-
basic_samples,提供了模型推理相关由浅及深的使用示例,旨在帮助您熟悉和学习模型推理相关的接口以及各种进阶功能,详细介绍及使用教程请参考 基础示例包使用说明 章节的介绍。
-
-
hpl:HPL示例,包括示例源码及最小可执行环境,详细介绍及使用教程请参考 高性能算子库-示例 章节的介绍。
-
vp:VP示例,包括示例源码及最小可执行环境,详细介绍及使用教程请参考 视觉处理开发-示例 章节的介绍。
-
tools:统一计算平台UCP提供的工具。
