class Classify(object): def __init__(self, model_path, model_width, model_height): self.device_id = 0 self.context = None self.stream = None self._model_path = model_path self._model_width = model_width self._model_height = model_height self._dvpp = None def __del__(self): if self._model: del self._model if self._dvpp: del self._dvpp if self.stream: acl.rt.destroy_stream(self.stream) if self.context: acl.rt.destroy_context(self.context) acl.rt.reset_device(self.device_id) acl.finalize() print("[Sample] class Samle release source success") def destroy(self): self.__del__ def _init_resource(self): print("[Sample] init resource stage:") #ret = acl.init() #check_ret("acl.rt.set_device", ret) ret = acl.rt.set_device(self.device_id) check_ret("acl.rt.set_device", ret) self.context, ret = acl.rt.create_context(self.device_id) check_ret("acl.rt.create_context", ret) self.stream, ret = acl.rt.create_stream() check_ret("acl.rt.create_stream", ret) self.run_mode, ret = acl.rt.get_run_mode() check_ret("acl.rt.get_run_mode", ret) print("Init resource stage success") def init(self): self._init_resource() self._dvpp = Dvpp(self.stream, self.run_mode) ret = self._dvpp.init_resource() if ret != SUCCESS: print("Init dvpp failed") return FAILED self._model = Model(self.run_mode, self._model_path) ret = self._model.init_resource() if ret != SUCCESS: print("Init model failed") return FAILED return SUCCESS def pre_process(self, image): yuv_image = self._dvpp.jpegd(image) print("decode jpeg end") resized_image = self._dvpp.resize(yuv_image, self._model_width, self._model_height) print("resize yuv end") return resized_image def inference(self, resized_image): return self._model.execute(resized_image.data(), resized_image.size) def post_process(self, infer_output, image_file): print("post process") data = infer_output[0] vals = data.flatten() top_k = vals.argsort()[-1:-6:-1] print("images:{}".format(image_file)) print("======== top5 inference results: =============") for n in top_k: object_class = get_image_net_class(n) print("label:%d confidence: %f, class: %s" % (n, vals[n], object_class)) object_class = get_image_net_class(top_k[0]) return object_class
class Classify(object): def __init__(self, model_path, model_width, model_height): self.device_id = 0 self.context = None self.stream = None self._model = None self.run_mode = None self._model_path = model_path self._model_width = model_width self._model_height = model_height self._dvpp = None def __del__(self): if self._model: del self._model if self._dvpp: del self._dvpp if self.stream: acl.rt.destroy_stream(self.stream) if self.context: acl.rt.destroy_context(self.context) acl.rt.reset_device(self.device_id) acl.finalize() print("[Sample] Sample release source success") def _init_resource(self): print("[Sample] init resource stage:") ret = acl.init() check_ret("acl.rt.set_device", ret) ret = acl.rt.set_device(self.device_id) check_ret("acl.rt.set_device", ret) self.context, ret = acl.rt.create_context(self.device_id) check_ret("acl.rt.create_context", ret) self.stream, ret = acl.rt.create_stream() check_ret("acl.rt.create_stream", ret) self.run_mode, ret = acl.rt.get_run_mode() check_ret("acl.rt.get_run_mode", ret) print("Init resource stage success") def init(self): self._init_resource() self._dvpp = Dvpp(self.stream, self.run_mode) ret = self._dvpp.init_resource() if ret != SUCCESS: print("Init dvpp failed") return FAILED self._model = Model(self.run_mode, self._model_path) ret = self._model.init_resource() if ret != SUCCESS: print("Init model failed") return FAILED return SUCCESS def pre_process(self, image): yuv_image = self._dvpp.jpegd(image) print("decode jpeg end") resized_image = self._dvpp.resize(yuv_image, self._model_width, self._model_height) print("resize yuv end") return resized_image def inference(self, resized_image): return self._model.execute(resized_image.data(), resized_image.size) def post_process(self, infer_output, image_file): print("post process") data = infer_output[0] vals = data.flatten() top_k = vals.argsort()[-1:-6:-1] object_class = get_image_net_class(top_k[0]) output_path = os.path.join(os.path.join(SRC_PATH, "../outputs/"), 'out_' + os.path.basename(image_file)) origin_img = Image.open(image_file) draw = ImageDraw.Draw(origin_img) font = ImageFont.load_default() font.size = 50 draw.text((10, 50), object_class, font=font, fill=255) origin_img.save(output_path) object_class = get_image_net_class(top_k[0]) return object_class
class Cartoonization(object): def __init__(self, model_path, model_width, model_height): self.device_id = 0 self.context = None self.stream = None self._model_path = model_path self._model_width = model_width self._model_height = model_height self._dvpp = None def __del__(self): if self._model: del self._model if self._dvpp: del self._dvpp if self.stream: acl.rt.destroy_stream(self.stream) if self.context: acl.rt.destroy_context(self.context) acl.rt.reset_device(self.device_id) acl.finalize() print("[Sample] class Samle release source success") def _init_resource(self): print("[Sample] init resource stage:") ret = acl.init() check_ret("acl.rt.set_device", ret) ret = acl.rt.set_device(self.device_id) check_ret("acl.rt.set_device", ret) self.context, ret = acl.rt.create_context(self.device_id) check_ret("acl.rt.create_context", ret) self.stream, ret = acl.rt.create_stream() check_ret("acl.rt.create_stream", ret) self.run_mode, ret = acl.rt.get_run_mode() check_ret("acl.rt.get_run_mode", ret) print("[Sample] Init resource stage success") def init(self): # init acl resource self._init_resource() self._dvpp = Dvpp(self.stream, self.run_mode) # init dvpp ret = self._dvpp.init_resource() if ret != SUCCESS: print("Init dvpp failed") return FAILED # load model self._model = Model(self.run_mode, self._model_path) ret = self._model.init_resource() if ret != SUCCESS: print("Init model failed") return FAILED return SUCCESS def pre_process(self, image): yuv_image = self._dvpp.jpegd(image) crop_and_paste_image = \ self._dvpp.crop_and_paste(yuv_image, image.width, image.height, self._model_width, self._model_height) print("[Sample] crop_and_paste yuv end") return crop_and_paste_image def inference(self, resized_image): return self._model.execute(resized_image.data(), resized_image.size) def post_process(self, infer_output, image_file, origin_image): print("[Sample] post process") data = ((np.squeeze(infer_output[0]) + 1) * 127.5) img = cv2.cvtColor(data, cv2.COLOR_RGB2BGR) img = cv2.resize(img, (origin_image.width, origin_image.height)) output_path = os.path.join("../outputs", os.path.basename(image_file)) cv2.imwrite(output_path, img)