From 72c6191e2eba3fa63dbea100e07c0750d13d882a Mon Sep 17 00:00:00 2001 From: wangjiawei04 Date: Wed, 1 Jul 2020 14:05:03 +0800 Subject: [PATCH] add blazeface --- .../paddle_serving_app/models/model_list.py | 3 ++- .../paddle_serving_app/reader/functional.py | 1 + .../paddle_serving_app/reader/image_reader.py | 25 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/python/paddle_serving_app/models/model_list.py b/python/paddle_serving_app/models/model_list.py index 79b3f91b..c5e78c25 100644 --- a/python/paddle_serving_app/models/model_list.py +++ b/python/paddle_serving_app/models/model_list.py @@ -24,7 +24,8 @@ class ServingModels(object): "SentimentAnalysis"] = ["senta_bilstm", "senta_bow", "senta_cnn"] self.model_dict["SemanticRepresentation"] = ["ernie"] self.model_dict["ChineseWordSegmentation"] = ["lac"] - self.model_dict["ObjectDetection"] = ["faster_rcnn", "yolov4"] + self.model_dict[ + "ObjectDetection"] = ["faster_rcnn", "yolov4", "blazeface"] self.model_dict["ImageSegmentation"] = [ "unet", "deeplabv3", "deeplabv3+cityscapes" ] diff --git a/python/paddle_serving_app/reader/functional.py b/python/paddle_serving_app/reader/functional.py index 4240641d..7bab279c 100644 --- a/python/paddle_serving_app/reader/functional.py +++ b/python/paddle_serving_app/reader/functional.py @@ -29,6 +29,7 @@ def normalize(img, mean, std, channel_first): else: img_mean = np.array(mean).reshape((1, 1, 3)) img_std = np.array(std).reshape((1, 1, 3)) + img = np.array(img).astype("float32") img -= img_mean img /= img_std return img diff --git a/python/paddle_serving_app/reader/image_reader.py b/python/paddle_serving_app/reader/image_reader.py index a44ca5de..80e193e6 100644 --- a/python/paddle_serving_app/reader/image_reader.py +++ b/python/paddle_serving_app/reader/image_reader.py @@ -440,8 +440,33 @@ class RCNNPostprocess(object): self.label_file, self.output_dir) +class BlazeFacePostprocess(RCNNPostprocess): + def clip_bbox(self, bbox, im_size=None): + h = 1. if im_size is None else im_size[0] + w = 1. if im_size is None else im_size[1] + xmin = max(min(bbox[0], w), 0.) + ymin = max(min(bbox[1], h), 0.) + xmax = max(min(bbox[2], w), 0.) + ymax = max(min(bbox[3], h), 0.) + return xmin, ymin, xmax, ymax + + def _get_bbox_result(self, fetch_map, fetch_name, clsid2catid): + result = {} + is_bbox_normalized = True #for blaze face, set true here + output = fetch_map[fetch_name] + lod = [fetch_map[fetch_name + '.lod']] + lengths = self._offset_to_lengths(lod) + np_data = np.array(output) + result['bbox'] = (np_data, lengths) + result['im_id'] = np.array([[0]]) + result["im_shape"] = np.array(fetch_map["im_shape"]).astype(np.int32) + bbox_results = self._bbox2out([result], clsid2catid, is_bbox_normalized) + return bbox_results + + class Sequential(object): """ + Args: sequence (sequence of ``Transform`` objects): list of transforms to chain. -- GitLab