训练的图片多标签识别模型,使用paddleserving部署模型,预测结果和在本地使用命令行预测结果不一致

#2013 · closed · 1 comments

View on GitHub ↗

syge

PaddleClas:2.5.2 PaddleServing:paddlepaddle/serving:0.7.0-devel 以下是classification_web_service.py脚本内容 class ImagenetOp(Op): def init_op(self): self.seq = Sequential([ Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) ]) self.label_dict = {} label_idx = 0 with open("gas.label") as fin: for line in fin: self.label_dict[label_idx] = line.strip() label_idx += 1 def preprocess(self, input_dicts, data_id, log_id): (_, input_dict), = input_dicts.items() batch_size = len(input_dict.keys()) imgs = [] for key in input_dict.keys(): data = base64.b64decode(input_dict[key].encode('utf8')) data = np.fromstring(data, np.uint8) im = cv2.imdecode(data, cv2.IMREAD_COLOR) img = self.seq(im) imgs.append(img[np.newaxis, :].copy()) input_imgs = np.concatenate(imgs, axis=0) return {"x": input_imgs}, False, None, "" def postprocess(self, input_dicts, fetch_dict, data_id, log_id): score_list = fetch_dict["prediction"] result = {"scores": str(score_list)} return result, None, "" class ImageService(WebService): def get_pipeline_response(self, read_op): image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) return image_op uci_service = ImageService(name="imagenet") uci_service.prepare_pipeline_config("config.yml") uci_service.run_service()

Comments

github-actions[bot]

Message that will be displayed on users' first issue