nn-common-modules’s documentation!¶
Note
Common modules, blocks and losses which can be reused in a deep neural netwok specifically for segmentation.
1. Losses¶
Description¶
Addition losses module defines classses which are commonly used particularly in segmentation and are not part of standard pytorch library.
Usage¶
Import the package and Instantiate any loss class you want to you:
from nn_common_modules import losses as additional_losses
loss = additional_losses.DiceLoss()
Members¶
-
class
losses.
CombinedLoss
¶ A combination of dice and cross entropy loss
-
forward
(input, target, weight=None)¶ Forward pass
Parameters: - input – torch.tensor (NxCxHxW)
- target – torch.tensor (NxHxW)
- weight – torch.tensor (NxHxW)
Returns: scalar
-
-
class
losses.
CrossEntropyLoss2d
(weight=None)¶ Standard pytorch weighted nn.CrossEntropyLoss
-
forward
(inputs, targets)¶ Forward pass
Parameters: - inputs – torch.tensor (NxC)
- targets – torch.tensor (N)
Returns: scalar
-
-
class
losses.
DiceLoss
(weight=None, size_average=None, reduce=None, reduction='mean')¶ Dice Loss for a batch of samples
-
forward
(output, target, weights=None, ignore_index=None, binary=False)¶ Forward pass
Parameters: - output – NxCxHxW logits
- target – NxHxW LongTensor
- weights – C FloatTensor
- ignore_index – int index to ignore from loss
- binary – bool for binarized one chaneel(C=1) input
Returns: torch.tensor
-
-
class
losses.
FocalLoss
(gamma=2, alpha=None, size_average=True)¶ Focal Loss for Dense Object Detection
-
forward
(input, target)¶ Forward pass
Parameters: - input (torch.tensor) – shape = NxCxHxW
- target (torch.tensor) – shape = NxHxW
Returns: loss value
Return type: torch.tensor
-
-
class
losses.
IoULoss
(weight=None, size_average=None, reduce=None, reduction='mean')¶ IoU Loss for a batch of samples
-
forward
(output, target, weights=None, ignore_index=None)¶ Forward pass
Parameters: - output (torch.tensor [FloatTensor]) – shape = NxCxHxW
- target (torch.tensor [LongTensor]) – shape = NxHxW
- weights (torch.tensor [FloatTensor], optional) – shape = C, defaults to None
- ignore_index (int, optional) – index to ignore from loss, defaults to None
Returns: loss value
Return type: torch.tensor
-
2. Modules¶
Description¶
Building blocks of segmentation neural network
Usage¶
Import the package and Instantiate any module/block class you want to you:
from nn_common_modules import modules as additional_modules
dense_block = additional_modules.DenseBlock(params, se_block_type = 'SSE')
Members¶
-
class
modules.
ClassifierBlock
(params)¶ Last layer
Parameters: params (dict) – { ‘num_channels’:1, ‘num_filters’:64, ‘kernel_c’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
Returns: forward passed tensor Return type: torch.tensor [FloatTensor] -
forward
(input, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- weights (torch.tensor (N), optional) – Weights for classifier regression, defaults to None
Returns: logits
Return type: torch.tensor
-
-
class
modules.
DecoderBlock
(params, se_block_type=None)¶ Dense decoder block with maxunpool and an optional skip connections and SE block
Parameters: - params (dict) –
{ ‘num_channels’:1, ‘num_filters’:64, ‘kernel_h’:5, ‘kernel_w’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: forward passed tensor
Return type: torch.tensor [FloatTensor]
-
forward
(input, out_block=None, indices=None, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- out_block (torch.tensor [FloatTensor], optional) – Tensor for skip connection, shape = (N x C x H x W), defaults to None
- indices (torch.tensor, optional) – Indices used for unpooling operation, defaults to None
- weights (torch.tensor, optional) – Weights used for squeeze and excitation, shape depends on the type of SE block, defaults to None
Returns: Forward passed tensor
Return type: torch.tensor [FloatTensor]
- params (dict) –
-
class
modules.
DenseBlock
(params, se_block_type=None)¶ Block with dense connections
Parameters: - params (dict) –
{ ‘num_channels’:1, ‘num_filters’:64, ‘kernel_h’:5, ‘kernel_w’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: forward passed tensor
Return type: torch.tonsor [FloatTensor]
-
forward
(input)¶ Forward pass
Parameters: input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W) Returns: Forward passed tensor Return type: torch.tensor [FloatTensor]
- params (dict) –
-
class
modules.
EncoderBlock
(params, se_block_type=None)¶ Dense encoder block with maxpool and an optional SE block
Parameters: - params (dict) –
{ ‘num_channels’:1, ‘num_filters’:64, ‘kernel_h’:5, ‘kernel_w’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: output tensor with maxpool, output tensor without maxpool, indices for unpooling
Return type: torch.tensor [FloatTensor], torch.tensor [FloatTensor], torch.tensor [LongTensor]
-
forward
(input, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- weights (torch.tensor, optional) – Weights used for squeeze and excitation, shape depends on the type of SE block, defaults to None
Returns: output tensor with maxpool, output tensor without maxpool, indices for unpooling
Return type: torch.tensor [FloatTensor], torch.tensor [FloatTensor], torch.tensor [LongTensor]
- params (dict) –
-
class
modules.
GenericBlock
(params, se_block_type=None)¶ Generic parent class for a conv encoder/decoder block.
Parameters: - params (dict) – {‘kernel_h’: 5 ‘kernel_w’: 5 ‘num_channels’:64 ‘num_filters’:64 ‘stride_conv’:1 }
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: forward passed tensor
Return type: torch.tensor [FloatTensor]
-
forward
(input, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- weights (torch.tensor [FloatTensor], optional) – Custom weights for convolution, defaults to None
Returns: [description]
Return type: [type]
-
class
modules.
SDnetDecoderBlock
(params, se_block_type=None)¶ Standard decoder block with maxunpool -> skipconnections -> conv -> prelu -> batchnorm, without dense connections and an optional SE blocks
Parameters: - params (dict) –
{ ‘num_channels’:1, ‘num_filters’:64, ‘kernel_h’:5, ‘kernel_w’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: forward passed tensor
Return type: torch.tensor [FloatTensor]
-
forward
(input, out_block=None, indices=None, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- out_block (torch.tensor [FloatTensor], optional) – Tensor for skip connection, shape = (N x C x H x W), defaults to None
- indices (torch.tensor, optional) – Indices used for unpooling operation, defaults to None
- weights (torch.tensor, optional) – Weights used for squeeze and excitation, shape depends on the type of SE block, defaults to None
Returns: Forward pass
Return type: torch.tensor
- params (dict) –
-
class
modules.
SDnetEncoderBlock
(params, se_block_type=None)¶ A standard conv -> prelu -> batchnorm-> maxpool block without dense connections
Parameters: - params (dict) –
{ ‘num_channels’:1, ‘num_filters’:64, ‘kernel_h’:5, ‘kernel_w’:5, ‘stride_conv’:1, ‘pool’:2, ‘stride_pool’:2, ‘num_classes’:28, ‘se_block’: se.SELayer.None, ‘drop_out’:0,2}
- se_block_type (str, valid options are {'NONE', 'CSE', 'SSE', 'CSSE'}, optional) – Squeeze and Excite block type to be included, defaults to None
Returns: output tensor with maxpool, output tensor without maxpool, indices for unpooling
Return type: torch.tensor [FloatTensor], torch.tensor [FloatTensor], torch.tensor [LongTensor]
-
forward
(input, weights=None)¶ Forward pass
Parameters: - input (torch.tensor [FloatTensor]) – Input tensor, shape = (N x C x H x W)
- weights (torch.tensor, optional) – Weights used for squeeze and excitation, shape depends on the type of SE block, defaults to None
Returns: output tensor with maxpool, output tensor without maxpool, indices for unpooling
Return type: torch.tensor [FloatTensor], torch.tensor [FloatTensor], torch.tensor [LongTensor]
- params (dict) –