def METHOD_NAME(self, input: Dict[str, Any]) -> Dict[str, Any]:
    img = input['img'].astype(np.uint8)
    ori_h, ori_w, _ = img.shape
    img = resize_size(img, size=720)
    img_brg = img[:, :, ::-1]
    # background process
    pad_bg, pad_h, pad_w = padTo16x(img_brg)
    bg_res = self.sess_anime_bg.run(
        self.sess_anime_bg.graph.get_tensor_by_name(
            'model_anime_bg/output_image:0'),
        feed_dict={'model_anime_bg/input_image:0': pad_bg})
    res = bg_res[:pad_h, :pad_w, :]
    landmarks = self.detect_face(img)
    if landmarks is None:
        print('No face detected!')
        return {OutputKeys.OUTPUT_IMG: res}
    for landmark in landmarks:
        # get facial 5 points
        f5p = get_f5p(landmark, img_brg)
        # face alignment
        head_img, trans_inv = warp_and_crop_face(
            img,
            f5p,
            ratio=0.75,
            reference_pts=get_reference_facial_points(default_square=True),
            crop_size=(self.box_width, self.box_width),
            return_trans_inv=True)
        # head process
        head_res = self.sess_anime_head.run(
            self.sess_anime_head.graph.get_tensor_by_name(
                'model_anime_head/output_image:0'),
            feed_dict={
                'model_anime_head/input_image:0': head_img[:, :, ::-1]
            })
        # merge head and background
        head_trans_inv = cv2.warpAffine(
            head_res,
            trans_inv, (np.size(img, 1), np.size(img, 0)),
            borderValue=(0, 0, 0))
        mask = self.global_mask
        mask_trans_inv = cv2.warpAffine(
            mask,
            trans_inv, (np.size(img, 1), np.size(img, 0)),
            borderValue=(0, 0, 0))
        mask_trans_inv = np.expand_dims(mask_trans_inv, 2)
        res = mask_trans_inv * head_trans_inv + (1 - mask_trans_inv) * res
    res = cv2.resize(res, (ori_w, ori_h), interpolation=cv2.INTER_AREA)
    return {OutputKeys.OUTPUT_IMG: res}