diff --git a/python/examples/cascade_rcnn/README.md b/python/examples/cascade_rcnn/README.md new file mode 100644 index 0000000000000000000000000000000000000000..87617a842fcdb78d039b71634521c9d370f755fa --- /dev/null +++ b/python/examples/cascade_rcnn/README.md @@ -0,0 +1,21 @@ +# Cascade RCNN model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get The Cascade RCNN Model +``` +sh get_data.sh +``` +If you want to have more detection models, please refer to [Paddle Detection Model Zoo](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) + +### Start the service +``` +python -m paddle_serving_server_gpu.serve --model serving_server --port 9292 --gpu_id 0 +``` + +### Perform prediction +``` +python test_client.py +``` + +Image with bounding boxes and json result would be saved in `output` folder. diff --git a/python/examples/cascade_rcnn/README_CN.md b/python/examples/cascade_rcnn/README_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..a37cb47331ce516c15587c6b2d8b9072c4d878f1 --- /dev/null +++ b/python/examples/cascade_rcnn/README_CN.md @@ -0,0 +1,21 @@ +# 使用Paddle Serving部署Cascade RCNN模型 + +(简体中文|[English](./README.md)) + +## 获得Cascade RCNN模型 +``` +sh get_data.sh +``` +如果你想要更多的检测模型,请参考[Paddle检测模型库](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) + +### 启动服务 +``` +python -m paddle_serving_server_gpu.serve --model serving_server --port 9292 --gpu_id 0 +``` + +### 执行预测 +``` +python test_client.py +``` + +客户端已经为图片做好了后处理,在`output`文件夹下存放各个框的json格式信息还有后处理结果图片。 diff --git a/python/examples/cascade_rcnn/get_data.sh b/python/examples/cascade_rcnn/get_data.sh new file mode 100644 index 0000000000000000000000000000000000000000..0aa9c7dc340367790eb52f5cc0074cb5d6fd0d05 --- /dev/null +++ b/python/examples/cascade_rcnn/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/cascade_rcnn_r50_fpx_1x_serving.tar.gz +tar xf cascade_rcnn_r50_fpx_1x_serving.tar.gz diff --git a/python/paddle_serving_app/reader/image_reader.py b/python/paddle_serving_app/reader/image_reader.py index 8791e94ba8456f25deed1cbd5a2262218327c44e..a5afb9c84743fe401ab62608b7b38b5ccd6623ae 100644 --- a/python/paddle_serving_app/reader/image_reader.py +++ b/python/paddle_serving_app/reader/image_reader.py @@ -465,6 +465,24 @@ class Resize(object): _cv2_interpolation_to_str[self.interpolation]) +class PadStride(object): + def __init__(self, stride): + self.coarsest_stride = stride + + def __call__(self, img): + coarsest_stride = self.coarsest_stride + if coarsest_stride == 0: + return img + im_c, im_h, im_w = img.shape + pad_h = int(np.ceil(float(im_h) / coarsest_stride) * coarsest_stride) + pad_w = int(np.ceil(float(im_w) / coarsest_stride) * coarsest_stride) + padding_im = np.zeros((im_c, pad_h, pad_w), dtype=np.float32) + padding_im[:, :im_h, :im_w] = img + im_info = {} + im_info['resize_shape'] = padding_im.shape[1:] + return padding_im + + class Transpose(object): def __init__(self, transpose_target): self.transpose_target = transpose_target