コード例 #1
0
    def __init__(self, params, se_block_type=None):
        super(GenericBlock, self).__init__()
        if se_block_type == se.SELayer.CSE.value:
            self.SELayer = se.ChannelSpatialSELayer(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)
        self.out_channel = params['num_filters']
        self.conv = 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.prelu = nn.PReLU()
        self.batchnorm = nn.BatchNorm2d(num_features=params['num_filters'])
        if params['drop_out'] > 0:
            self.drop_out_needed = True
            self.drop_out = nn.Dropout2d(params['drop_out'])
        else:
            self.drop_out_needed = False
コード例 #2
0
    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)
コード例 #3
0
    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
コード例 #4
0
    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'])
コード例 #5
0
    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):
     super(FewShotSegmentorBaseLine, self).__init__()
     self.conditioner = Conditioner(params)
     self.segmentor = Segmentor(params)
     self.SELayer = se.ChannelSpatialSELayer(params['num_filters'])
     self.weights = []
コード例 #7
0
    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