class_docstr: Augmentation defines (often random) policies/strategies to generate :class:`Transform`
  from data. It is often used for pre-processing of input data.
  
  A "policy" that generates a :class:`Transform` may, in the most general case,
  need arbitrary information from input data in order to determine what transforms
  to apply. Therefore, each :class:`Augmentation` instance defines the arguments
  needed by its :meth:`get_transform` method. When called with the positional arguments,
  the :meth:`get_transform` method executes the policy.
  
  Note that :class:`Augmentation` defines the policies to create a :class:`Transform`,
  but not how to execute the actual transform operations to those data.
  Its :meth:`__call__` method will use :meth:`AugInput.transform` to execute the transform.
  
  The returned `Transform` object is meant to describe deterministic transformation, which means
  it can be re-applied on associated data, e.g. the geometry of an image and its segmentation
  masks need to be transformed together.
  (If such re-application is not needed, then determinism is not a crucial requirement.)
code: def _init(self, params=None):
      if params:
          for k, v in params.items():
              if k != "self" and not k.startswith("_"):
                  setattr(self, k, v)
  
imports: import inspect
  import numpy
  import pprint
  from typing import Any, List, Optional, Tuple, Union
  from fvcore.transforms.transform import Transform, TransformList
label_desc: Use image node_id 1 for calling the Augmentation obj's underlying member method code with example usage: obj._init(params) without return types