Python部署

PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后,可参照如下代码示例,进行预测。

导出预测模型

可参考模型导出将模型导出为inference格式。

预测部署

预测接口说明可参考paddlex.deploy

点击下载测试图片 xiaoduxiong_test_image.tar.gz

  • 单张图片预测
import paddlex as pdx
predictor = pdx.deploy.Predictor('./inference_model')
result = predictor.predict(image='xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg')
  • 批量图片预测
import paddlex as pdx
predictor = pdx.deploy.Predictor('./inference_model')
image_list = ['xiaoduxiong_test_image/JPEGImages/WeChatIMG110.jpeg',
    'xiaoduxiong_test_image/JPEGImages/WeChatIMG111.jpeg']
result = predictor.batch_predict(image_list=image_list)
  • 视频流预测
import cv2
import paddlex as pdx
predictor = pdx.deploy.Predictor('./inference_model')
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        result = predictor.predict(frame)
        vis_img = pdx.det.visualize(frame, result, threshold=0.6, save_dir=None)
        cv2.imshow('Xiaoduxiong', vis_img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
关于预测速度的说明:加载模型后前几张图片的预测速度会较慢,这是因为运行启动时涉及到内存显存初始化等步骤,通常在预测20-30张图片后模型的预测速度达到稳定。

预测性能对比

测试环境

  • CUDA 9.0
  • CUDNN 7.5
  • PaddlePaddle 1.71
  • GPU: Tesla P40
  • AnalysisPredictor 指采用Python的高性能预测方式
  • Executor 指采用PaddlePaddle普通的Python预测方式
  • Batch Size均为1,耗时单位为ms/image,只计算模型运行时间,不包括数据的预处理和后处理

性能对比

模型 AnalysisPredictor耗时 Executor耗时 输入图像大小
resnet50 4.84 7.57 224*224
mobilenet_v2 3.27 5.76 224*224
unet 22.51 34.60 513*513
deeplab_mobile 63.44 358.31 1025*2049
yolo_mobilenetv2 15.20 19.54 608*608
faster_rcnn_r50_fpn_1x 50.05 69.58 800*1088
faster_rcnn_r50_1x 326.11 347.22 800*1067
mask_rcnn_r50_fpn_1x 67.49 91.02 800*1088
mask_rcnn_r50_1x 326.11 350.94 800*1067