Example #1
0
    def __init__(self, in_channels):
        super(DACBlock, self).__init__()
        self.conv = base._create_conv_block
        self.path_1 = nn.Sequential(
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 - 1) // 2, 1))
        self.path_2 = nn.Sequential(
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 - 1) // 2, 1),
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 + 3 + 1 - 1) // 2, 3),
            nn.Conv2d(in_channels, in_channels, 1, 1, (1 - 1) // 2, 1))
        self.path_3 = nn.Sequential(
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 - 1) // 2, 1),
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 + 3 + 1 - 1) // 2, 3),
            nn.Conv2d(in_channels, in_channels, 1, 1, (1 - 1) // 2, 1))
        self.path_4 = nn.Sequential(
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 - 1) // 2, 1),
            nn.Conv2d(in_channels, in_channels, 3, 1, (3 + 3 + 1 - 1) // 2, 3),
            nn.Conv2d(in_channels, in_channels, 3, 1, (5 + 5 + 1 - 1) // 2, 5),
            nn.Conv2d(in_channels, in_channels, 1, 1, (1 - 1) // 2, 1))

        for m in self.modules():
            if isinstance(m, nn.Sequential):
                for sub_m in m.modules():
                    if isinstance(sub_m, nn.Conv2d):
                        base.init_weights(sub_m, init_type="kaiming")
                    elif isinstance(sub_m, nn.BatchNorm2d):
                        base.init_weights(sub_m, init_type="kaiming")
Example #2
0
    def __init__(self, in_channels):
        super(RMPBlock, self).__init__()
        self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.pool2 = nn.MaxPool2d(kernel_size=3, stride=3)
        self.pool3 = nn.MaxPool2d(kernel_size=5, stride=5)
        self.pool4 = nn.MaxPool2d(kernel_size=6, stride=6)

        self.conv = nn.Conv2d(in_channels,
                              1,
                              kernel_size=1,
                              stride=1,
                              padding=0)

        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                base.init_weights(m, init_type="kaiming")
            elif isinstance(m, nn.BatchNorm2d):
                base.init_weights(m, init_type="kaiming")
Example #3
0
    def __init__(self, in_channels, ratio=8):
        super(SEBlock, self).__init__()
        self.sq = nn.AdaptiveAvgPool2d((1, 1))
        self.ex = nn.Sequential(
            nn.Linear(in_channels, in_channels // ratio),
            nn.ReLU(inplace=True),
            nn.Linear(in_channels // ratio, in_channels),
            nn.Sigmoid(),
        )

        for m in self.modules():
            if isinstance(m, nn.Sequential):
                for sub_m in m.modules():
                    if isinstance(sub_m, nn.Conv2d):
                        base.init_weights(sub_m, init_type="kaiming")
                    elif isinstance(sub_m, nn.BatchNorm2d):
                        base.init_weights(sub_m, init_type="kaiming")
                    elif isinstance(sub_m, nn.Linear):
                        base.init_weights(sub_m, init_type="kaiming")
Example #4
0
    def __init__(self, in_channels, num_classes, base_channels=64):
        super(UNetPlusPlus, self).__init__()
        self.block_i = 0

        # Downsampling
        self.op0_0 = ConvUnit(in_channels, base_channels)
        self.maxpool0 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.op1_0 = ConvUnit(base_channels, base_channels * 2)
        self.maxpool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.op2_0 = ConvUnit(base_channels * 2, base_channels * 4)
        self.maxpool2 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.op3_0 = ConvUnit(base_channels * 4, base_channels * 8)
        self.maxpool3 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.op4_0 = ConvUnit(base_channels * 8, base_channels * 16)
        self.maxpool4 = nn.MaxPool2d(kernel_size=2, stride=2)

        # Upsampling
        self.op0_1 = ConvUnit(base_channels + base_channels * 2, base_channels)
        self.upsample0_1 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op1_1 = ConvUnit(base_channels * 2 + base_channels * 4,
                              base_channels * 2)
        self.upsample1_1 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op2_1 = ConvUnit(base_channels * 4 + base_channels * 8,
                              base_channels * 4)
        self.upsample2_1 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op3_1 = ConvUnit(base_channels * 8 + base_channels * 16,
                              base_channels * 8)
        self.upsample3_1 = nn.UpsamplingBilinear2d(scale_factor=2)

        self.op0_2 = ConvUnit(base_channels * 2 + base_channels * 2,
                              base_channels)
        self.upsample0_2 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op1_2 = ConvUnit(base_channels * 2 * 2 + base_channels * 4,
                              base_channels * 2)
        self.upsample1_2 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op2_2 = ConvUnit(base_channels * 4 * 2 + base_channels * 8,
                              base_channels * 4)
        self.upsample2_2 = nn.UpsamplingBilinear2d(scale_factor=2)

        self.op0_3 = ConvUnit(base_channels * 3 + base_channels * 2,
                              base_channels)
        self.upsample0_3 = nn.UpsamplingBilinear2d(scale_factor=2)
        self.op1_3 = ConvUnit(base_channels * 2 * 3 + base_channels * 4,
                              base_channels * 2)
        self.upsample1_3 = nn.UpsamplingBilinear2d(scale_factor=2)

        self.op0_4 = ConvUnit(base_channels * 4 + base_channels * 2,
                              base_channels)
        self.upsample0_4 = nn.UpsamplingBilinear2d(scale_factor=2)

        # Multi-task
        self.out_1 = nn.Conv2d(base_channels,
                               num_classes,
                               kernel_size=1,
                               stride=1,
                               padding=0)
        self.out_2 = nn.Conv2d(base_channels,
                               num_classes,
                               kernel_size=1,
                               stride=1,
                               padding=0)
        self.out_3 = nn.Conv2d(base_channels,
                               num_classes,
                               kernel_size=1,
                               stride=1,
                               padding=0)
        self.out_4 = nn.Conv2d(base_channels,
                               num_classes,
                               kernel_size=1,
                               stride=1,
                               padding=0)

        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                base.init_weights(m, init_type='kaiming')
            elif isinstance(m, nn.BatchNorm2d):
                base.init_weights(m, init_type='kaiming')