class_docstr: Compose transformation for multi-argument transformations.
  
  Differently from torchvision Compose, this transformation can handle both
  single-element and multi-elements transformations.
  
  For instance, single-element transformations are commonly used in
  classification tasks where there is no need to transform the class label.
  Multi-element transformations are used to transform the image and
  bounding box annotations at the same timein object detection tasks. This
  is needed as applying augmentations (such as flipping) may change the
  position of objects in the image.
  
  This class automatically detects the type of augmentation by inspecting
  its signature. Keyword-only arguments are never filled.
code: def __init__(self, transforms: Sequence[Callable]):
      # skip empty transforms
      transforms = list(filter(lambda x: x is not None, transforms))
      self.transforms = list(transforms)
      self.param_def: List[Tuple[int, int]] = []
  
      self.max_params = -1
      self.min_params = -1
  
      if len(transforms) > 0:
          for tr in transforms:
              self.param_def.append(
                  MultiParamTransformCallable._detect_parameters(tr)
              )
          all_maxes = set([max_p for _, max_p in self.param_def])
          if len(all_maxes) > 1:
              warnings.warn(
                  "Transformations define a different number of parameters. "
                  "This may lead to errors. This warning will only appear"
                  "once.",
                  ComposeMaxParamsWarning,
              )
  
          if -1 in all_maxes:
              self.max_param = (
                  -1
              )  # At least one transform has an *args param
          else:
              self.max_params = max(all_maxes)
          self.min_params = min([min_p for min_p, _ in self.param_def])
  
imports: from abc import ABC, abstractmethod
  import warnings
  from typing import Any, Callable, Iterable, List, Sequence, Tuple, Union
  from inspect import signature, Parameter
  from torchvision.transforms import Compose
label_desc: Use image node_id 1 to create a new MultiParamCompose object from inherited base classes: MultiParamTransform with example: obj = MultiParamCompose(transforms)