首先下载PP-YOLOE官方训练模型,该模型由PaddleDetection提供,基于COCO数据集训练,可以识别80种常见物体。此处采用的是PaddleDetection release/2.5版本,PP-YOLOE+模型,具体可以参考官方文件PP-YOLOE。
使用命令,导出我们要使用的模型,在命令行种依次输入以下指令,导出我们所使用的模型文件:
// 打开PaddleDetection代码文件
cd ./PaddleDetection
// 导出指定模型
python tools/export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_l_80e_coco.yml -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_plus_crn_l_80e_coco.pdparams
此处导出的是PP-YOLOE+模型,l_80e格式,导出命令输出如下图所示。
模型导出后可以在下述文件夹中找到该模型文件:
利用模型查看器可以看出该模型,包含两个输入、两个输出。
直接导出的模型在OpenVINO中无法直接使用,需要对模型进行裁剪,将模型后处理过程去掉,使用下面大神的提供的工具可以直接实现对Paddle模型直接裁剪:jiangjiajun/PaddleUtils: Some tools to operate PaddlePaddle model 。
首先克隆改代码仓到本地:
git clone https://github.com/jiangjiajun/PaddleUtils.git
然后打开到该代码文件中下面的一个文件夹下,并将上一步导出的模型复制到该文加夹中
在命令提示符中依次输入以下命令:
// 打开指定文件
cd E:\Paddle\PaddleUtils\paddle
// 模型裁剪
python prune_paddle_model.py --model_dir ppyoloe_plus_crn_l_80e_coco --model_filename model.pdmodel --params_filename model.pdiparams --output_names tmp_16 concat_14.tmp_0 --save_dir export_model
指令说明:
标志位 | 说明 | 输入 |
---|---|---|
–model_dir | 模型文件路径 | ppyoloe_plus_crn_l_80e_coco |
–model_filename | 静态图模型文件 | model.pdmodel |
–params_filename | 模型配置文件信息 | model.pdiparams |
–output_names | 输出节点名 | tmp_16 concat_14.tmp_0 |
–save_dir | 模型保存路径 | export_model |
此处主要关注输出节点名这一项输入,由于原模型输入包含后处理这一部分,在模型部署时会出错,所以模型裁剪的主要目的就是将模型后处理这一步去掉,因此将模型输出设置为后处理开始前的模型节点,此处主要存在两个节点:
第一个节点包含模型预测的置信度输出参数,其位置如下图所示:
第二个节点是模型预测狂输出节点,其位置如下图所示:
输入上述指令后,会获得以下结果:
在export_model
文件夹下,可以获得裁剪后的模型文件:
使用模型查看器,可以看出导出的模型,输入输出发生了改变。模型的输入仅包含image一项,原有的scale_factor输入由于在模型中使用不到,被一并削减掉。模型的输出变成我们指定的节点输出。
由于Paddle模型未指定bath_size大小,在使用时会出现问题,因此通过将该模型转为ONNX并指定bath_size大小,此处使用paddle2onnx
工具便可以实现。
在命令提示符中依次输入以下指令,将上一步导出的模型转为ONNX格式:
cd E:\Paddle\PaddleUtils\paddle
// 模型转换
paddle2onnx --model_dir export_model --model_filename model.pdmodel --params_filename model.pdiparams --input_shape_dict "{'image':[1,3,640,640]}" --opset_version 11 --save_file ppyoloe_plus_crn_l_80e_coco.onnx
此处需要指定模型的输入形状,–input_shape_dict “{‘image’:[1,3,640,640]}”,其他设置按照常规设置即可,模型输出如下图所示:
IR格式模型为OpenVINOTM推理工具原生支持模型,且对模型进行了进一步优化,使得推理速度大大提升,此处我们使用OpenVINOTM 自带的模型优化工具进行转换。
首先利用命令提示窗口打开OpenVINOTM工具路径,然后输入转换命令,在该文件夹中会生成三个转换后的文件,其输出如图所示,出现三个SUCCESS表示转换成功。
cd .\openvino\tools
mo --input_model ppyoloe_plus_crn_l_80e_coco.onnx