docstr: :param confidence_threshold: float; threshold for confidence of the panoptic segmentator to allow for
  the instance.
  :param rigidness_mode: RigidnessMode object
      when soft, checks intersection only with the object from which the mask_object was produced
      when rigid, checks intersection with any foreground class object
  :param max_object_area: float; allowed upper bound for to be considered as mask_object.
  :param min_mask_area: float; lower bound for mask to be considered valid
  :param downsample_levels: int; defines width of the resized segmentation to obtain shifted masks;
  :param num_variants_per_mask: int; maximal number of the masks for the same object;
  :param max_mask_intersection: float; maximum allowed area fraction of intersection for 2 masks
  produced by horizontal shift of the same mask_object; higher value -> more diversity
  :param max_foreground_coverage: float; maximum allowed area fraction of intersection for foreground object to be
  covered by mask; lower value -> less the objects are covered
  :param max_foreground_intersection: float; maximum allowed area of intersection for the mask with foreground
  object; lower value -> mask is more on the background than on the objects
  :param max_hidden_area: upper bound on part of the object hidden by shifting object outside the screen area;
  :param max_scale_change: allowed scale change for the mask_object;
  :param horizontal_flip: if horizontal flips are allowed;
  :param max_vertical_shift: amount of vertical movement allowed;
  :param position_shuffle: shuffle
docstr_tok: [":","param","confidence_threshold",":","float",";","threshold","for","confidence","of","the","panoptic","segmentator","to","allow","for","the","instance",".",":","param","rigidness_mode",":","RigidnessMode","object","when","soft",",","checks","intersection","only","with","the","object","from","which","the","mask_object","was","produced","when","rigid",",","checks","intersection","with","any","foreground","class","object",":","param","max_object_area",":","float",";","allowed","upper","bound","for","to","be","considered","as","mask_object",".",":","param","min_mask_area",":","float",";","lower","bound","for","mask","to","be","considered","valid",":","param","downsample_levels",":","int",";","defines","width","of","the","resized","segmentation","to","obtain","shifted","masks",";",":","param","num_variants_per_mask",":","int",";","maximal","number","of","the","masks","for","the","same","object",";",":","param","max_mask_intersection",":","float",";","maximum","allowed","area","fraction","of","intersection","for","2","masks","produced","by","horizontal","shift","of","the","same","mask_object",";","higher","value","-",">","more","diversity",":","param","max_foreground_coverage",":","float",";","maximum","allowed","area","fraction","of","intersection","for","foreground","object","to","be","covered","by","mask",";","lower","value","-",">","less","the","objects","are","covered",":","param","max_foreground_intersection",":","float",";","maximum","allowed","area","of","intersection","for","the","mask","with","foreground","object",";","lower","value","-",">","mask","is","more","on","the","background","than","on","the","objects",":","param","max_hidden_area",":","upper","bound","on","part","of","the","object","hidden","by","shifting","object","outside","the","screen","area",";",":","param","max_scale_change",":","allowed","scale","change","for","the","mask_object",";",":","param","horizontal_flip",":","if","horizontal","flips","are","allowed",";",":","param","max_vertical_shift",":","amount","of","vertical","movement","allowed",";",":","param","position_shuffle",":","shuffle"]
code: def __init__(
      self,
      confidence_threshold=0.5,
      rigidness_mode=RigidnessMode.rigid,
      max_object_area=0.3,
      min_mask_area=0.02,
      downsample_levels=6,
      num_variants_per_mask=4,
      max_mask_intersection=0.5,
      max_foreground_coverage=0.5,
      max_foreground_intersection=0.5,
      max_hidden_area=0.2,
      max_scale_change=0.25,
      horizontal_flip=True,
      max_vertical_shift=0.1,
      position_shuffle=True,
  ):
      """
      :param confidence_threshold: float; threshold for confidence of the panoptic segmentator to allow for
      the instance.
      :param rigidness_mode: RigidnessMode object
          when soft, checks intersection only with the object from which the mask_object was produced
          when rigid, checks intersection with any foreground class object
      :param max_object_area: float; allowed upper bound for to be considered as mask_object.
      :param min_mask_area: float; lower bound for mask to be considered valid
      :param downsample_levels: int; defines width of the resized segmentation to obtain shifted masks;
      :param num_variants_per_mask: int; maximal number of the masks for the same object;
      :param max_mask_intersection: float; maximum allowed area fraction of intersection for 2 masks
      produced by horizontal shift of the same mask_object; higher value -> more diversity
      :param max_foreground_coverage: float; maximum allowed area fraction of intersection for foreground object to be
      covered by mask; lower value -> less the objects are covered
      :param max_foreground_intersection: float; maximum allowed area of intersection for the mask with foreground
      object; lower value -> mask is more on the background than on the objects
      :param max_hidden_area: upper bound on part of the object hidden by shifting object outside the screen area;
      :param max_scale_change: allowed scale change for the mask_object;
      :param horizontal_flip: if horizontal flips are allowed;
      :param max_vertical_shift: amount of vertical movement allowed;
      :param position_shuffle: shuffle
      """
  
      assert (
          DETECTRON_INSTALLED
      ), "Cannot use SegmentationMask without detectron2"
      self.cfg = get_cfg()
      self.cfg.merge_from_file(
          model_zoo.get_config_file(
              "COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml"
          )
      )
      self.cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(
          "COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml"
      )
      self.cfg.MODEL.PANOPTIC_FPN.COMBINE.INSTANCES_CONFIDENCE_THRESH = (
          confidence_threshold
      )
      self.predictor = DefaultPredictor(self.cfg)
  
      self.rigidness_mode = RigidnessMode(rigidness_mode)
      self.max_object_area = max_object_area
      self.min_mask_area = min_mask_area
      self.downsample_levels = downsample_levels
      self.num_variants_per_mask = num_variants_per_mask
      self.max_mask_intersection = max_mask_intersection
      self.max_foreground_coverage = max_foreground_coverage
      self.max_foreground_intersection = max_foreground_intersection
      self.max_hidden_area = max_hidden_area
      self.position_shuffle = position_shuffle
  
      self.max_scale_change = max_scale_change
      self.horizontal_flip = horizontal_flip
      self.max_vertical_shift = max_vertical_shift
  
imports: import enum
  from copy import deepcopy
  import numpy
  from skimage import img_as_ubyte
  from skimage.transform import rescale, resize
  from .countless2d import zero_corrected_countless
label_desc: Use image node_id 1 to create a new SegmentationMask object  with example: obj = SegmentationMask(confidence_threshold, rigidness_mode, max_object_area, min_mask_area, downsample_levels, num_variants_per_mask, max_mask_intersection, max_foreground_coverage, max_foreground_intersection, max_hidden_area, max_scale_change, horizontal_flip, max_vertical_shift, position_shuffle)