From 1889a95dfd9627d71dd6b77b7bd944a8c46b0b1c Mon Sep 17 00:00:00 2001 From: Bobholamovic Date: Fri, 12 Aug 2022 20:18:27 +0800 Subject: [PATCH] Update coco_tools and python deploy docs --- README.md | 1 + deploy/README.md | 63 +++++++-- docs/data/coco_tools.md | 251 +++++++++++++++++------------------ docs/data/tools.md | 2 +- paddlers/deploy/predictor.py | 8 +- 5 files changed, 179 insertions(+), 146 deletions(-) diff --git a/README.md b/README.md index a132f96..cdce996 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,7 @@ PaddleRS目录树中关键部分如下: * [模型训练API说明](./docs/apis/train.md) * 模型部署 * [模型导出](./deploy/export/README.md) + * [Python部署](./deploy/README.md) * [模型推理API说明](./docs/apis/infer.md) * 实践案例 * [遥感影像变化检测案例](./docs/cases/csc_cd_cn.md) diff --git a/deploy/README.md b/deploy/README.md index 5047c26..d84387e 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -2,30 +2,69 @@ PaddleRS已经集成了基于Python的高性能预测(prediction)接口。在安装PaddleRS后,可参照如下代码示例执行预测。 -## 部署模型导出 +## 1 部署模型导出 -在服务端部署模型时需要首先将训练过程中保存的模型导出为部署格式,具体的导出步骤请参考文档[部署模型导出](/deploy/export/README.md)。 +在服务端部署模型时需要首先将训练过程中保存的模型导出为部署格式,具体的导出步骤请参考文档[部署模型导出](deploy/export/README.md)。 -## 预测接口调用 +## 2 预测接口调用 -* **基本使用** +使用预测接口的基本流程为:首先构建`Predictor`对象,然后调用`Predictor`的`predict()`方法执行预测。需要说明的是,`Predictor`对象的`predict()`方法返回的结果与对应的训练器(在`paddlers/tasks/`目录的文件中定义)的`predict()`方法返回结果具有相同的格式。 -以下是一个调用PaddleRS Python预测接口的实例。首先构建`Predictor`对象,然后调用`Predictor`的`predict()`方法执行预测。 +### 2.1 基本使用 + +以变化检测任务为例,说明预测接口的基本使用方法: ```python -import paddlers as pdrs -# 将导出模型所在目录传入Predictor的构造方法中 -predictor = pdrs.deploy.Predictor('./inference_model') -# img_file参数指定输入图像路径 -result = predictor.predict(img_file='test.jpg') +from paddlers.deploy import Predictor + +# 第一步:构建Predictor。该类接受的构造参数如下: +# model_dir: 模型路径(必须是导出的部署或量化模型)。 +# use_gpu: 是否使用GPU,默认为False。 +# gpu_id: 使用GPU的ID,默认为0。 +# 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', 'float16']。默认为'float32'。 +# +# 下面的语句构建的Predictor对象依赖static_models/目录中存储的部署格式模型,并使用GPU进行推理。 +predictor = Predictor("static_models/", use_gpu=True) + +# 第二步:调用Predictor的predict()方法执行推理。该方法接受的输入参数如下: +# img_file(List[str or tuple or np.ndarray], str, tuple, or np.ndarray): +# 对于场景分类、图像复原、目标检测和语义分割任务来说,该参数可为单一图像路径,或是解码后的、排列格式为(H, W, C) +# 且具有float32类型的BGR图像(表示为numpy的ndarray形式),或者是一组图像路径或np.ndarray对象构成的列表;对于变化检测 +# 任务来说,该参数可以为图像路径二元组(分别表示前后两个时相影像路径),或是两幅图像组成的二元组,或者是上述两种二元组 +# 之一构成的列表。 +# topk(int): 场景分类模型预测时使用,表示预测前topk的结果。默认值为1。 +# transforms (paddlers.transforms): 数据预处理操作。默认值为None, 即使用`model.yml`中保存的数据预处理操作。 +# warmup_iters (int): 预热轮数,用于评估模型推理以及前后处理速度。若大于1,会预先重复预测warmup_iters,而后才开始正式的预测及其速度评估。默认为0。 +# repeats (int): 重复次数,用于评估模型推理以及前后处理速度。若大于1,会预测repeats次取时间平均值。默认值为1。 +# +# 下面的语句传入两幅输入影像的路径 +res = predictor.predict(("demo_data/A.png", "demo_data/B.png")) + +# 第三步:解析predict()方法返回的结果。 +# 对于语义分割和变化检测任务而言,predict()方法返回的结果为一个字典或字典构成的列表。字典中的`label_map`键对应的值为类别标签图,对于二值变化检测 +# 任务而言只有0(不变类)或者1(变化类)两种取值;`score_map`键对应的值为类别概率图,对于二值变化检测任务来说一般包含两个通道,第0个通道表示不发生 +# 变化的概率,第1个通道表示发生变化的概率。如果返回的结果是由字典构成的列表,则列表中的第n项与输入的img_file中的第n项对应。 +# +# 下面的语句从res中解析二值变化图(binary change map) +cm_1024x1024 = res['label_map'] ``` -* **在预测过程中评估模型预测速度** +请注意,**`predictor.predict()`方法接受的影像列表长度与导出模型时指定的batch size必须一致**(若指定的batch size不为-1),这是因为`Predictor`对象将所有输入影像拼接成一个batch执行预测。您可以在[模型推理API说明](../docs/apis/infer.md)中了解关于`predictor.predict()`方法返回结果格式的更多信息。 -加载模型后,对前几张图片的预测速度会较慢,这是因为程序刚启动时需要进行内存、显存初始化等步骤。通常,在处理20-30张图片后,模型的预测速度能够达到稳定值。基于这一观察,**如果需要评估模型的预测速度,可通过指定预热轮数`warmup_iters`对模型进行预热**。此外,**为获得更加精准的预测速度估计值,可指定重复`repeats`次预测后计算平均耗时**。 +### 2.2 指定预热轮数与重复次数 + +加载模型后,对前几张图片的预测速度会较慢,这是因为程序刚启动时需要进行内存、显存初始化等步骤。通常,在处理20-30张图片后,模型的预测速度能够达到稳定值。基于这一观察,**如果需要评估模型的预测速度,可通过指定预热轮数`warmup_iters`对模型进行预热**。此外,**为获得更加精准的预测速度估计值,可指定重复`repeats`次预测后计算平均耗时**。指定预热轮数与重复次数的一个简单例子如下: ```python import paddlers as pdrs + predictor = pdrs.deploy.Predictor('./inference_model') result = predictor.predict(img_file='test.jpg', warmup_iters=100, diff --git a/docs/data/coco_tools.md b/docs/data/coco_tools.md index 362c427..3e8f81e 100644 --- a/docs/data/coco_tools.md +++ b/docs/data/coco_tools.md @@ -1,31 +1,30 @@ -# coco_tools说明 +# coco_tools使用说明 -## 0.工具说明 +## 1 工具说明 -coco_tools是PaddleRS中,用coco类标注文件处理的工具集,详见[tools/coco_tools/](tools/coco_tools/)。 +coco_tools是PaddleRS提供的用于处理COCO格式标注文件的工具集,位于`tools/coco_tools/`目录。由于[pycocotools库](https://pypi.org/project/pycocotools/)在部分环境下无法安装,PaddleRS提供coco_tools作为替代,进行一些简单的文件处理工作。 -由于pycocotools库在部分环境下无法安装,因此可以使用coco_tools进行一些简单的文件处理工作。 - -## 1.文件说明 +## 2 文件说明 目前coco_tools共有6个文件,各文件及其功能如下: -* json_InfoShow: 打印json文件中各个字典的基本信息; -* json_ImgSta: 统计json文件中的图像信息,生成统计表、统计图; -* json_AnnoSta: 统计json文件中的标注信息,生成统计表、统计图; -* json_Img2Json: 统计test集图像,生成json文件; -* json_Split: json文件拆分,划分为train set、val set -* json_Merge: json文件合并,将多个json合并为1个json +- `json_InfoShow.py`: 打印json文件中各个字典的基本信息; +- `json_ImgSta.py`: 统计json文件中的图像信息,生成统计表、统计图; +- `json_AnnoSta.py`: 统计json文件中的标注信息,生成统计表、统计图; +- `json_Img2Json.py`: 统计test集图像,生成json文件; +- `json_Split.py`: 将json文件中的内容划分为train set和val set; +- `json_Merge.py`: 将多个json文件合并为1个。 -## 2. 应用案例说明 +## 3 使用示例 -通过本教程,你将快速学会PaddleRS中关于coco_tools的API调用,帮助你完成coco类数据集的信息统计、文件操作。 +## 3.1 示例数据集 -## 2.1 示例数据集 +本文档以COCO 2017数据集作为示例数据进行演示。您可以在以下链接下载该数据集: -本文档以COCO 2017数据集作为示例数据,进行演示。COCO 2017 [官方下载链接](https://cocodataset.org/#download)、[aistudio备份链接](https://aistudio.baidu.com/aistudio/datasetdetail/7122) +- [官方下载链接](https://cocodataset.org/#download) +- [aistudio备份链接](https://aistudio.baidu.com/aistudio/datasetdetail/7122) -COCO 2017 文件结构 +下载完成后,为方便后续使用,您可以将`coco_tools`目录从PaddleRS项目中复制或链接到数据集目录中。完整的数据集目录结构如下: ``` ./COCO2017/ # 数据集根目录 @@ -48,15 +47,13 @@ COCO 2017 文件结构 | |--... ``` -## 2.2 打印json信息 - -使用json_InfoShow.py,可以打印`instances_val2017.json`中的各个key, 并输出value中的前n个元素,从而帮助快速了解标注信息。 +## 3.2 打印json信息 -尤其是对于coco格式标注数据中的image、annotation,可以查看其具体的标注格式 +使用`json_InfoShow.py`可以打印json文件中的各个键值对的key, 并输出value中排列靠前的元素,从而帮助您快速了解标注信息。对于COCO格式标注数据而言,您应该特别留意`'image'`和`'annotation'`字段的内容。 -### 2.2.1 命令演示 +### 3.2.1 命令演示 -可以执行如下命令,打印`instances_val2017.json`信息 +执行如下命令,打印`instances_val2017.json`中的信息: ``` python ./coco_tools/json_InfoShow.py \ @@ -64,16 +61,16 @@ python ./coco_tools/json_InfoShow.py \ --show_num 5 ``` -### 2.2.2 参数说明 +### 3.2.2 参数说明 -| 参数名 | 含义 | 默认值 | -| ------------- | ------------------------------ | -------- | -| --json_path | 需要统计的json文件路径 | | -| --show_num | (可选)输出value元素的个数 | 5 | -| --Args_show | (可选)是否打印输入的参数信息 | True | +| 参数名 | 含义 | 默认值 | +| ------------- | ------------------------------------| -------- | +| `--json_path` | 需要统计的json文件路径 | | +| `--show_num` | (可选)输出value中排列靠前的元素的个数 | `5` | +| `--Args_show` | (可选)是否打印输入参数信息 | `True` | -### 2.2.3 结果展示 +### 3.2.3 结果展示 执行上述命令后,输出结果如下: @@ -154,31 +151,28 @@ contributor : COCO Consortium ``` -### 2.2.4 结果说明 +### 3.2.4 结果说明 -`instances_val2017.json`的key有5个,分别为 +`instances_val2017.json`的key有5个,分别为: ``` 'info', 'licenses', 'images', 'annotations', 'categories' ``` +其中, -info键,对应的值为字典,共有6个键值对,输出展示了前5对 - -licenses键,对应的值为列表,共有8个元素,输出展示了前5个 - -images键,对应的值为列表,共有5000个元素,输出展示了前5个 - -annotations键,对应的值为列表,共有36781个元素,输出展示了前5个 +- `info`键对应的值为字典,共有6个键值对,输出展示了前5对; +- `licenses`键对应的值为列表,共有8个元素,输出展示了前5个; +- `images`键对应的值为列表,共有5000个元素,输出展示了前5个; +- `annotations`键对应的值为列表,共有36781个元素,输出展示了前5个; +- `categories`键对应的值为列表,共有80个元素,输出展示了前5个。 -categories键,对应的值为列表,共有80个元素,输出展示了前5个 +## 3.3 统计图像信息 -## 2.3 统计图像信息 +使用`json_ImgSta.py`可以从`instances_val2017.json`中快速提取图像信息,生成csv表格,并生成统计图。 -使用json_ImgSta.py,可以从`instances_val2017.json`中,快速提取图像信息,生成csv表格,并生成统计图 +### 3.3.1 命令演示 -### 2.3.1 命令演示 - -可以执行如下命令,打印`instances_val2017.json`信息 +执行如下命令,打印`instances_val2017.json`信息: ``` python ./coco_tools/json_ImgSta.py \ @@ -188,19 +182,18 @@ python ./coco_tools/json_ImgSta.py \ --png_shapeRate_path=./img_sta/images_shapeRate.png ``` -### 2.3.2 参数说明 - +### 3.3.2 参数说明 -| 参数名 | 含义 | 默认值 | +| 参数名 | 含义 | 默认值 | | ---------------------- | --------------------------------------------------------------------- | -------- | -| --json_path | 需要统计的json文件路径 | | -| --csv_path | (可选)统计表格保存路径 | None | -| --png_shape_path | (可选)png图片保存路径,图片内容为所有图像shape的二维分布 | 5 | -| --png_shapeRate_path | (可选)png图片保存路径,图片内容为所有图像shape比例(宽/高)的一维分布 | 5 | -| --image_keyname | (可选)json文件中,图像key的名称 | images | -| --Args_show | (可选)是否打印输入的参数信息 | True | +| `--json_path` | 需要统计的json文件路径 | | +| `--csv_path` | (可选)统计表格保存路径 | `None` | +| `--png_shape_path` | (可选)png图片保存路径,图片内容为所有图像shape的二维分布 | `5` | +| `--png_shapeRate_path` | (可选)png图片保存路径,图片内容为所有图像shape比例(宽/高)的一维分布 | `5` | +| `--image_keyname` | (可选)json文件中,图像所对应的key |`'images'`| +| `--Args_show` | (可选)是否打印输入参数信息 |`True` | -### 2.3.3 结果展示 +### 3.3.3 结果展示 执行上述命令后,输出结果如下: @@ -233,18 +226,19 @@ csv save to ./img_sta/images.csv 保存的图片内容: -所有图像shape的二维分布 +所有图像shape的二维分布: ![image.png](./assets/1650011491220-image.png) -所有图像shape比例(宽/高)的一维分布 + +所有图像shape比例(宽/高)的一维分布: ![image.png](./assets/1650011634205-image.png) -## 2.4 统计目标检测标注框信息 +## 3.4 统计目标检测标注框信息 -使用json_AnnoSta.py,可以从`instances_val2017.json`中,快速提取图像信息,生成csv表格,并生成统计图 +使用`json_AnnoSta.py`,可以从`instances_val2017.json`中快速提取标注信息,生成csv表格,并生成统计图。 -### 2.4.1 命令演示 +### 3.4.1 命令演示 -可以执行如下命令,打印`instances_val2017.json`信息 +执行如下命令,打印`instances_val2017.json`信息: ``` python ./coco_tools/json_AnnoSta.py \ @@ -259,25 +253,24 @@ python ./coco_tools/json_AnnoSta.py \ --get_relative=True ``` -### 2.4.2 参数说明 - +### 3.4.2 参数说明 -| 参数名 | 含义 | 默认值 | +| 参数名 | 含义 | 默认值 | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------- | -| --json_path | (可选)需要统计的json文件路径 | | -| --csv_path | (可选)统计表格保存路径 | None | -| --png_shape_path | (可选)png图片保存路径,图片内容为所有目标检测框shape的二维分布 | None | -| --png_shapeRate_path | (可选)png图片保存路径,图片内容为所有目标检测框shape比例(宽/高)的一维分布 | None | -| --png_pos_path | (可选)png图片保存路径,图片内容为所有目标检测框左上角坐标的二维分布 | None | -| --png_posEnd_path | (可选)png图片保存路径,图片内容为所有目标检测框右下角坐标的二维分布 | None | -| --png_cat_path | (可选)png图片保存路径,图片内容为各个类别的对象数量分布 | None | -| --png_objNum_path | (可选)png图片保存路径,图片内容为单个图像中含有标注对象的数量分布 | None | -| --get_relative | (可选)是否生成图像目标检测框shape、目标检测框左上角坐标、右下角坐标的相对比例值
(横轴坐标/图片长,纵轴坐标/图片宽) | None | -| --image_keyname | (可选)json文件中,图像key的名称 | images | -| --anno_keyname | (可选)json文件中,图像anno的名称 | annotations | -| --Args_show | (可选)是否打印输入的参数信息 | True | - -### 2.4.3 结果展示 +| `--json_path` | (可选)需要统计的json文件路径 | | +| `--csv_path` | (可选)统计表格保存路径 | `None` | +| `--png_shape_path` | (可选)png图片保存路径,图片内容为所有目标检测框shape的二维分布 | `None` | +| `--png_shapeRate_path` | (可选)png图片保存路径,图片内容为所有目标检测框shape比例(宽/高)的一维分布 | `None` | +| `--png_pos_path` | (可选)png图片保存路径,图片内容为所有目标检测框左上角坐标的二维分布 | `None` | +| `--png_posEnd_path` | (可选)png图片保存路径,图片内容为所有目标检测框右下角坐标的二维分布 | `None` | +| `--png_cat_path` | (可选)png图片保存路径,图片内容为各个类别的对象数量分布 | `None` | +| `--png_objNum_path` | (可选)png图片保存路径,图片内容为单个图像中含有标注对象的数量分布 | `None` | +| `--get_relative` | (可选)是否生成图像目标检测框shape、目标检测框左上角坐标、右下角坐标的相对比例值
(横轴坐标/图片长,纵轴坐标/图片宽) | `None` | +| `--image_keyname` | (可选)json文件中,图像所对应的key | `'images'` | +| `--anno_keyname` | (可选)json文件中,标注所对应的key | `'annotations'`| +| `--Args_show` | (可选)是否打印输入参数信息 | `True` | + +### 3.4.3 结果展示 执行上述命令后,输出结果如下: @@ -315,49 +308,49 @@ csv save to ./anno_sta/annos.csv ![image.png](./assets/1650025881244-image.png) -所有目标检测框shape的二维分布: +所有目标检测框shape的二维分布: ![image.png](./assets/1650025909461-image.png) -所有目标检测框shape在图像中相对比例的二维分布: +所有目标检测框shape在图像中相对比例的二维分布: ![image.png](./assets/1650026052596-image.png) -所有目标检测框shape比例(宽/高)的一维分布: +所有目标检测框shape比例(宽/高)的一维分布: ![image.png](./assets/1650026072233-image.png) -所有目标检测框左上角坐标的二维分布: +所有目标检测框左上角坐标的二维分布: ![image.png](./assets/1650026247150-image.png) -所有目标检测框左上角坐标的相对比例值的二维分布: +所有目标检测框左上角坐标的相对比例值的二维分布: ![image.png](./assets/1650026289987-image.png) -所有目标检测框右下角坐标的二维分布: +所有目标检测框右下角坐标的二维分布: ![image.png](./assets/1650026457254-image.png) -所有目标检测框右下角坐标的相对比例值的二维分布: +所有目标检测框右下角坐标的相对比例值的二维分布: ![image.png](./assets/1650026487732-image.png) -各个类别的对象数量分布 +各个类别的对象数量分布: ![image.png](./assets/1650026546304-image.png) -单个图像中含有标注对象的数量分布 +单个图像中含有标注对象的数量分布: ![image.png](./assets/1650026559309-image.png) -## 2.5 统计图像信息生成json +## 3.5 统计图像信息生成json -使用json_Test2Json.py,可以根据`test2017`中的文件信息与训练集json文件,快速提取图像信息,生成json文件 +使用`json_Test2Json.py`,可以根据`test2017`中的文件信息与训练集json文件快速提取图像信息,生成测试集json文件。 -### 2.5.1 命令演示 +### 3.5.1 命令演示 -可以执行如下命令,统计并生成`test2017`信息 +执行如下命令,统计并生成`test2017`信息: ``` python ./coco_tools/json_Img2Json.py \ @@ -366,19 +359,19 @@ python ./coco_tools/json_Img2Json.py \ --json_test_path=./test.json ``` -### 2.5.2 参数说明 +### 3.5.2 参数说明 -| 参数名 | 含义 | 默认值 | +| 参数名 | 含义 | 默认值 | | ------------------- | ---------------------------------------- | ------------ | -| --test_image_path | 需要统计的图像文件夹路径 | | -| --json_train_path | 用于参考的训练集json文件路径 | | -| --json_test_path | 生成的测试集json文件路径 | | -| --image_keyname | (可选)json文件中,图像key的名称 | images | -| --cat_keyname | (可选)json文件中,图像categories的名称 | categories | -| --Args_show | (可选)是否打印输入的参数信息 | True | +| `--test_image_path` | 需要统计的图像目录路径 | | +| `--json_train_path` | 用于参考的训练集json文件路径 | | +| `--json_test_path` | 生成的测试集json文件路径 | | +| `--image_keyname` | (可选)json文件中,图像对应的key | `'images'` | +| `--cat_keyname` | (可选)json文件中,类别对应的key | `'categories'`| +| `--Args_show` | (可选)是否打印输入参数信息 | `True` | -### 2.5.3 结果展示 +### 3.5.3 结果展示 执行上述命令后,输出结果如下: @@ -438,13 +431,13 @@ json keys: dict_keys(['images', 'categories']) ... ``` -## 2.6 json文件拆分 +## 3.6 json文件拆分 -使用json_Split.py,可以拆分`instances_val2017.json`文件 +使用`json_Split.py`,可以将`instances_val2017.json`文件拆分为2个子集。 -### 2.6.1 命令演示 +### 3.6.1 命令演示 -可以执行如下命令,拆分`instances_val2017.json`文件 +执行如下命令,拆分`instances_val2017.json`文件: ``` python ./coco_tools/json_Split.py \ @@ -453,22 +446,22 @@ python ./coco_tools/json_Split.py \ --json_val_path=./instances_val2017_val.json ``` -### 2.6.2 参数说明 +### 3.6.2 参数说明 -| 参数名 | 含义 | 默认值 | +| 参数名 | 含义 | 默认值 | | -------------------- | ------------------------------------------------------------------------------------- | ------------ | -| --json_all_path | 需要拆分的json文件路径 | | -| --json_train_path | 生成的train部分json文件 | | -| --json_val_path | 生成的val部分json文件 | | -| --val_split_rate | (可选)拆分过程中,val集文件的比例 | 0.1 | -| --val_split_num | (可选)拆分过程中,val集文件的数量,
如果设置了该参数,则val_split_rate参数失效 | None | -| --keep_val_inTrain | (可选)拆分过程中,是否在train中仍然保留val部分 | False | -| --image_keyname | (可选)json文件中,图像key的名称 | images | -| --cat_keyname | (可选)json文件中,图像categories的名称 | categories | -| --Args_show | (可选)是否打印输入的参数信息 | True | - -### 2.6.3 结果展示 +| `--json_all_path` | 需要拆分的json文件路径 | | +| `--json_train_path` | 生成的train部分json文件 | | +| `--json_val_path` | 生成的val部分json文件 | | +| `--val_split_rate` | (可选)拆分过程中,val集文件的比例 | `0.1` | +| `--val_split_num` | (可选)拆分过程中,val集文件的数量,
如果设置了该参数,则`--val_split_rate`参数失效 | `None` | +| `--keep_val_inTrain` | (可选)拆分过程中,是否在train中仍然保留val部分 | `False` | +| `--image_keyname` | (可选)json文件中,图像对应的key | `'images'` | +| `--cat_keyname` | (可选)json文件中,类别对应的key | `'categories'`| +| `--Args_show` | (可选)是否打印输入参数信息 | `'True'` | + +### 3.6.3 结果展示 执行上述命令后,输出结果如下: @@ -492,13 +485,13 @@ image total 5000, train 4500, val 500 anno total 36781, train 33119, val 3662 ``` -## 2.7 json文件合并 +## 3.7 json文件合并 -使用json_Merge.py,可以合并`instances_train2017.json、instances_val2017.json`文件 +使用`json_Merge.py`,可以合并2个json文件。 -### 2.7.1 命令演示 +### 3.7.1 命令演示 -可以执行如下命令,合并`instances_train2017.json、instances_val2017.json`文件 +执行如下命令,合并`instances_train2017.json`与`instances_val2017.json`: ``` python ./coco_tools/json_Merge.py \ @@ -507,18 +500,18 @@ python ./coco_tools/json_Merge.py \ --save_path=./instances_trainval2017.json ``` -### 2.7.2 参数说明 +### 3.7.2 参数说明 -| 参数名 | 含义 | 默认值 | +| 参数名 | 含义 | 默认值 | | -------------- | ------------------------------- | --------------------------- | -| --json1_path | 需要合并的json文件1路径 | | -| --json2_path | 需要合并的json文件2路径 | | -| --save_path | 生成的json文件 | | -| --merge_keys | (可选)合并过程中需要合并的key | ['images', 'annotations'] | -| --Args_show | (可选)是否打印输入的参数信息 | True | +| `--json1_path` | 需要合并的json文件1路径 | | +| `--json2_path` | 需要合并的json文件2路径 | | +| `--save_path` | 生成的json文件 | | +| `--merge_keys` | (可选)合并过程中需要合并的key | `['images', 'annotations']` | +| `--Args_show` | (可选)是否打印输入参数信息 | `True` | -### 2.7.3 结果展示 +### 3.7.3 结果展示 执行上述命令后,输出结果如下: diff --git a/docs/data/tools.md b/docs/data/tools.md index fac56f9..f434c49 100644 --- a/docs/data/tools.md +++ b/docs/data/tools.md @@ -98,6 +98,6 @@ python split.py --image_path {输入影像路径} [--mask_path {真值标签路 - `json_AnnoSta.py`: 统计json文件中的标注信息,生成统计表、统计图; - `json_Img2Json.py`: 统计test集图像,生成json文件; - `json_Split.py`: 将json文件中的内容划分为train set和val set; -- `json_Merge.py`: 将多个json文件合并为1个。 +- `json_Merge.py`: 将多个json文件合并为一个。 详细使用方法请参见[coco_tools使用说明](coco_tools.md)。 diff --git a/paddlers/deploy/predictor.py b/paddlers/deploy/predictor.py index 5c39305..8fc7ecb 100644 --- a/paddlers/deploy/predictor.py +++ b/paddlers/deploy/predictor.py @@ -97,7 +97,7 @@ class Predictor(object): osp.join(self.model_dir, 'model.pdiparams')) if use_gpu: - # 设置GPU初始显存(单位M)和Device ID + # Set memory on GPUs (in MB) and device ID config.enable_use_gpu(200, gpu_id) config.switch_ir_optim(True) if use_trt: @@ -127,7 +127,7 @@ class Predictor(object): ) else: try: - # cache 10 different shapes for mkldnn to avoid memory leak + # Cache 10 different shapes for mkldnn to avoid memory leak config.set_mkldnn_cache_capacity(10) config.enable_mkldnn() config.set_cpu_math_library_num_threads(mkl_thread_num) @@ -260,8 +260,8 @@ class Predictor(object): Args: img_file(list[str|tuple|np.ndarray] | str | tuple | np.ndarray): For scene classification, image restoration, - object detection and semantic segmentation tasks, `img_file` should be either the path of the image to predict - , a decoded image (a np.ndarray, which should be consistent with what you get from passing image path to + object detection and semantic segmentation tasks, `img_file` should be either the path of the image to predict, + a decoded image (a np.ndarray, which should be consistent with what you get from passing image path to paddlers.transforms.decode_image()), or a list of image paths or decoded images. For change detection tasks, img_file should be a tuple of image paths, a tuple of decoded images, or a list of tuples. topk(int, optional): Top-k values to reserve in a classification result. Defaults to 1.