class_docstr: Distort the input image randomly.
  
  Args:
      lower(float): The lower bound value for enhancement, default is 0.5.
      upper(float): The upper bound value for enhancement, default is 1.5.
  
  Returns:
      img(np.ndarray): Distorted image.
      data(dict): Image info and label info.
class_docstr_tok: ["Distort","the","input","image","randomly",".","Args",":","lower","(","float",")",":","The","lower","bound","value","for","enhancement",",","default","is","0.5.","upper","(","float",")",":","The","upper","bound","value","for","enhancement",",","default","is","1.5",".","Returns",":","img","(","np.ndarray",")",":","Distorted","image",".","data","(","dict",")",":","Image","info","and","label","info","."]
code: def __call__(self, img: np.ndarray, data: dict):
      ops = [
          self.random_brightness,
          self.random_contrast,
          self.random_color,
      ]
      np.random.shuffle(ops)
      img = PIL.Image.fromarray(img)
      img = ops[0](img)
      img = ops[1](img)
      img = ops[2](img)
      img = np.asarray(img)
  
      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 5 for calling the RandomDistort obj's underlying member method code with example usage: obj.__call__(img, data) and returns: img,  data