class_docstr: Image & mask augmentation that zero out mask and image regions corresponding
  to randomly chosen object instance from mask.
  
  Mask must be single-channel image, zero values treated as background.
  Image can be any number of channels.
  
  Inspired by https://www.kaggle.com/c/severstal-steel-defect-detection/discussion/114254
  
  Args:
      max_objects: Maximum number of labels that can be zeroed out. Can be tuple, in this case it's [min, max]
      image_fill_value: Fill value to use when filling image.
          Can be 'inpaint' to apply inpaining (works only  for 3-chahnel images)
      mask_fill_value: Fill value to use when filling mask.
  
  Targets:
      image, mask
  
  Image types:
      uint8, float32
class_docstr_tok: ["Image","&","mask","augmentation","that","zero","out","mask","and","image","regions","corresponding","to","randomly","chosen","object","instance","from","mask",".","Mask","must","be","single-channel","image",",","zero","values","treated","as","background",".","Image","can","be","any","number","of","channels",".","Inspired","by","https",":","\/\/www.kaggle.com\/c\/severstal-steel-defect-detection\/discussion\/114254","Args",":","max_objects",":","Maximum","number","of","labels","that","can","be","zeroed","out",".","Can","be","tuple",",","in","this","case","it","'s","[","min",",","max","]","image_fill_value",":","Fill","value","to","use","when","filling","image",".","Can","be","'inpaint","'","to","apply","inpaining","(","works","only","for","3-chahnel","images",")","mask_fill_value",":","Fill","value","to","use","when","filling","mask",".","Targets",":","image",",","mask","Image","types",":","uint8",",","float32"]
code: def get_params_dependent_on_targets(self, params) -> Dict[str, Any]:
      mask = params["mask"]
  
      label_image, num_labels = label(mask, return_num=True)
  
      if num_labels == 0:
          dropout_mask = None
      else:
          objects_to_drop = random.randint(
              int(self.max_objects[0]), int(self.max_objects[1])
          )
          objects_to_drop = min(num_labels, objects_to_drop)
  
          if objects_to_drop == num_labels:
              dropout_mask = mask > 0
          else:
              labels_index = random.sample(
                  range(1, num_labels + 1), objects_to_drop
              )
              dropout_mask = np.zeros(
                  (mask.shape[0], mask.shape[1]), dtype=bool
              )
              for label_index in labels_index:
                  dropout_mask |= label_image == label_index
  
      params.update({"dropout_mask": dropout_mask})
      return params
  
file_path: albumentations/albumentations/augmentations/dropout/mask_dropout.py
imports: import random
  from typing import Any, Dict, Optional, Tuple, Union
  import cv2
  import numpy
  from skimage.measure import label
  from ...core.transforms_interface import DualTransform, to_tuple
label_desc: Use image node_id 3 for calling the MaskDropout obj's underlying member method code with example usage: obj.get_params_dependent_on_targets(params) and returns: params