def __init__(self, params, se_block_type=None): # TODO: params['reduction_ratio'], kernel_d super(FSInputBlock, self).__init__() if se_block_type == se.SELayer.CSE.value: self.SELayer = se.ChannelSELayer(params['num_filters'], reduction_ratio=2) elif se_block_type == se.SELayer.CSSE.value: self.SELayer = se.ChannelSpatialSELayer(params['num_filters'], reduction_ratio=2) elif se_block_type == se.SELayer.SSE.value: self.SELayer = se.SpatialSELayer(params['num_filters']) else: self.SELayer = None padding_h = int((params['kernel_h'] - 1) / 2) padding_w = int((params['kernel_w'] - 1) / 2) conv1_out_size = int(params['num_filters']) conv2_out_size = int(params['num_filters']) self.conv1 = nn.Conv2d(in_channels=params['num_channels'], out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv2 = nn.Conv2d(in_channels=conv1_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv3 = nn.Conv2d(in_channels=conv2_out_size, out_channels=params['num_filters'], kernel_size=(1, 1), padding=(0, 0), stride=params['stride_conv']) self.batchnorm0 = nn.BatchNorm2d(num_features=params['num_channels']) self.batchnorm1 = nn.BatchNorm2d(num_features=conv1_out_size) self.batchnorm2 = nn.BatchNorm2d(num_features=conv2_out_size) self.batchnorm3 = nn.BatchNorm2d(num_features=conv2_out_size) self.prelu = nn.PReLU() if params['drop_out'] > 0: self.drop_out_needed = True self.drop_out = nn.Dropout(params['drop_out']) else: self.drop_out_needed = False self.maxpool = nn.MaxPool2d(kernel_size=params['pool'], stride=params['stride_pool'], return_indices=True)
def __init__(self, params, se_block_type=None): super(DenseBlock, self).__init__() if se_block_type == se.SELayer.CSE.value: self.SELayer = se.ChannelSELayer(params['num_filters']) elif se_block_type == se.SELayer.SSE.value: self.SELayer = se.SpatialSELayer(params['num_filters']) elif se_block_type == se.SELayer.CSSE.value: self.SELayer = se.ChannelSpatialSELayer(params['num_filters']) else: self.SELayer = None padding_h = int((params['kernel_h'] - 1) / 2) padding_w = int((params['kernel_w'] - 1) / 2) conv1_out_size = int(params['num_channels'] + params['num_filters']) conv2_out_size = int(params['num_channels'] + params['num_filters'] + params['num_filters']) self.conv1 = nn.Conv2d(in_channels=params['num_channels'], out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv2 = nn.Conv2d(in_channels=conv1_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv3 = nn.Conv2d(in_channels=conv2_out_size, out_channels=params['num_filters'], kernel_size=(1, 1), padding=(0, 0), stride=params['stride_conv']) # self.norm1 = nn.BatchNorm2d(num_features=params['num_channels'], momentum=0.9) # self.norm2 = nn.BatchNorm2d(num_features=conv1_out_size, momentum=0.9) # self.norm3 = nn.BatchNorm2d(num_features=conv2_out_size, momentum=0.9) # self.norm1 = GroupNorm(num_features=params['num_channels'], num_groups=2) # self.norm2 = GroupNorm(num_features=conv1_out_size, num_groups=2) # self.norm3 = GroupNorm(num_features=conv2_out_size, num_groups=2) self.norm1 = nn.InstanceNorm2d(num_features=params['num_channels']) self.norm2 = nn.InstanceNorm2d(num_features=conv1_out_size) self.norm3 = nn.InstanceNorm2d(num_features=conv2_out_size) self.prelu = nn.PReLU() if params['drop_out'] > 0: self.drop_out_needed = True self.drop_out = nn.Dropout2d(params['drop_out']) else: self.drop_out_needed = False
def __init__(self, params, se_block_type=None, is_decoder=False): super(OctaveDenseBlock, self).__init__() print(se_block_type) if se_block_type == se.SELayer.CSE.value: self.SELayer = se.ChannelSELayer(params['num_filters']) elif se_block_type == se.SELayer.SSE.value: self.SELayer = se.SpatialSELayer(params['num_filters']) elif se_block_type == se.SELayer.CSSE.value: self.SELayer = se.ChannelSpatialSELayer(params['num_filters']) else:abdominal_segmentation_2] - 1) / 2) padding_w = int((params['kernel_w'] - 1) / 2) conv1_out_size = int(params['num_channels'] + params['num_filters']) conv2_out_size = int( params['num_channels'] + params['num_filters'] + params['num_filters'])
def __init__(self, params, se_block_type=None): super(FullBayesianDenseBlock, self).__init__() if se_block_type == se.SELayer.CSE.value: self.SELayer = se.ChannelSELayer(params['num_filters']) elif se_block_type == se.SELayer.SSE.value: self.SELayer = se.SpatialSELayer(params['num_filters']) elif se_block_type == se.SELayer.CSSE.value: self.SELayer = se.ChannelSpatialSELayer(params['num_filters']) else: self.SELayer = None padding_h = int((params['kernel_h'] - 1) / 2) padding_w = int((params['kernel_w'] - 1) / 2) conv1_out_size = int(params['num_channels'] + params['num_filters']) conv2_out_size = int(params['num_filters'] + params['num_filters']) self.conv1_mu = nn.Conv2d(in_channels=params['num_channels'], out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv2_mu = nn.Conv2d(in_channels=conv1_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv3_mu = nn.Conv2d(in_channels=conv2_out_size, out_channels=params['num_filters'], kernel_size=(1, 1), padding=(0, 0), stride=params['stride_conv']) self.conv1_sigma = nn.Conv2d(in_channels=params['num_channels'], out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv2_sigma = nn.Conv2d(in_channels=conv1_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv3_sigma = nn.Conv2d(in_channels=conv2_out_size, out_channels=params['num_filters'], kernel_size=(1, 1), padding=(0, 0), stride=params['stride_conv']) self.tanh = nn.Tanh() self.variance = 0.1 self.normal = tdist.Normal(torch.tensor([0.0]), torch.tensor([self.variance])) if params['drop_out'] > 0: self.drop_out_needed = True self.drop_out = nn.Dropout2d(params['drop_out']) else: self.drop_out_needed = False
def __init__(self, params, se_block_type=None, is_decoder=False): super(OctaveDenseBlock, self).__init__() print(se_block_type) if se_block_type == se.SELayer.CSE.value: self.SELayer = se.ChannelSELayer(params['num_filters']) elif se_block_type == se.SELayer.SSE.value: self.SELayer = se.SpatialSELayer(params['num_filters']) elif se_block_type == se.SELayer.CSSE.value: self.SELayer = se.ChannelSpatialSELayer(params['num_filters']) else: self.SELayer = None padding_h = int((params['kernel_h'] - 1) / 2) padding_w = int((params['kernel_w'] - 1) / 2) conv1_out_size = int(params['num_channels'] + params['num_filters']) conv2_out_size = int(params['num_channels'] + params['num_filters'] + params['num_filters']) self.conv1 = OctConv2d('first', in_channels=params['num_channels'], out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv2 = OctConv2d('regular', in_channels=conv1_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.conv3 = OctConv2d('last', in_channels=conv2_out_size, out_channels=params['num_filters'], kernel_size=(params['kernel_h'], params['kernel_w']), padding=(padding_h, padding_w), stride=params['stride_conv']) self.avgpool1 = nn.AvgPool2d(2) alpha_in, alpha_out = 0.5, 0.5 if is_decoder: self.batchnorm1 = nn.BatchNorm2d(params['num_channels']) oct_unit_decoder_channel_size = params['num_channels'] // 4 self.batchnorm2_h = nn.BatchNorm2d( int(oct_unit_decoder_channel_size * 3)) self.batchnorm2_l = nn.BatchNorm2d( int(oct_unit_decoder_channel_size * 3)) self.batchnorm3_h = nn.BatchNorm2d( int(oct_unit_decoder_channel_size * 4)) self.batchnorm3_l = nn.BatchNorm2d( int(oct_unit_decoder_channel_size * 4)) else: self.batchnorm1 = nn.BatchNorm2d(params['num_channels']) oct_unit_encoder_channel_size = params['num_channels'] // 2 self.batchnorm2_h = nn.BatchNorm2d( int(oct_unit_encoder_channel_size * 2)) self.batchnorm2_l = nn.BatchNorm2d( int(oct_unit_encoder_channel_size * 2)) self.batchnorm3_h = nn.BatchNorm2d( int(oct_unit_encoder_channel_size * 3)) self.batchnorm3_l = nn.BatchNorm2d( int(oct_unit_encoder_channel_size * 3)) self.prelu = nn.PReLU() self.prelu_h = nn.PReLU() self.prelu_l = nn.PReLU() if params['drop_out'] > 0: self.drop_out_needed = True self.drop_out = nn.Dropout2d(params['drop_out']) else: self.drop_out_needed = False