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