docstr: Process a sample.
  Args:
      sample (dict): a dict of sample, eg: {'image':xx, 'label': xxx}
      context (dict): info about this sample processing
  Returns:
      result (dict): a processed sample
docstr_tok: ["Process","a","sample",".","Args",":","sample","(","dict",")",":","a","dict","of","sample",",","eg",":","{","'image","'",":","xx",",","'label","'",":","xxx","}","context","(","dict",")",":","info","about","this","sample","processing","Returns",":","result","(","dict",")",":","a","processed","sample"]
code: def __call__(self, sample, context=None):
      """Process a sample.
      Args:
          sample (dict): a dict of sample, eg: {'image':xx, 'label': xxx}
          context (dict): info about this sample processing
      Returns:
          result (dict): a processed sample
      """
      if isinstance(sample, Sequence):  # for batch_size
          for i in range(len(sample)):
              sample[i] = self.apply(sample[i], context)
      else:
          # image.shape changed
          sample = self.apply(sample, context)
      return sample
  
imports: from __future__ import absolute_import
  import cv2
  import numpy
  import math
  import copy
  import random
  import uuid
  from numbers import Number, Integral
  from ...modeling.keypoint_utils import get_affine_mat_kernel, warp_affine_joints, get_affine_transform, affine_transform, get_warp_matrix
  from ppdet.core.workspace import serializable
  from ppdet.utils.logger import setup_logger
  import matplotlib.pyplot
  from PIL import Image, ImageDraw
  from mpl_toolkits.mplot3d import Axes3D
label_desc: Use image node_id 3 for calling the BaseOperator obj's underlying member method code with example usage: obj.__call__(sample, context) and returns: sample