Skip to content

Cutout

dataphy.visionpack.tforms.cutout

Classes

Cutout(holes: int = 2, size_range: Union[Tuple[int, int], List[int]] = (16, 32), size_units: Literal['px', 'percent'] = 'px', aspect_ratio_range: Optional[List[float]] = None, shape: Literal['rect', 'ellipse', 'stripe', 'grid'] = 'rect', rotation_deg: float = 0.0, fill_mode: Literal['zeros', 'mean', 'random', 'noise', 'blur'] = 'zeros', fill_value: Optional[float] = None, soft_edges: float = 0.0, position_bias: Literal['center', 'edges', 'uniform'] = 'uniform', target_masks_only: bool = False, depth_fill: Literal['nan', 'const', 'interp'] = 'nan', occlusion_budget: float = 1.0, **kwargs: Any)

Bases: BaseTransform

Source code in src/dataphy/visionpack/tforms/cutout.py
def __init__(
    self,
    holes: int = 2,
    size_range: Union[Tuple[int, int], List[int]] = (16, 32),
    size_units: Literal["px", "percent"] = "px",
    aspect_ratio_range: Optional[List[float]] = None,
    shape: Literal["rect", "ellipse", "stripe", "grid"] = "rect",
    rotation_deg: float = 0.0,
    fill_mode: Literal["zeros", "mean", "random", "noise", "blur"] = "zeros",
    fill_value: Optional[float] = None,
    soft_edges: float = 0.0,
    position_bias: Literal["center", "edges", "uniform"] = "uniform",
    target_masks_only: bool = False,
    depth_fill: Literal["nan", "const", "interp"] = "nan",
    occlusion_budget: float = 1.0,
    **kwargs: Any
):
    super().__init__(**kwargs)
    self.holes = holes
    self.size_range = list(size_range) if isinstance(size_range, tuple) else size_range
    self.size_units = size_units
    self.aspect_ratio_range = aspect_ratio_range or [0.75, 1.33]
    self.shape = shape
    self.rotation_deg = rotation_deg
    self.fill_mode = fill_mode
    self.fill_value = fill_value if fill_value is not None else 0.0
    self.soft_edges = soft_edges
    self.position_bias = position_bias
    self.target_masks_only = target_masks_only
    self.depth_fill = depth_fill
    self.occlusion_budget = occlusion_budget
Attributes
holes = holes instance-attribute
size_range = list(size_range) if isinstance(size_range, tuple) else size_range instance-attribute
size_units = size_units instance-attribute
aspect_ratio_range = aspect_ratio_range or [0.75, 1.33] instance-attribute
shape = shape instance-attribute
rotation_deg = rotation_deg instance-attribute
fill_mode = fill_mode instance-attribute
fill_value = fill_value if fill_value is not None else 0.0 instance-attribute
soft_edges = soft_edges instance-attribute
position_bias = position_bias instance-attribute
target_masks_only = target_masks_only instance-attribute
depth_fill = depth_fill instance-attribute
occlusion_budget = occlusion_budget instance-attribute
p = p instance-attribute
apply_to = apply_to if apply_to is not None else ['rgb'] instance-attribute
sync_views = sync_views instance-attribute
update_intrinsics = update_intrinsics instance-attribute
mask_protect = mask_protect if mask_protect is not None else [] instance-attribute
min_visible_mask_pct = min_visible_mask_pct instance-attribute
resample = resample instance-attribute
border_mode = border_mode instance-attribute
pad_mode = pad_mode instance-attribute
pad_value = pad_value instance-attribute
seed_policy = seed_policy instance-attribute
Functions
forward(batch: Dict[str, Any]) -> Dict[str, Any]

Base forward method that handles cross-cutting logic.

Source code in src/dataphy/visionpack/tforms/base.py
def forward(self, batch: Dict[str, Any]) -> Dict[str, Any]:
    """Base forward method that handles cross-cutting logic."""
    if not self._should_apply():
        return batch

    # Setup seed policy
    episode_id = batch.get("episode_id")
    self._setup_seed(episode_id)

    # Apply transform
    return self._apply_transform(batch)