任务 4:量化 FCOS 模型并上板实操-
4.1 模型准备-
首先准备浮点模型,此处使用已有的 FCOS 模型-
4.2 模型检查-
浮点模型准备好之后,请先使用 hb_mapper checker 工具检查工具链是否支持。-
任务 4:量化 FCOS 模型并上板实操-
4.1 模型准备-
首先准备浮点模型,此处使用已有的 FCOS 模型-
4.2 模型检查-
浮点模型准备好之后,请先使用 hb_mapper checker 工具检查工具链是否支持。-
任务 4:量化 FCOS 模型并上板实操-
4.1 模型准备-
首先准备浮点模型,此处使用已有的 FCOS 模型-
4.2 模型检查-
浮点模型准备好之后,请先使用 hb_mapper checker 工具检查工具链是否支持。-
任务 4:量化 FCOS 模型并上板实操-
4.1 模型准备-
首先准备浮点模型,此处使用已有的 FCOS 模型-
4.2 模型检查-
浮点模型准备好之后,请先使用 hb_mapper checker 工具检查工具链是否支持。-

4.3模型转换
模型检查通过后,请使用hb_mapper makertbin工具链进行量化转换-


并将转换后的bin文件传输至板端-

4.4模型运行
利用mipi传感器进行实时图像处理并输出到HDMI接口的显示器中

任务5:小组合作开放实验
参考地平线X3派用户手册4.1节( AI推理示例),基于python语言,利用API通过简单的函数调用,来完成模型加载、数据及Tensor的准备、模型推理和获取模型输出等操作。请每个小组利用已有的算法模型,完成一个特定的目标检测任务。
本任务我们先将系统提供的图像分割模型(样例位于/open_explorer/ddk/samples/ai_toolchain/horizon_model_convert_sample/07_segmentation/01_unet_mobilenet/mapper/,原模型位于onnx_model:“../../../01_common/model_zoo/mapper/segmentation/unet_mobilenet/tf_unet_trained.onnx”)转换为地平线混合异构模型。
将原始浮点模型转换为地平线混合异构模型需要以下五个步骤。
Step.1浮点模型准备
检查01_common/model_zoo/mapper/segmentation/unet_mobilenet/tf_unet_trained.onnx模型存在。
Step.2模型检查
浮点模型准备好之后,请先使用 hb_mapper checker 工具检查工具链是否支持。
代码
# 进入示例目录
cd /open_explorer/ddk/samples/ai_toolchain/horizon_model_convert_sample/07_segmentation/01_unet_mobilenet/mapper/
# 模型检查,确认模型结构及算子是否支持,并提供每个算子执行硬件的分配情况
bash 01_check.sh
输出:

Step.3模型转换
# 准备校准数据(数据预处理)
bash 02_preprocess.sh
输出文件:

# 模型转换(转换时所需的配置文件请参考 01_mobilenet\mapper 目录下的
mobilenet_config.yaml),运行完生成 hb_mapper_makertbin.log 文件
bash 03_build.sh # 调用 hb_mapper makertbin 命令
输出模型bin文件:

Step.4性能快速验证
##### 静态性能评估 #####
# 1.可从模型转换日志观察模型分段及算子执行硬件分配情况
# 2.使用 hb_perf 工具评估模型 bpu 部分性能表现,结果文件.html 中包含 latency、ddr 占用等信息,运行完生成 hb_perf.log 文件
hb_perf model_output/mobilenetv1_224x224_nv12.bin 输出html
##### 动态性能评估 #####
# 首先请确保您已参考 7.2.3 节完成开发板环境部署
# 开发板推荐使用 hrt_model_exec perf 工具快速验证模型多帧串行/多线程并行性能
scp model_output/mobilenetv1_224x224_nv12.bin root@192.168.1.10:/userdata
# 登录开发板环境
# 进入模型拷贝路径,hrt_model_exec 工具被安装在/userdata/.horizon 路径下
cd /userdata

.horizon/hrt_model_exec perf --model_filemobilenetv1_224x224_nv12.bin
Step.5精度验证
开发机 Python 环境验证
##### 开发机 Python 环境评测 #####
# 在开发机环境可以直接验证 xxx_quantized_model.onnx 模型精度,与.bin 模型数值一致
# 测试量化模型单张图片推理结果,生成 inference.log 文件和demo.jpg
bash 04_inference.sh
# 测试浮点模型单张图片推理结果(可选,与量化模型进行对比)
bash 04_inference.sh origin
两demo对比
量化后:

量化前:

# 测试量化模型验证集精度,数据集已正确挂载在 Docker 容器中
bash 05_evaluate.sh

# 可选,测试原始浮点模型在验证集上的预测精度
bash 05_evaluate.sh origin

可见,预测精度几乎没有改变。