基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换

1. 模型下载

 首先下载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部署PaddlePadle-YOLOE模型—2.模型下载与转换_第1张图片

 模型导出后可以在下述文件夹中找到该模型文件:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第2张图片

 利用模型查看器可以看出该模型,包含两个输入、两个输出。

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第3张图片

2. 模型裁剪

 直接导出的模型在OpenVINO中无法直接使用,需要对模型进行裁剪,将模型后处理过程去掉,使用下面大神的提供的工具可以直接实现对Paddle模型直接裁剪:jiangjiajun/PaddleUtils: Some tools to operate PaddlePaddle model 。

 首先克隆改代码仓到本地:

git clone https://github.com/jiangjiajun/PaddleUtils.git

 然后打开到该代码文件中下面的一个文件夹下,并将上一步导出的模型复制到该文加夹中
基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第4张图片

 在命令提示符中依次输入以下命令:

// 打开指定文件
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

 此处主要关注输出节点名这一项输入,由于原模型输入包含后处理这一部分,在模型部署时会出错,所以模型裁剪的主要目的就是将模型后处理这一步去掉,因此将模型输出设置为后处理开始前的模型节点,此处主要存在两个节点:

 第一个节点包含模型预测的置信度输出参数,其位置如下图所示:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第5张图片

 第二个节点是模型预测狂输出节点,其位置如下图所示:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第6张图片

 输入上述指令后,会获得以下结果:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第7张图片

 在export_model文件夹下,可以获得裁剪后的模型文件:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第8张图片

 使用模型查看器,可以看出导出的模型,输入输出发生了改变。模型的输入仅包含image一项,原有的scale_factor输入由于在模型中使用不到,被一并削减掉。模型的输出变成我们指定的节点输出。

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第9张图片

3. 模型转换ONNX

 由于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]}”,其他设置按照常规设置即可,模型输出如下图所示:

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第10张图片

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第11张图片

4. 转为IR格式

  IR格式模型为OpenVINOTM推理工具原生支持模型,且对模型进行了进一步优化,使得推理速度大大提升,此处我们使用OpenVINOTM 自带的模型优化工具进行转换。

 首先利用命令提示窗口打开OpenVINOTM工具路径,然后输入转换命令,在该文件夹中会生成三个转换后的文件,其输出如图所示,出现三个SUCCESS表示转换成功。

cd .\openvino\tools
mo --input_model ppyoloe_plus_crn_l_80e_coco.onnx

基于OpenVINO部署PaddlePadle-YOLOE模型—2.模型下载与转换_第12张图片

你可能感兴趣的:(openvino,C++,openvino,paddlepaddle)