code: def preprocess(self, image: Image) -> Tuple["torch.Tensor", Dict]:
      image = image.convert("RGB")
      image_info = {"img_size": image.size}
  
      input, image_info = self.transform(image, image_info)
      image_info = {
          key: torch.tensor(val).unsqueeze(0)
          for key, val in image_info.items()
      }
  
      input = torch.tensor(input).unsqueeze(0)
      input = input.float().sub_(self.mean_tensor).div_(self.std_tensor)
  
      return input, image_info
  
file_path: layout-parser/src/layoutparser/models/effdet/layoutmodel.py
imports: from typing import List, Optional, Union, Dict, Any, Tuple
  from PIL import Image
  import numpy
  from .catalog import PathManager, LABEL_MAP_CATALOG, MODEL_CATALOG
  from ..base_layoutmodel import BaseLayoutModel
  from ...elements import Rectangle, TextBlock, Layout
  from ...file_utils import is_effdet_available, is_torch_cuda_available
label_desc: Use image node_id 2 for calling the InputTransform obj's underlying member method code with example usage: obj.preprocess(image) and returns: input,  image_info