Skip to content

Latest commit

 

History

History
 
 

python

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Python端预测部署

在PaddlePaddle中预测引擎和训练引擎底层有着不同的优化方法, 预测引擎使用了AnalysisPredictor,专门针对推理进行了优化,是基于C++预测库的Python接口,该引擎可以对模型进行多项图优化,减少不必要的内存拷贝。如果用户在部署已训练模型的过程中对性能有较高的要求,我们提供了独立于PaddleDetection的预测脚本,方便用户直接集成部署。

Python端预测部署主要包含两个步骤:

  • 导出预测模型
  • 基于Python进行预测

1. 导出预测模型

PaddleDetection在训练过程包括网络的前向和优化器相关参数,而在部署过程中,我们只需要前向参数,具体参考:导出模型,例如

# 导出YOLOv3检测模型
python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml --output_dir=./inference_model \
 -o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams

导出后目录下,包括infer_cfg.yml, model.pdiparams, model.pdiparams.info, model.pdmodel四个文件。

2. 基于Python的预测

2.1 通用检测

在终端输入以下命令进行预测:

python deploy/python/infer.py --model_dir=./output_inference/yolov3_darknet53_270e_coco --image_file=./demo/000000014439.jpg --device=GPU

参数说明

参数说明如下:

参数 是否必须 含义
--model_dir Yes 上述导出的模型路径
--image_file Option 需要预测的图片
--image_dir Option 要预测的图片文件夹路径
--video_file Option 需要预测的视频
--camera_id Option 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按q退出输出预测结果到:output/output.mp4
--device Option 运行时的设备,可选择CPU/GPU/XPU,默认为CPU
--run_mode Option 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)
--batch_size Option 预测时的batch size,在指定image_dir时有效,默认为1
--threshold Option 预测得分的阈值,默认为0.5
--output_dir Option 可视化结果保存的根目录,默认为output/
--run_benchmark Option 是否运行benchmark,同时需指定--image_file--image_dir,默认为False
--enable_mkldnn Option CPU预测中是否开启MKLDNN加速,默认为False
--cpu_threads Option 设置cpu线程数,默认为1
--trt_calib_mode Option TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False
--save_images Option 是否保存可视化结果
--save_results Option 是否在文件夹下将图片的预测结果以JSON的形式保存

说明:

  • 参数优先级顺序:camera_id > video_file > image_dir > image_file
  • run_mode:paddle代表使用AnalysisPredictor,精度float32来推理,其他参数指用AnalysisPredictor,TensorRT不同精度来推理。
  • 如果安装的PaddlePaddle不支持基于TensorRT进行预测,需要自行编译,详细可参考预测库编译教程
  • --run_benchmark如果设置为True,则需要安装依赖pip install pynvml psutil GPUtil
  • 如果需要使用导出模型在coco数据集上进行评估,请在推理时添加--save_results--use_coco_category参数用以保存coco评估所需要的json文件