def build(self):
        slab_input = Input(shape=self.input_shapes[0])
        slice_input = Input(shape=self.input_shapes[1])

        slab_path = CBR(slab_input, 32, (1, 1, 5), padding='valid')
        slab_path = CBR(slab_path, 1, (1, 1, 1), padding='valid')
        slab_path = Reshape(self.input_shapes[1])(slab_path)

        combined = Concatenate(axis=2)([slice_input, slab_path])

        block_A = CBR_2D(combined, 16, (3, 3), padding='valid')
        block_A = CBR_2D(block_A, 32, (3, 3), padding='valid')

        block_B = MaxPooling2D(pool_size=(2, 2))(block_A)
        block_B = CBR_2D(block_B, 32, (3, 3), padding='valid')
        block_B = CBR_2D(block_B, 64, (3, 3), padding='valid')

        block_C = MaxPooling2D(pool_size=(2, 2))(block_B)
        block_C = CBR_2D(block_C, 64, (3, 3), padding='valid')
        block_C = CBR_2D(block_C, 128, (3, 3), padding='valid')

        block_D = MaxPooling2D(pool_size=(2, 2))(block_C)
        block_D = CBR_2D(block_D, 128, (3, 3), padding='valid')
        block_D = CBR_2D(block_D, 64, (3, 3), padding='valid')

        fc = Flatten()(block_D)
        fc = Dropout(0.25)(fc)
        fc = Dense(256, activation='relu')(fc)
        discrim_output = Dense(1, activation='sigmoid')(fc)
        self.output_name = discrim_output.name.split('/')[0]
        self.model = keras.Model(inputs=[slab_input, slice_input], outputs=[discrim_output], name='network')
示例#2
0
    def __init__(self, in_ch, out_ch):
        super().__init__()
        #self.gpu_ids = gpu_ids

        self.c0_0 = CBR(in_ch,
                        32,
                        bn=False,
                        sample='down',
                        activation=nn.LeakyReLU(0.2, True),
                        dropout=False)
        self.c0_1 = CBR(out_ch,
                        32,
                        bn=False,
                        sample='down',
                        activation=nn.LeakyReLU(0.2, True),
                        dropout=False)
        self.c1 = CBR(64,
                      128,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c2 = CBR(128,
                      256,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c3 = CBR(256,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c4 = nn.Conv2d(512, 1, 3, 1, 1)
    def build(self):
        wmn_input = Input(shape=self.input_shape)

        block_A = CBR(wmn_input, 16, (3, 3, 3))
        block_A = CBR(block_A, 32, (3, 3, 3))

        block_B = MaxPooling3D(pool_size=(2, 2, 1))(block_A)
        block_B = CBR(block_B, 32, (3, 3, 3))
        block_B = CBR(block_B, 64, (3, 3, 3))

        block_C = MaxPooling3D(pool_size=(2, 2, 1))(block_B)
        block_C = CBR(block_C, 64, (3, 3, 3))
        block_C = CBR(block_C, 128, (3, 3, 3))
        block_C = Dropout(rate=self.dropout_rate)(block_C)
        block_C = Conv3DTranspose(filters=64, kernel_size=(3, 3, 3), strides=(2, 2, 1), padding='same')(block_C)

        block_D = Concatenate()([block_C, block_B])
        block_D = CBR(block_D, 64, (3, 3, 3))
        block_D = CBR(block_D, 64, (3, 3, 3))
        block_D = Conv3DTranspose(filters=32, kernel_size=(3, 3, 3), strides=(2, 2, 1), padding='same')(block_D)

        block_E = Concatenate()([block_D, block_A])
        block_E = CBR(block_E, 32, (3, 3, 3))
        block_E = CBR(block_E, 32, (3, 3, 3))

        if self.single_slice_out:
            block_E = Conv3D(filters=32, kernel_size=(1, 1, 5))(block_E)
            csfn_output = Conv3D(filters=1, kernel_size=(1, 1, 1))(block_E)
            csfn_output = Reshape((256, 256, 1))(csfn_output)
        else:
            csfn_output = Conv3D(filters=1, kernel_size=(1, 1, 1))(block_E)
        self.csfn_output_name = csfn_output.name.split('/')[0]

        self.model = keras.Model(inputs=[wmn_input], outputs=[csfn_output], name='network')
示例#4
0
    def __init__(self, in_ch, out_ch):
        super().__init__()

        self.c0 = nn.Conv2d(in_ch, 64, 3, 1, 1)
        self.c1 = CBR(64,
                      128,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c2 = CBR(128,
                      256,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c3 = CBR(256,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c4 = CBR(512,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c5 = CBR(512,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c6 = CBR(512,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)
        self.c7 = CBR(512,
                      512,
                      bn=True,
                      sample='down',
                      activation=nn.LeakyReLU(0.2, True),
                      dropout=False)

        self.dc0 = CBR(512,
                       512,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=True)
        self.dc1 = CBR(1024,
                       512,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=True)
        self.dc2 = CBR(1024,
                       512,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=True)
        self.dc3 = CBR(1024,
                       512,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=False)
        self.dc4 = CBR(1024,
                       256,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=False)
        self.dc5 = CBR(512,
                       128,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=False)
        self.dc6 = CBR(256,
                       64,
                       bn=True,
                       sample='up',
                       activation=nn.ReLU(True),
                       dropout=False)
        self.dc7 = nn.Conv2d(128, out_ch, 3, 1, 1)