diff --git a/python/examples/imagenet/image_classification_service.py b/python/examples/imagenet/image_classification_service.py deleted file mode 100644 index 81169d6bdafa7024f2b997c48c0abdc04411e391..0000000000000000000000000000000000000000 --- a/python/examples/imagenet/image_classification_service.py +++ /dev/null @@ -1,41 +0,0 @@ -# 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. - -from paddle_serving_server.web_service import WebService -import sys -import cv2 -import base64 -import numpy as np -from paddle_serving_app import ImageReader - - -class ImageService(WebService): - def preprocess(self, feed={}, fetch=[]): - reader = ImageReader() - feed_batch = [] - for ins in feed: - if "image" not in ins: - raise ("feed data error!") - sample = base64.b64decode(ins["image"]) - img = reader.process_image(sample) - feed_batch.append({"image": img}) - return feed_batch, fetch - - -image_service = ImageService(name="image") -image_service.load_model_config(sys.argv[1]) -image_service.prepare_server( - workdir=sys.argv[2], port=int(sys.argv[3]), device="cpu") -image_service.run_server() -image_service.run_flask() diff --git a/python/examples/imagenet/image_classification_service_gpu.py b/python/examples/imagenet/image_classification_service_gpu.py deleted file mode 100644 index 7cb973547982877a50e86062fe187233a32065e6..0000000000000000000000000000000000000000 --- a/python/examples/imagenet/image_classification_service_gpu.py +++ /dev/null @@ -1,42 +0,0 @@ -# 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 sys -import cv2 -import base64 -import numpy as np -from paddle_serving_app import ImageReader -from paddle_serving_server_gpu.web_service import WebService - - -class ImageService(WebService): - def preprocess(self, feed={}, fetch=[]): - reader = ImageReader() - feed_batch = [] - for ins in feed: - if "image" not in ins: - raise ("feed data error!") - sample = base64.b64decode(ins["image"]) - img = reader.process_image(sample) - feed_batch.append({"image": img}) - return feed_batch, fetch - - -image_service = ImageService(name="image") -image_service.load_model_config(sys.argv[1]) -image_service.set_gpus("0,1") -image_service.prepare_server( - workdir=sys.argv[2], port=int(sys.argv[3]), device="gpu") -image_service.run_server() -image_service.run_flask() diff --git a/python/examples/imagenet/image_reader.py b/python/examples/imagenet/image_reader.py deleted file mode 100644 index 843d9417ba37601232cb640d55f1d03f38cd7f76..0000000000000000000000000000000000000000 --- a/python/examples/imagenet/image_reader.py +++ /dev/null @@ -1,99 +0,0 @@ -# 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 cv2 -import numpy as np - - -class ImageReader(): - def __init__(self): - self.image_mean = [0.485, 0.456, 0.406] - self.image_std = [0.229, 0.224, 0.225] - self.image_shape = [3, 224, 224] - self.resize_short_size = 256 - self.interpolation = None - - def resize_short(self, img, target_size, interpolation=None): - """resize image - - Args: - img: image data - target_size: resize short target size - interpolation: interpolation mode - - Returns: - resized image data - """ - percent = float(target_size) / min(img.shape[0], img.shape[1]) - resized_width = int(round(img.shape[1] * percent)) - resized_height = int(round(img.shape[0] * percent)) - if interpolation: - resized = cv2.resize( - img, (resized_width, resized_height), - interpolation=interpolation) - else: - resized = cv2.resize(img, (resized_width, resized_height)) - return resized - - def crop_image(self, img, target_size, center): - """crop image - - Args: - img: images data - target_size: crop target size - center: crop mode - - Returns: - img: cropped image data - """ - height, width = img.shape[:2] - size = target_size - if center == True: - w_start = (width - size) // 2 - h_start = (height - size) // 2 - else: - w_start = np.random.randint(0, width - size + 1) - h_start = np.random.randint(0, height - size + 1) - w_end = w_start + size - h_end = h_start + size - img = img[h_start:h_end, w_start:w_end, :] - return img - - def process_image(self, sample): - """ process_image """ - mean = self.image_mean - std = self.image_std - crop_size = self.image_shape[1] - - data = np.fromstring(sample, np.uint8) - img = cv2.imdecode(data, cv2.IMREAD_COLOR) - - if img is None: - print("img is None, pass it.") - return None - - if crop_size > 0: - target_size = self.resize_short_size - img = self.resize_short( - img, target_size, interpolation=self.interpolation) - img = self.crop_image(img, target_size=crop_size, center=True) - - img = img[:, :, ::-1] - - img = img.astype('float32').transpose((2, 0, 1)) / 255 - img_mean = np.array(mean).reshape((3, 1, 1)) - img_std = np.array(std).reshape((3, 1, 1)) - img -= img_mean - img /= img_std - return img