code: def run(self, source, reference):
      source = Image.fromarray(source)
      reference = Image.fromarray(reference)
      inference = Inference(self.cfg, self.weight_path)
      postprocess = PostProcess(self.cfg)
  
      # Transfer the psgan from reference to source.
      image, face = inference.transfer(
          source, reference, with_face=True
      )
      source_crop = source.crop(
          (face.left(), face.top(), face.right(), face.bottom())
      )
      image = postprocess(source_crop, image)
      image = np.array(image)
      return image
  
imports: import argparse
  import os
  import sys
  from pathlib import Path
  import numpy
  import paddle
  import paddle.vision.transforms
  import ppgan.faceutils
  from paddle.utils.download import get_weights_path_from_url
  from PIL import Image
  from ppgan.models.builder import build_model
  from ppgan.utils.config import get_config
  from ppgan.utils.filesystem import load
  from ppgan.utils.options import parse_args
  from ppgan.utils.preprocess import *
label_desc: Use image node_id 2 for calling the PSGANPredictor obj's underlying member method code with example usage: obj.run(source, reference) and returns: image