From 18a4c14233b27aa297fade194feaaac146014c53 Mon Sep 17 00:00:00 2001 From: Tingquan Gao Date: Tue, 10 Nov 2020 17:19:50 +0800 Subject: [PATCH] Update preprocess and HubServing (#382) add hub serving code and doc --- .../hubserving/ILSVRC2012_val_00006666.JPEG | Bin 0 -> 151397 bytes deploy/hubserving/clas/__init__.py | 0 deploy/hubserving/clas/config.json | 15 ++ deploy/hubserving/clas/module.py | 129 ++++++++++++ deploy/hubserving/clas/params.py | 41 ++++ deploy/hubserving/readme.md | 140 +++++++++++++ deploy/hubserving/readme_en.md | 148 ++++++++++++++ docs/en/tutorials/getting_started_en.md | 12 +- docs/zh_CN/tutorials/getting_started.md | 12 +- tools/ema.py | 189 ++++-------------- tools/ema_clean.py | 48 ----- tools/infer/infer.py | 58 +----- tools/infer/predict.py | 78 ++------ tools/infer/utils.py | 93 ++++++++- tools/test_hubserving.py | 98 +++++++++ 15 files changed, 723 insertions(+), 338 deletions(-) create mode 100644 deploy/hubserving/ILSVRC2012_val_00006666.JPEG create mode 100644 deploy/hubserving/clas/__init__.py create mode 100644 deploy/hubserving/clas/config.json create mode 100644 deploy/hubserving/clas/module.py create mode 100644 deploy/hubserving/clas/params.py create mode 100644 deploy/hubserving/readme.md create mode 100644 deploy/hubserving/readme_en.md delete mode 100644 tools/ema_clean.py create mode 100644 tools/test_hubserving.py diff --git a/deploy/hubserving/ILSVRC2012_val_00006666.JPEG b/deploy/hubserving/ILSVRC2012_val_00006666.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..f28452240a3cce4975cde66ecfe0ba7ec4d5fb2c GIT binary patch literal 151397 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

@**1)x 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 VP_H}v)N_rO0= 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当不指定Version时,默认选择最新版本`*| +|--port/-p| [**可选**] 服务端口,默认为8866| +|--use_multiprocess| [**可选**] 是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式
*`Windows操作系统只支持单进程方式`*| +|--workers| [**可选**] 在并发方式下指定的并发任务数,默认为`2*cpu_count-1`,其中`cpu_count`为CPU核数| + +如按默认参数启动服务: ```hub serving start -m clas_system``` + +这样就完成了一个服务化API的部署,使用默认端口号8866。 + +#### 方式2. 配置文件启动(支持CPU、GPU) +**启动命令:** +```hub serving start -c config.json``` + +其中,`config.json`格式如下: +```json +{ + "modules_info": { + "clas_system": { + "init_args": { + "version": "1.0.0", + "use_gpu": true + }, + "predict_args": { + } + } + }, + "port": 8866, + "use_multiprocess": false, + "workers": 2 +} +``` + +- `init_args`中的可配参数与`module.py`中的`_initialize`函数接口一致。其中,**当`use_gpu`为`true`时,表示使用GPU启动服务**。 +- `predict_args`中的可配参数与`module.py`中的`predict`函数接口一致。 + +**注意:** +- 使用配置文件启动服务时,其他参数会被忽略。 +- 如果使用GPU预测(即,`use_gpu`置为`true`),则需要在启动服务之前,设置CUDA_VISIBLE_DEVICES环境变量,如:```export CUDA_VISIBLE_DEVICES=0```,否则不用设置。 +- **`use_gpu`不可与`use_multiprocess`同时为`true`**。 + +如,使用GPU 3号卡启动串联服务: +```shell +export CUDA_VISIBLE_DEVICES=3 +hub serving start -c deploy/hubserving/clas/config.json +``` + +## 发送预测请求 +配置好服务端,可使用以下命令发送预测请求,获取预测结果: + +```python tools/test_hubserving.py server_url image_path``` + +需要给脚本传递2个参数: +- **server_url**:服务地址,格式为 +`http://[ip_address]:[port]/predict/[module_name]` +- **image_path**:测试图像路径,可以是单张图片路径,也可以是图像集合目录路径 +- **top_k**:[**可选**] 返回前 `top_k` 个 `score` ,默认为 `1`。 + +访问示例: +```python tools/test_hubserving.py http://127.0.0.1:8866/predict/clas_system ./deploy/hubserving/ILSVRC2012_val_00006666.JPEG 5``` + +## 返回结果格式说明 +返回结果为列表(list),包含 `clas`,以及所有得分组成的 `scores` (list类型), `scores` 包含前 `top_k` 个 `score` 。 + +**说明:** 如果需要增加、删除、修改返回字段,可在相应模块的`module.py`文件中进行修改,完整流程参考下一节自定义修改服务模块。 + +## 自定义修改服务模块 +如果需要修改服务逻辑,你一般需要操作以下步骤: + +- 1、 停止服务 +```hub serving stop --port/-p XXXX``` + +- 2、 到相应的`module.py`和`params.py`等文件中根据实际需求修改代码。 +例如,例如需要替换部署服务所用模型,则需要到`params.py`中修改模型路径参数`cfg.model_file`和`cfg.params_file`。 **强烈建议修改后先直接运行`module.py`调试,能正确运行预测后再启动服务测试。** + +- 3、 卸载旧服务包 +```hub uninstall clas_system``` + +- 4、 安装修改后的新服务包 +```hub install deploy/hubserving/clas_system/``` + +- 5、重新启动服务 +```hub serving start -m clas_system``` diff --git a/deploy/hubserving/readme_en.md b/deploy/hubserving/readme_en.md new file mode 100644 index 000000000..0f9e92ad5 --- /dev/null +++ b/deploy/hubserving/readme_en.md @@ -0,0 +1,148 @@ +English | [简体中文](readme.md) + +# Service deployment based on PaddleHub Serving + +HubServing service pack contains 3 files, the directory is as follows: +``` +deploy/hubserving/clas/ + └─ __init__.py Empty file, required + └─ config.json Configuration file, optional, passed in as a parameter when using configuration to start the service + └─ module.py Main module file, required, contains the complete logic of the service + └─ params.py Parameter file, required, including parameters such as model path, pre- and post-processing parameters +``` + +## Quick start service +### 1. Prepare the environment +```shell +# Install paddlehub +pip3 install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +### 2. Download inference model +Before installing the service module, you need to prepare the inference model and put it in the correct path. The default model path is: + +``` +Model structure file: ./inference/cls_infer.pdmodel +Model parameters file: ./inference/cls_infer.pdiparams +``` + +**The model path can be found and modified in `params.py`.** More models provided by PaddleClas can be obtained from the [model library](../../docs/en/models/models_intro_en.md). You can also use models trained by yourself. + +### 3. Install Service Module + +* On Linux platform, the examples are as follows. +```shell +hub install deploy/hubserving/clas/ +``` + +* On Windows platform, the examples are as follows. +```shell +hub install deploy\hubserving\clas\ +``` + +### 4. Start service +#### Way 1. Start with command line parameters (CPU only) + +**start command:** +```shell +$ hub serving start --modules Module1==Version1 \ + --port XXXX \ + --use_multiprocess \ + --workers \ +``` +**parameters:** + +|parameters|usage| +|-|-| +|--modules/-m|PaddleHub Serving pre-installed model, listed in the form of multiple Module==Version key-value pairs
*`When Version is not specified, the latest version is selected by default`*| +|--port/-p|Service port, default is 8866| +|--use_multiprocess|Enable concurrent mode, the default is single-process mode, this mode is recommended for multi-core CPU machines
*`Windows operating system only supports single-process mode`*| +|--workers|The number of concurrent tasks specified in concurrent mode, the default is `2*cpu_count-1`, where `cpu_count` is the number of CPU cores| + +For example, start the 2-stage series service: +```shell +hub serving start -m clas_system +``` + +This completes the deployment of a service API, using the default port number 8866. + +#### Way 2. Start with configuration file(CPU、GPU) +**start command:** +```shell +hub serving start --config/-c config.json +``` +Wherein, the format of `config.json` is as follows: +```json +{ + "modules_info": { + "clas_system": { + "init_args": { + "version": "1.0.0", + "use_gpu": true + }, + "predict_args": { + } + } + }, + "port": 8866, + "use_multiprocess": false, + "workers": 2 +} +``` +- The configurable parameters in `init_args` are consistent with the `_initialize` function interface in `module.py`. Among them, **when `use_gpu` is `true`, it means that the GPU is used to start the service**. +- The configurable parameters in `predict_args` are consistent with the `predict` function interface in `module.py`. + +**Note:** +- When using the configuration file to start the service, other parameters will be ignored. +- If you use GPU prediction (that is, `use_gpu` is set to `true`), you need to set the environment variable CUDA_VISIBLE_DEVICES before starting the service, such as: ```export CUDA_VISIBLE_DEVICES=0```, otherwise you do not need to set it. +- **`use_gpu` and `use_multiprocess` cannot be `true` at the same time.** + +For example, use GPU card No. 3 to start the 2-stage series service: +```shell +export CUDA_VISIBLE_DEVICES=3 +hub serving start -c deploy/hubserving/clas/config.json +``` + +## Send prediction requests +After the service starts, you can use the following command to send a prediction request to obtain the prediction result: +```shell +python tools/test_hubserving.py server_url image_path +``` + +Two parameters need to be passed to the script: +- **server_url**:service address,format of which is +`http://[ip_address]:[port]/predict/[module_name]` +- **image_path**:Test image path, can be a single image path or an image directory path +- **top_k**:[**Optional**] Return the top `top_k` 's scores ,default by `1`. + +**Eg.** +```shell +python tools/test_hubserving.py http://127.0.0.1:8866/predict/clas_system ./deploy/hubserving/ILSVRC2012_val_00006666.JPEG 5 +``` + +## Returned result format +The returned result is a list, including classification results(`clas`), and the `top_k`'s scores(`socres`). And `scores` is a list, consist of `score`. + +**Note:** If you need to add, delete or modify the returned fields, you can modify the file `module.py` of the corresponding module. For the complete process, refer to the user-defined modification service module in the next section. + +## User defined service module modification +If you need to modify the service logic, the following steps are generally required: + +- 1. Stop service +```shell +hub serving stop --port/-p XXXX +``` +- 2. Modify the code in the corresponding files, like `module.py` and `params.py`, according to the actual needs. +For example, if you need to replace the model used by the deployed service, you need to modify model path parameters `cfg.model_file` and `cfg.params_file` in `params.py`. Of course, other related parameters may need to be modified at the same time. Please modify and debug according to the actual situation. It is suggested to run `module.py` directly for debugging after modification before starting the service test. +- 3. Uninstall old service module +```shell +hub uninstall clas_system +``` +- 4. Install modified service module +```shell +hub install deploy/hubserving/clas_system/ +``` +- 5. Restart service +```shell +hub serving start -m clas_system +``` diff --git a/docs/en/tutorials/getting_started_en.md b/docs/en/tutorials/getting_started_en.md index def6ea552..2dcb6ad3b 100644 --- a/docs/en/tutorials/getting_started_en.md +++ b/docs/en/tutorials/getting_started_en.md @@ -198,7 +198,7 @@ After the training is completed, you can predict by using the pre-trained model ```python python tools/infer/infer.py \ -i image path \ - -m MobileNetV3_large_x1_0 \ + --model MobileNetV3_large_x1_0 \ --pretrained_model "./output/MobileNetV3_large_x1_0/best_model/ppcls" \ --use_gpu True \ --load_static_weights False @@ -206,7 +206,7 @@ python tools/infer/infer.py \ Among them: + `image_file`(i): The path of the image file to be predicted, such as `./test.jpeg`; -+ `model`(m): Model name, such as `MobileNetV3_large_x1_0`; ++ `model`: Model name, such as `MobileNetV3_large_x1_0`; + `pretrained_model`: Weight file path, such as `./pretrained/MobileNetV3_large_x1_0_pretrained/`; + `use_gpu`: Whether to use the GPU, default by `True`; + `load_static_weights`: Whether to load the pre-trained model obtained from static image training, default by `False`; @@ -248,15 +248,15 @@ The above command will generate the model structure file (`cls_infer.pdmodel`) a ```bash python tools/infer/predict.py \ --image_file image path \ - -m "./inference/cls_infer.pdmodel" \ - -p "./inference/cls_infer.pdiparams" \ + --model_file "./inference/cls_infer.pdmodel" \ + --params_file "./inference/cls_infer.pdiparams" \ --use_gpu=True \ --use_tensorrt=False ``` Among them: + `image_file`: The path of the image file to be predicted, such as `./test.jpeg`; -+ `model_file`(m): Model file path, such as `./MobileNetV3_large_x1_0/cls_infer.pdmodel`; -+ `params_file`(p): Weight file path, such as `./MobileNetV3_large_x1_0/cls_infer.pdiparams`; ++ `model_file`: Model file path, such as `./MobileNetV3_large_x1_0/cls_infer.pdmodel`; ++ `params_file`: Weight file path, such as `./MobileNetV3_large_x1_0/cls_infer.pdiparams`; + `use_tensorrt`: Whether to use the TesorRT, default by `True`; + `use_gpu`: Whether to use the GPU, default by `True`. diff --git a/docs/zh_CN/tutorials/getting_started.md b/docs/zh_CN/tutorials/getting_started.md index 8fb6f398f..586f2e04a 100644 --- a/docs/zh_CN/tutorials/getting_started.md +++ b/docs/zh_CN/tutorials/getting_started.md @@ -212,7 +212,7 @@ python tools/eval.py \ ```python python tools/infer/infer.py \ -i 待预测的图片文件路径 \ - -m MobileNetV3_large_x1_0 \ + --model MobileNetV3_large_x1_0 \ --pretrained_model "./output/MobileNetV3_large_x1_0/best_model/ppcls" \ --use_gpu True \ --load_static_weights False @@ -220,7 +220,7 @@ python tools/infer/infer.py \ 参数说明: + `image_file`(简写 i):待预测的图片文件路径或者批量预测时的图片文件夹,如 `./test.jpeg` -+ `model`(简写 m):模型名称,如 `MobileNetV3_large_x1_0` ++ `model`:模型名称,如 `MobileNetV3_large_x1_0` + `pretrained_model`:模型权重文件路径,如 `./output/MobileNetV3_large_x1_0/best_model/ppcls` + `use_gpu` : 是否开启GPU训练,默认值:`True` + `load_static_weights` : 模型权重文件是否为静态图训练得到的,默认值:`False` @@ -259,15 +259,15 @@ python tools/export_model.py \ ```bash python tools/infer/predict.py \ --image_file 图片路径 \ - -m "./inference/cls_infer.pdmodel" \ - -p "./inference/cls_infer.pdiparams" \ + --model_file "./inference/cls_infer.pdmodel" \ + --params_file "./inference/cls_infer.pdiparams" \ --use_gpu=True \ --use_tensorrt=False ``` 其中: + `image_file`:待预测的图片文件路径,如 `./test.jpeg` -+ `model_file`(简写 m):模型结构文件路径,如 `./inference/cls_infer.pdmodel` -+ `params_file`(简写 p):模型权重文件路径,如 `./inference/cls_infer.pdiparams` ++ `model_file`:模型结构文件路径,如 `./inference/cls_infer.pdmodel` ++ `params_file`:模型权重文件路径,如 `./inference/cls_infer.pdiparams` + `use_tensorrt`:是否使用 TesorRT 预测引擎,默认值:`True` + `use_gpu`:是否使用 GPU 预测,默认值:`True`。 diff --git a/tools/ema.py b/tools/ema.py index bbd5af2ed..4f4596e1f 100644 --- a/tools/ema.py +++ b/tools/ema.py @@ -1,165 +1,44 @@ -# copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import numpy as np import paddle -import paddle.fluid as fluid -from paddle.fluid.wrapped_decorator import signature_safe_contextmanager -from paddle.fluid.framework import Program, program_guard, name_scope, default_main_program -from paddle.fluid import unique_name, layers +import numpy as np -class ExponentialMovingAverage(object): - def __init__(self, - decay=0.999, - thres_steps=None, - zero_debias=False, - name=None): +class ExponentialMovingAverage(): + def __init__(self, model, decay, thres_steps=True): + self._model = model self._decay = decay self._thres_steps = thres_steps - self._name = name if name is not None else '' - self._decay_var = self._get_ema_decay() + self._shadow = {} + self._backup = {} - self._params_tmps = [] - for param in default_main_program().global_block().all_parameters(): - if param.do_model_average != False: - tmp = param.block.create_var( - name=unique_name.generate(".".join( - [self._name + param.name, 'ema_tmp'])), - dtype=param.dtype, - persistable=False, - stop_gradient=True) - self._params_tmps.append((param, tmp)) - - self._ema_vars = {} - for param, tmp in self._params_tmps: - with param.block.program._optimized_guard( - [param, tmp]), name_scope('moving_average'): - self._ema_vars[param.name] = self._create_ema_vars(param) - - self.apply_program = Program() - block = self.apply_program.global_block() - with program_guard(main_program=self.apply_program): - decay_pow = self._get_decay_pow(block) - for param, tmp in self._params_tmps: - param = block._clone_variable(param) - tmp = block._clone_variable(tmp) - ema = block._clone_variable(self._ema_vars[param.name]) - layers.assign(input=param, output=tmp) - # bias correction - if zero_debias: - ema = ema / (1.0 - decay_pow) - layers.assign(input=ema, output=param) - - self.restore_program = Program() - block = self.restore_program.global_block() - with program_guard(main_program=self.restore_program): - for param, tmp in self._params_tmps: - tmp = block._clone_variable(tmp) - param = block._clone_variable(param) - layers.assign(input=tmp, output=param) - - def _get_ema_decay(self): - with default_main_program()._lr_schedule_guard(): - decay_var = layers.tensor.create_global_var( - shape=[1], - value=self._decay, - dtype='float32', - persistable=True, - name="scheduled_ema_decay_rate") - - if self._thres_steps is not None: - decay_t = (self._thres_steps + 1.0) / (self._thres_steps + 10.0) - with layers.control_flow.Switch() as switch: - with switch.case(decay_t < self._decay): - layers.tensor.assign(decay_t, decay_var) - with switch.default(): - layers.tensor.assign( - np.array( - [self._decay], dtype=np.float32), - decay_var) - return decay_var - - def _get_decay_pow(self, block): - global_steps = layers.learning_rate_scheduler._decay_step_counter() - decay_var = block._clone_variable(self._decay_var) - decay_pow_acc = layers.elementwise_pow(decay_var, global_steps + 1) - return decay_pow_acc - - def _create_ema_vars(self, param): - param_ema = layers.create_global_var( - name=unique_name.generate(self._name + param.name + '_ema'), - shape=param.shape, - value=0.0, - dtype=param.dtype, - persistable=True) - - return param_ema + def register(self): + self._update_step = 0 + for name, param in self._model.named_parameters(): + if param.stop_gradient is False: + self._shadow[name] = param.numpy().copy() def update(self): - """ - Update Exponential Moving Average. Should only call this method in - train program. - """ - param_master_emas = [] - for param, tmp in self._params_tmps: - with param.block.program._optimized_guard( - [param, tmp]), name_scope('moving_average'): - param_ema = self._ema_vars[param.name] - if param.name + '.master' in self._ema_vars: - master_ema = self._ema_vars[param.name + '.master'] - param_master_emas.append([param_ema, master_ema]) - else: - ema_t = param_ema * self._decay_var + param * ( - 1 - self._decay_var) - layers.assign(input=ema_t, output=param_ema) + decay = min(self._decay, (1 + self._update_step) / ( + 10 + self._update_step)) if self._thres_steps else self._decay + for name, param in self._model.named_parameters(): + if param.stop_gradient is False: + assert name in self._shadow + new_val = np.array(param.numpy().copy()) + old_val = np.array(self._shadow[name]) + new_average = decay * old_val + (1 - decay) * new_val + self._shadow[name] = new_average + self._update_step += 1 + return decay - # for fp16 params - for param_ema, master_ema in param_master_emas: - default_main_program().global_block().append_op( - type="cast", - inputs={"X": master_ema}, - outputs={"Out": param_ema}, - attrs={ - "in_dtype": master_ema.dtype, - "out_dtype": param_ema.dtype - }) + def apply(self): + for name, param in self._model.named_parameters(): + if param.stop_gradient is False: + assert name in self._shadow + self._backup[name] = np.array(param.numpy().copy()) + param.set_value(np.array(self._shadow[name])) - @signature_safe_contextmanager - def apply(self, executor, need_restore=True): - """ - Apply moving average to parameters for evaluation. - Args: - executor (Executor): The Executor to execute applying. - need_restore (bool): Whether to restore parameters after applying. - """ - executor.run(self.apply_program) - try: - yield - finally: - if need_restore: - self.restore(executor) - - def restore(self, executor): - """Restore parameters. - Args: - executor (Executor): The Executor to execute restoring. - """ - executor.run(self.restore_program) + def restore(self): + for name, param in self._model.named_parameters(): + if param.stop_gradient is False: + assert name in self._backup + param.set_value(self._backup[name]) + self._backup = {} diff --git a/tools/ema_clean.py b/tools/ema_clean.py deleted file mode 100644 index 39570dfa4..000000000 --- a/tools/ema_clean.py +++ /dev/null @@ -1,48 +0,0 @@ -#copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve. -# -#Licensed under the Apache License, Version 2.0 (the "License"); -#you may not use this file except in compliance with the License. -#You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -#Unless required by applicable law or agreed to in writing, software -#distributed under the License is distributed on an "AS IS" BASIS, -#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -#See the License for the specific language governing permissions and -#limitations under the License. - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import os -import argparse -import functools -import shutil -import sys - -def main(): -""" -Usage: when training with flag use_ema, and evaluating EMA model, should clean the saved model at first. - To generate clean model: - - python ema_clean.py ema_model_dir cleaned_model_dir -""" - cleaned_model_dir = sys.argv[1] - ema_model_dir = sys.argv[2] - if not os.path.exists(cleaned_model_dir): - os.makedirs(cleaned_model_dir) - - items = os.listdir(ema_model_dir) - for item in items: - if item.find('ema') > -1: - item_clean = item.replace('_ema_0', '') - shutil.copyfile(os.path.join(ema_model_dir, item), - os.path.join(cleaned_model_dir, item_clean)) - elif item.find('mean') > -1 or item.find('variance') > -1: - shutil.copyfile(os.path.join(ema_model_dir, item), - os.path.join(cleaned_model_dir, item)) - -if __name__ == '__main__': - main() diff --git a/tools/infer/infer.py b/tools/infer/infer.py index 1e8b96422..a49f06b5f 100644 --- a/tools/infer/infer.py +++ b/tools/infer/infer.py @@ -13,7 +13,7 @@ # limitations under the License. import numpy as np -import argparse +import cv2 import utils import shutil import os @@ -30,56 +30,6 @@ from paddle.distributed import ParallelEnv import paddle.nn.functional as F -def parse_args(): - def str2bool(v): - return v.lower() in ("true", "t", "1") - - parser = argparse.ArgumentParser() - parser.add_argument("-i", "--image_file", type=str) - parser.add_argument("-m", "--model", type=str) - parser.add_argument("-p", "--pretrained_model", type=str) - parser.add_argument("--class_num", type=int, default=1000) - parser.add_argument("--use_gpu", type=str2bool, default=True) - parser.add_argument( - "--load_static_weights", - type=str2bool, - default=False, - help='Whether to load the pretrained weights saved in static mode') - - # parameters for pre-label the images - parser.add_argument( - "--pre_label_image", - type=str2bool, - default=False, - help="Whether to pre-label the images using the loaded weights") - parser.add_argument("--pre_label_out_idr", type=str, default=None) - - return parser.parse_args() - - -def create_operators(): - size = 224 - img_mean = [0.485, 0.456, 0.406] - img_std = [0.229, 0.224, 0.225] - img_scale = 1.0 / 255.0 - - decode_op = utils.DecodeImage() - resize_op = utils.ResizeImage(resize_short=256) - crop_op = utils.CropImage(size=(size, size)) - normalize_op = utils.NormalizeImage( - scale=img_scale, mean=img_mean, std=img_std) - totensor_op = utils.ToTensor() - - return [decode_op, resize_op, crop_op, normalize_op, totensor_op] - - -def preprocess(fname, ops): - data = open(fname, 'rb').read() - for op in ops: - data = op(data) - return data - - def postprocess(outputs, topk=5): output = outputs[0] prob = np.array(output).flatten() @@ -112,8 +62,7 @@ def save_prelabel_results(class_id, input_filepath, output_idr): def main(): - args = parse_args() - operators = create_operators() + args = utils.parse_args() # assign the place place = 'gpu:{}'.format(ParallelEnv().dev_id) if args.use_gpu else 'cpu' place = paddle.set_device(place) @@ -122,7 +71,8 @@ def main(): load_dygraph_pretrain(net, args.pretrained_model, args.load_static_weights) image_list = get_image_list(args.image_file) for idx, filename in enumerate(image_list): - data = preprocess(filename, operators) + img = cv2.imread(filename)[:, :, ::-1] + data = utils.preprocess(img, args) data = np.expand_dims(data, axis=0) data = paddle.to_tensor(data) net.eval() diff --git a/tools/infer/predict.py b/tools/infer/predict.py index ca80b4096..870b51890 100644 --- a/tools/infer/predict.py +++ b/tools/infer/predict.py @@ -12,35 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argparse -import utils +import sys +sys.path.insert(0, ".") +import tools.infer.utils as utils import numpy as np +import cv2 import time from paddle.inference import Config from paddle.inference import create_predictor -def parse_args(): - def str2bool(v): - return v.lower() in ("true", "t", "1") - - parser = argparse.ArgumentParser() - parser.add_argument("-i", "--image_file", type=str) - parser.add_argument("-m", "--model_file", type=str) - parser.add_argument("-p", "--params_file", type=str) - parser.add_argument("-b", "--batch_size", type=int, default=1) - parser.add_argument("--use_fp16", type=str2bool, default=False) - parser.add_argument("--use_gpu", type=str2bool, default=True) - parser.add_argument("--ir_optim", type=str2bool, default=True) - parser.add_argument("--use_tensorrt", type=str2bool, default=False) - parser.add_argument("--gpu_mem", type=int, default=8000) - parser.add_argument("--enable_benchmark", type=str2bool, default=False) - parser.add_argument("--model_name", type=str) - - return parser.parse_args() - - def create_paddle_predictor(args): config = Config(args.model_file, args.params_file) @@ -65,33 +47,7 @@ def create_paddle_predictor(args): return predictor -def create_operators(): - size = 224 - img_mean = [0.485, 0.456, 0.406] - img_std = [0.229, 0.224, 0.225] - img_scale = 1.0 / 255.0 - - decode_op = utils.DecodeImage() - resize_op = utils.ResizeImage(resize_short=256) - crop_op = utils.CropImage(size=(size, size)) - normalize_op = utils.NormalizeImage( - scale=img_scale, mean=img_mean, std=img_std) - totensor_op = utils.ToTensor() - - return [decode_op, resize_op, crop_op, normalize_op, totensor_op] - - -def preprocess(fname, ops): - data = open(fname, 'rb').read() - for op in ops: - data = op(data) - - return data - - -def main(): - args = parse_args() - +def main(args): if not args.enable_benchmark: assert args.batch_size == 1 assert args.use_fp16 is False @@ -102,7 +58,6 @@ def main(): if args.use_fp16 is True: assert args.use_tensorrt is True - operators = create_operators() predictor = create_paddle_predictor(args) input_names = predictor.get_input_names() @@ -114,7 +69,15 @@ def main(): test_num = 500 test_time = 0.0 if not args.enable_benchmark: - inputs = preprocess(args.image_file, operators) + # for PaddleHubServing + if args.hubserving: + img = args.image_file + # for predict only + else: + img = cv2.imread(args.image_file)[:, :, ::-1] + assert img is not None, "Error in loading image: {}".format( + args.image_file) + inputs = utils.preprocess(img, args) inputs = np.expand_dims( inputs, axis=0).repeat( args.batch_size, axis=0).copy() @@ -123,12 +86,7 @@ def main(): predictor.run() output = output_tensor.copy_to_cpu() - output = output.flatten() - cls = np.argmax(output) - score = output[cls] - print("Current image file: {}".format(args.image_file)) - print("\ttop-1 class: {0}".format(cls)) - print("\ttop-1 score: {0}".format(score)) + return utils.postprocess(output, args) else: for i in range(0, test_num + 10): inputs = np.random.rand(args.batch_size, 3, 224, @@ -152,4 +110,8 @@ def main(): if __name__ == "__main__": - main() + args = utils.parse_args() + classes, scores = main(args) + print("Current image file: {}".format(args.image_file)) + print("\ttop-1 class: {0}".format(classes[0])) + print("\ttop-1 score: {0}".format(scores[0])) diff --git a/tools/infer/utils.py b/tools/infer/utils.py index 6c4a75e1a..33950aeca 100644 --- a/tools/infer/utils.py +++ b/tools/infer/utils.py @@ -12,23 +12,82 @@ # See the License for the specific language governing permissions and # limitations under the License. +import argparse import cv2 import numpy as np -class DecodeImage(object): - def __init__(self, to_rgb=True): - self.to_rgb = to_rgb +def parse_args(): + def str2bool(v): + return v.lower() in ("true", "t", "1") - def __call__(self, img): - data = np.frombuffer(img, dtype='uint8') - img = cv2.imdecode(data, 1) - if self.to_rgb: - assert img.shape[2] == 3, 'invalid shape of image[%s]' % ( - img.shape) - img = img[:, :, ::-1] + # general params + parser = argparse.ArgumentParser() + parser.add_argument("-i", "--image_file", type=str) + parser.add_argument("--use_gpu", type=str2bool, default=True) - return img + # params for preprocess + parser.add_argument("--resize_short", type=int, default=256) + parser.add_argument("--resize", type=int, default=224) + parser.add_argument("--normalize", type=str2bool, default=True) + + # params for predict + parser.add_argument("--model_file", type=str) + parser.add_argument("--params_file", type=str) + parser.add_argument("-b", "--batch_size", type=int, default=1) + parser.add_argument("--use_fp16", type=str2bool, default=False) + parser.add_argument("--ir_optim", type=str2bool, default=True) + parser.add_argument("--use_tensorrt", type=str2bool, default=False) + parser.add_argument("--gpu_mem", type=int, default=8000) + parser.add_argument("--enable_benchmark", type=str2bool, default=False) + parser.add_argument("--model_name", type=str) + parser.add_argument("--top_k", type=int, default=1) + parser.add_argument("--hubserving", type=str2bool, default=False) + + # params for infer + parser.add_argument("--model", type=str) + parser.add_argument("--pretrained_model", type=str) + parser.add_argument("--class_num", type=int, default=1000) + parser.add_argument( + "--load_static_weights", + type=str2bool, + default=False, + help='Whether to load the pretrained weights saved in static mode') + + # parameters for pre-label the images + parser.add_argument( + "--pre_label_image", + type=str2bool, + default=False, + help="Whether to pre-label the images using the loaded weights") + parser.add_argument("--pre_label_out_idr", type=str, default=None) + + return parser.parse_args() + + +def preprocess(img, args): + resize_op = ResizeImage(resize_short=args.resize_short) + img = resize_op(img) + crop_op = CropImage(size=(args.resize, args.resize)) + img = crop_op(img) + if args.normalize: + img_mean = [0.485, 0.456, 0.406] + img_std = [0.229, 0.224, 0.225] + img_scale = 1.0 / 255.0 + normalize_op = NormalizeImage( + scale=img_scale, mean=img_mean, std=img_std) + img = normalize_op(img) + tensor_op = ToTensor() + img = tensor_op(img) + return img + + +def postprocess(output, args): + output = output.flatten() + classes = np.argpartition(output, -args.top_k)[-args.top_k:] + classes = classes[np.argsort(-output[classes])] + scores = output[classes] + return classes, scores class ResizeImage(object): @@ -82,3 +141,15 @@ class ToTensor(object): def __call__(self, img): img = img.transpose((2, 0, 1)) return img + + +class Base64ToCV2(object): + def __init__(self): + pass + + def __call__(self, b64str): + import base64 + data = base64.b64decode(b64str.encode('utf8')) + data = np.fromstring(data, np.uint8) + data = cv2.imdecode(data, cv2.IMREAD_COLOR)[:, :, ::-1] + return data diff --git a/tools/test_hubserving.py b/tools/test_hubserving.py new file mode 100644 index 000000000..f47e78055 --- /dev/null +++ b/tools/test_hubserving.py @@ -0,0 +1,98 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +__dir__ = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(__dir__) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) + +from ppcls.utils import logger +import cv2 +import time +import requests +import json +import base64 +import imghdr + + +def get_image_file_list(img_file): + imgs_lists = [] + if img_file is None or not os.path.exists(img_file): + raise Exception("not found any img file in {}".format(img_file)) + + img_end = {'jpg', 'bmp', 'png', 'jpeg', 'rgb', 'tif', 'tiff', 'gif', 'GIF'} + if os.path.isfile(img_file) and imghdr.what(img_file) in img_end: + imgs_lists.append(img_file) + elif os.path.isdir(img_file): + for single_file in os.listdir(img_file): + file_path = os.path.join(img_file, single_file) + if imghdr.what(file_path) in img_end: + imgs_lists.append(file_path) + if len(imgs_lists) == 0: + raise Exception("not found any img file in {}".format(img_file)) + return imgs_lists + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def main(url, image_path, top_k=1): + image_file_list = get_image_file_list(image_path) + headers = {"Content-type": "application/json"} + cnt = 0 + total_time = 0 + all_acc = 0.0 + + for image_file in image_file_list: + img = open(image_file, 'rb').read() + if img is None: + logger.info("error in loading image:{}".format(image_file)) + continue + data = {'images': [cv2_to_base64(img)], 'top_k': top_k} + + starttime = time.time() + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + assert r.status_code == 200, "Request error, status_code: {}".format( + r.status_code) + elapse = time.time() - starttime + total_time += elapse + + res = r.json()["results"][0] + classes = res[0] + scores = res[1] + all_acc += scores[0] + cnt += 1 + + scores = map(lambda x: round(x, 5), scores) + results = dict(zip(classes, scores)) + + file_str = image_file.split('/')[-1] + message = "No.{}, File:{}, The top-{} result(s):{}, Time cost:{:.3f}".format( + cnt, file_str, top_k, results, elapse) + logger.info(message) + + logger.info("The average time cost: {}".format(float(total_time) / cnt)) + logger.info("The average top-1 accuracy: {}".format(float(all_acc) / cnt)) + + +if __name__ == '__main__': + if len(sys.argv) != 3 and len(sys.argv) != 4: + logger.info("Usage: %s server_url image_path" % sys.argv[0]) + else: + server_url = sys.argv[1] + image_path = sys.argv[2] + top_k = int(sys.argv[3]) if len(sys.argv) == 4 else 1 + main(server_url, image_path, top_k)