Răsfoiți Sursa

add python deployment docs

FlyingQianMM 4 ani în urmă
părinte
comite
0baa55fd29
4 a modificat fișierele cu 103 adăugiri și 8 ștergeri
  1. 3 2
      README.md
  2. 51 0
      docs/apis/deploy.md
  3. 43 0
      docs/python_deploy.md
  4. 6 6
      paddlex/deploy.py

+ 3 - 2
README.md

@@ -83,8 +83,9 @@
 ### 5. 模型部署
 
 - [部署模型导出](./docs/apis/export_model.md)
-- [PaddleX Manufacture SDK低代码高效部署](./deploy/cpp/docs/manufacture_sdk)
-- [PaddleX/PaddleClas/PaddleDetection/PaddleSeg端到端高性能统一部署](./deploy/cpp)
+- [PaddleX python高性能部署](./docs/python_deploy.md)
+- [PaddleX Manufacture SDK低代码高效C++部署](./deploy/cpp/docs/manufacture_sdk)
+- [PaddleX/PaddleClas/PaddleDetection/PaddleSeg端到端高性能统一C++部署](./deploy/cpp)
 
 ### 6. 产业级应用示例
 

+ 51 - 0
docs/apis/deploy.md

@@ -0,0 +1,51 @@
+# 预测部署-paddlex.deploy
+
+使用Paddle Inference进行高性能的Python预测部署。更多关于Paddle Inference信息请参考[Paddle Inference文档](https://paddle-inference.readthedocs.io/en/latest/#)
+
+## Predictor类
+
+图像分类、目标检测、实例分割、语义分割统一的预测器,实现高性能预测。
+
+```
+paddlex.deploy.Predictor(model_dir, use_gpu=False, gpu_id=0, cpu_thread_num=1, use_mkl=True, mkl_thread_num=4, use_trt=False, use_glog=False, memory_optimize=True, max_trt_batch_size=1, trt_precision_mode='float32')
+```
+
+**参数**
+
+> * **model_dir** (str): 模型路径(必须是导出的部署或量化模型)
+> * **use_gpu** (bool): 是否使用gpu,默认False
+> * **gpu_id** (int): 使用gpu的id,默认0
+> * **cpu_thread_num** (int):使用cpu进行预测时的线程数,默认为1
+> * **use_mkl** (bool): 是否使用mkldnn计算库,CPU情况下使用,默认False
+> * **mkl_thread_num** (int): mkldnn计算线程数,默认为4
+> * **use_trt** (bool): 是否使用TensorRT,默认False
+> * **use_glog** (bool): 是否启用glog日志, 默认False
+> * **memory_optimize** (bool): 是否启动内存优化,默认True
+> * **max_trt_batch_size** (int): 在使用TensorRT时配置的最大batch size,默认1
+> * **trt_precision_mode** (str):在使用TensorRT时采用的精度,可选值['float32', 'float16']。默认'float32'
+
+
+### predict 接口
+
+图片预测
+
+```
+predict(img_file, topk=1, transforms=None, warmup_iters=0, repeats=1)
+```
+
+> **参数**
+>
+> > * **img_file** (List[np.ndarray or str], str or np.ndarray):
+                    图像路径;或者是解码后的排列格式为(H, W, C)且类型为float32且为BGR格式的数组。
+> > * **topk** (int): 分类预测时使用,表示预测前topk的结果。默认值为1。
+> > * **transforms** (paddlex.transforms): 数据预处理操作。默认值为None, 即使用`model.yml`中保存的数据预处理操作。
+> > * **warmup_iters** (int): 预热轮数,用于评估模型推理以及前后处理速度。若大于1,会预先重复预测warmup_iters,而后才开始正式的预测及其速度评估。默认为0。
+> > * **repeats** (int): 重复次数,用于评估模型推理以及前后处理速度。若大于1,会预测repeats次取时间平均值。默认值为1。
+
+
+> **返回值**
+>
+> > * **图像分类**模型的返回值与[图像分类模型API中predict接口](./apis/models/classification.md#predict)的返回值一致
+> > * **目标检测** 模型的返回值与[目标检测模型API中predict接口](./apis/models/detection.md#predict)的返回值一致
+> > * **实例分割** 模型的返回值与[实例分割模型API中predict接口](./apis/models/instance_segmentation.md#predict)的返回值一致
+> > * **语义分割** 模型的返回值与[语义分割模型API中predict接口](./apis/models/semantic_segmentation.md#predict)的返回值一致

+ 43 - 0
docs/python_deploy.md

@@ -0,0 +1,43 @@
+# Python部署
+
+PaddleX已经集成了基于Python的高性能预测接口,在安装PaddleX后,可参照如下代码示例,进行预测。
+
+## 部署模型导出
+
+在服务端部署模型时需要将训练过程中保存的模型导出为inference格式模型,具体的导出步骤请参考文档[部署模型导出](./apis/export_model.md)将模型导出为inference格式。
+
+## 预测部署
+
+接下来的预测部署将使用PaddleX python高性能预测接口,接口说明可参考[paddlex.deploy](./apis/deploy.md)
+
+
+* 单张图片预测
+
+```
+import paddlex as pdx
+predictor = pdx.deploy.Predictor('./inference_model')
+result = predictor.predict(img_file='test.img')
+
+```
+
+* 单张图片预测、并评估预测速度
+
+**关于预测速度的说明**:加载模型后,前几张图片的预测速度会较慢,这是因为运行启动时涉及到内存显存初始化等步骤,通常在预测20-30张图片后模型的预测速度达到稳定。**如果需要评估预测速度,可通过指定预热轮数warmup_iters完成预热**。**为获得更加精准的预测速度,可指定repeats重复预测后取时间平均值**。
+
+```
+import paddlex as pdx
+predictor = pdx.deploy.Predictor('./inference_model')
+result = predictor.predict(img_file='test.img',
+                           warmup_iters=100,
+                           repeats=100)
+
+```
+
+* 批量图片预测
+
+```
+import paddlex as pdx
+predictor = pdx.deploy.Predictor('./inference_model')
+image_list = ['test1.jpg', 'test2.jpg']
+result = predictor.batch_predict(img_file=image_list)
+```

+ 6 - 6
paddlex/deploy.py

@@ -39,14 +39,14 @@ class Predictor(object):
                 model_dir: 模型路径(必须是导出的部署或量化模型)
                 use_gpu: 是否使用gpu,默认False
                 gpu_id: 使用gpu的id,默认0
-                cpu_thread_num=1:使用cpu进行预测时的线程数,默认为1
+                cpu_thread_num:使用cpu进行预测时的线程数,默认为1
                 use_mkl: 是否使用mkldnn计算库,CPU情况下使用,默认False
                 mkl_thread_num: mkldnn计算线程数,默认为4
                 use_trt: 是否使用TensorRT,默认False
                 use_glog: 是否启用glog日志, 默认False
                 memory_optimize: 是否启动内存优化,默认True
                 max_trt_batch_size: 在使用TensorRT时配置的最大batch size,默认1
-                trt_precision_mode:在使用TensorRT时采用的精度,默认float32
+                trt_precision_mode:在使用TensorRT时采用的精度,可选值['float32', 'float16']。默认'float32',
         """
         self.model_dir = model_dir
         self._model = load_model(model_dir, with_net=False)
@@ -243,10 +243,10 @@ class Predictor(object):
             Args:
                 img_file(List[np.ndarray or str], str or np.ndarray):
                     图像路径;或者是解码后的排列格式为(H, W, C)且类型为float32且为BGR格式的数组。
-                topk(int): 分类预测时使用,表示预测前topk的结果。
-                transforms (paddlex.transforms): 数据预处理操作。
-                warmup_iters (int): 预热轮数,默认为0。
-                repeats (int): 重复次数,用于评估模型推理以及前后处理速度。若大于1,会预测repeats次取时间平均值。
+                topk(int): 分类预测时使用,表示预测前topk的结果。默认值为1。
+                transforms (paddlex.transforms): 数据预处理操作。默认值为None, 即使用`model.yml`中保存的数据预处理操作。
+                warmup_iters (int): 预热轮数,用于评估模型推理以及前后处理速度。若大于1,会预先重复预测warmup_iters,而后才开始正式的预测及其速度评估。默认为0。
+                repeats (int): 重复次数,用于评估模型推理以及前后处理速度。若大于1,会预测repeats次取时间平均值。默认值为1。
         """
         if repeats < 1:
             logging.error("`repeats` must be greater than 1.", exit=True)