BatchIntersectDecode2D
- class hybrid_learning.datasets.transforms.encoder.BatchIntersectDecode2D(proto_shape=None, kernel_size=None)[source]
Bases:
BatchConvOpGiven batch of IoU encoded masks, estimates the original segmentation mask.
This estimation is done by
“bloating” each pixel: Create a mask with the
proto_shapeat the pixel’s location, with theproto_shapeweighted by the pixel valueadding up all bloated pixel masks to obtain one mask
Consider the convolution that describes the IoU encoding of the given mask. Then above steps can be simplified to a convolution with kernel and padding the ones from the encoding convolution but
kernel and padding flipped along each dimension; in 2D, the two flips are equivalent to a rotation by 180°,
kernel normalized by L1 norm (after that, the values in the convolution sum up to 1)
Derivation
The decoder formulas can be derived as follows: Consider a pixel \(p\) in the to be estimated segmentation mask, and its coordinates \((p_{a})_{a \in \text{axes}}\) with image axes being the axes describing a single image, e.g. in 2D
(width, height). The bloat mask of a pixel \(p^{iou}\) in the IoU encoded mask can only contribute to the value of \(p\) if theproto_shapecentered at \(p^{iou}\) would reach to \(p\), i.e. if the distance to \(p\) in each image axis \(a\) is\[\begin{split}- \text{ceil}(0.5 \cdot (\text{proto_shape_size}[a] - 1)) &\leq p_{a} - p^{iou}_{a} \\ &\leq \text{floor}(0.5 \cdot (\text{proto_shape_size}[a] - 1))\end{split}\]where \(p_{a} - p^{iou}_{a} < 0\) means \(p^{iou}\) is left of \(p\), and right else. This describes a kernel of the same size as the IoU encoding kernel but with padding flipped in each dimension. The kernel entries, i.e. the contribution of \(p^{iou}\) in kernel position \((pos_{a})_{a \in \text{axes}}\) to \(p\), are:
\[\begin{split}\text{proto_shape}[ (p_{a} - p^{iou}_{a} + \text{floor}(0.5 \cdot (\text{proto_shape_size}[a] - 1))_{a} ] \\ = \text{proto_shape}[(\text{proto_shape_size}[a] - pos_{a})_{a}]\end{split}\]which is the
proto_shapekernel of the IoU encoding but flipped in each dimension.Public Data Attributes:
The kernel of the decoder (flipped and normalized IoU encoding proto shape).
The (L1-normalized) proto shape used for the IoU encoding.
Inherited from : py: class:BatchConvOp
The (L1-normalized) proto shape used for the IoU encoding.
kernel_sizeThe kernel size of the proto-type shape.
settingsSettings to reproduce the instance.
Inherited from : py: class:BatchWindowOp
AREA_DIMSIndices of axes in which the image area is defined.
kernel_sizeThe kernel size of the proto-type shape.
settingsSettings to reproduce the instance.
Public Methods:
conv_op(masks)Forward pass: Apply decoding convolution
Inherited from : py: class:BatchWindowOp
forward(masks)Wrapper for the convolutional operation on batch of masks.
conv_op(masks)Forward pass: Apply decoding convolution
Inherited from : py: class:Module
forward(masks)Wrapper for the convolutional operation on batch of masks.
register_buffer(name, tensor[, persistent])Adds a buffer to the module.
register_parameter(name, param)Adds a parameter to the module.
add_module(name, module)Adds a child module to the current module.
get_submodule(target)Returns the submodule given by
targetif it exists, otherwise throws an error.get_parameter(target)Returns the parameter given by
targetif it exists, otherwise throws an error.get_buffer(target)Returns the buffer given by
targetif it exists, otherwise throws an error.apply(fn)Applies
fnrecursively to every submodule (as returned by.children()) as well as self.cuda([device])Moves all model parameters and buffers to the GPU.
xpu([device])Moves all model parameters and buffers to the XPU.
cpu()Moves all model parameters and buffers to the CPU.
type(dst_type)Casts all parameters and buffers to
dst_type.float()Casts all floating point parameters and buffers to
floatdatatype.double()Casts all floating point parameters and buffers to
doubledatatype.half()Casts all floating point parameters and buffers to
halfdatatype.bfloat16()Casts all floating point parameters and buffers to
bfloat16datatype.to_empty(*, device)Moves the parameters and buffers to the specified device without copying storage.
to(*args, **kwargs)Moves and/or casts the parameters and buffers.
register_backward_hook(hook)Registers a backward hook on the module.
register_full_backward_hook(hook)Registers a backward hook on the module.
register_forward_pre_hook(hook)Registers a forward pre-hook on the module.
register_forward_hook(hook)Registers a forward hook on the module.
state_dict([destination, prefix, keep_vars])Returns a dictionary containing a whole state of the module.
load_state_dict(state_dict[, strict])Copies parameters and buffers from
state_dictinto this module and its descendants.parameters([recurse])Returns an iterator over module parameters.
named_parameters([prefix, recurse])Returns an iterator over module parameters, yielding both the name of the parameter as well as the parameter itself.
buffers([recurse])Returns an iterator over module buffers.
named_buffers([prefix, recurse])Returns an iterator over module buffers, yielding both the name of the buffer as well as the buffer itself.
children()Returns an iterator over immediate children modules.
named_children()Returns an iterator over immediate children modules, yielding both the name of the module as well as the module itself.
modules()Returns an iterator over all modules in the network.
named_modules([memo, prefix, remove_duplicate])Returns an iterator over all modules in the network, yielding both the name of the module as well as the module itself.
train([mode])Sets the module in training mode.
eval()Sets the module in evaluation mode.
requires_grad_([requires_grad])Change if autograd should record operations on parameters in this module.
zero_grad([set_to_none])Sets gradients of all model parameters to zero.
share_memory()extra_repr()Set the extra representation of the module
Special Methods:
__init__([proto_shape, kernel_size])Init.
Inherited from : py: class:BatchWindowOp
__repr__()Representation based on this instances settings.
Inherited from : py: class:Module
__init__([proto_shape, kernel_size])Init.
__call__(*input, **kwargs)Call self as a function.
__setstate__(state)__getattr__(name)__setattr__(name, value)Implement setattr(self, name, value).
__delattr__(name)Implement delattr(self, name).
__repr__()Representation based on this instances settings.
__dir__()Default dir() implementation.
- decoder_conv
Convolution to calculate the intersection for each location of proto_shape
- property decoding_proto_shape: numpy.ndarray
The kernel of the decoder (flipped and normalized IoU encoding proto shape).
- padding
Padding to obtain same size as input after convolution
- property proto_shape: numpy.ndarray
The (L1-normalized) proto shape used for the IoU encoding.