aitoolchain进行模型验证、转换、评估

浮点转换工具链使用

模型准备与转换

下面以OE包中的-
ddk/samples/ai_toolchain/horizon_model_convert_sample/03_classification/05_efficientnet_lite0_onnx/-
为例进行浮点转换工具链测试。

最新的OE包为了减少大小,并没有包含原始模型,而是放在服务器上并提供-
快捷的sh命令方便使用时下载,因此我们先执行00_init.sh下载模型。

-
进入ddk/samples/ai_toolchain/model_zoo/mapper/classification,-
可以看到出现了我们刚下载好的模型。-
-
使用hb_mapper checker工具检查,直接运行01_check.sh即可。

可以看出,模型结点只有最后的softmax和reshape output使用CPU,其余结点均可以使用地平线的BPU运算单元,总体计算速度是较快的。

接下来准备校准数据并进行模型转换,直接运行02_preprocess.sh和03_build.sh即可。-

-

性能评估

将模型文件通过MobaXterm的ssh session直接传入开发板。

执行 hrt_model_exec perf --model_file efficientnet_lite0_224x224_nv12.bin --core_id 1 --thread_num 1 --frame_count 1000-
#评测latency:单核单线程跑1000帧看平均latency

执行 hrt_model_exec perf --model_file efficientnet_lite0_224x224_nv12.bin --core_id 0 --thread_num 8 --frame_count 1000-
#评测FPS:双核多线程跑1000帧看平均FPS

-
执行以下命令进行精度检测:-
sh 04_inference.sh origin # 推理原始浮点模型-
sh 04_inference.sh quanti # 推理定点模型-
sh 05_evaluate.sh origin test # 推理原始浮点模型-
sh 05_evaluate.sh quanti test # 推理定点模型

采用地平线提供的一个示例数据集,包含20张图片。-

-
可以看出两个模型精度是几乎相同的。

在板端下载nv12.bin推理数据,在板端进行精度验证。