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")
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")
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")
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')