class_docstr: Apply a list of transforms on multi-crop input. The transforms
  are Randomly applied to each crop using the specified probability.
  This is used in BYOL https://arxiv.org/pdf/2006.07733.pdf
  
  Multi-crops are several crops of a given image. This is most commonly
  used in contrastive learning. For example SimCLR, SwAV approaches use
  multi-crop input.
code: def _build_transform(self, transforms: List[Dict[str, Any]]):
      out_transforms = []
      for transform_config in transforms:
          out_transforms.append(build_transform(transform_config))
      out_transform = pth_transforms.Compose(out_transforms)
  
      self.transforms = []
      for idx in range(len(self.prob)):
          self.transforms.append(
              pth_transforms.RandomApply(
                  [out_transform], p=self.prob[idx]
              )
          )
  
file_path: vissl/vissl/data/ssl_transforms/img_pil_multicrop_random_apply.py
imports: import logging
  from typing import Any, Dict, List
  import torchvision.transforms
  from classy_vision.dataset.transforms import build_transform, register_transform
  from classy_vision.dataset.transforms.classy_transform import ClassyTransform
  from PIL import Image
label_desc: Use image node_id 2 for calling the ImgPilMultiCropRandomApply obj's underlying member method code with example usage: obj._build_transform(transforms) without return types