class_docstr: Flip the images and gt boxes randomly.
  
  Args:
      thresh: Probability for random flip.
  
  Returns:
      img(np.ndarray): Distorted image.
      data(dict): Image info and label info.
class_docstr_tok: ["Flip","the","images","and","gt","boxes","randomly",".","Args",":","thresh",":","Probability","for","random","flip",".","Returns",":","img","(","np.ndarray",")",":","Distorted","image",".","data","(","dict",")",":","Image","info","and","label","info","."]
code: def __call__(self, img, data):
      gtboxes = data["gt_boxes"]
      if random.random() > self.thresh:
          img = img[:, ::-1, :]
          gtboxes[:, 0] = 1.0 - gtboxes[:, 0]
      data["gt_boxes"] = gtboxes
      return img, data
  
imports: import os
  import random
  from typing import Callable
  import cv2
  import PIL
  import numpy
  import paddlehub.vision.transforms.functional
  from paddlehub.vision.utils import box_crop, box_iou_xywh
label_desc: Use image node_id 2 for calling the RandomFlip obj's underlying member method code with example usage: obj.__call__(img, data) and returns: img,  data