Example #1
0
def build_generator():
    # specify hyperparameters
    z_size = 200
    gen_filters = [512, 256, 128, 64, 1]
    gen_kernel_sizes = [4, 4, 4, 4, 4]
    gen_strides = [1, 2, 2, 2, 2]
    gen_input_shape = (1, 1, 1, z_size)
    gen_activations = ['relu', 'relu', 'relu', 'relu', 'sigmoid']
    gen_convolutional_blocks = 5

    # create an input layer to allow the network to take input
    input_layer = Input(shape=gen_input_shape)

    # add the first transpose convolution (3D deconvolution) block
    a = Deconv3D(filters=gen_filters[0],
                 kernel_size=gen_kernel_sizes[0],
                 strides=gen_strides[0])(input_layer)
    a = BatchNormalization()(a, training=True)
    a = Activation(activation='relu')(a)

    # add four more 3D transpose convolutions blocks
    for i in range(gen_convolutional_blocks - 1):
        a = Deconv3D(filters=gen_filters[i + 1],
                     kernel_size=gen_kernel_sizes[i + 1],
                     strides=gen_strides[i + 1],
                     padding='same')(a)
        a = BatchNormalization()(a, training=True)
        a = Activation(activation=gen_activations[i + 1])(a)

    # create a Keras model
    gen_model = Model(inputs=[input_layer], outputs=[a])

    return gen_model
Example #2
0
def build_generator():
    """
    Create a Generator Model with hyperparameters values defined as follows
    """
    z_size = 200
    gen_filters = [512, 256, 128, 64, 1]
    gen_kernel_sizes = [4, 4, 4, 4, 4]
    gen_strides = [1, 2, 2, 2, 2]
    gen_input_shape = (1, 1, 1, z_size)
    gen_activations = ['relu', 'relu', 'relu', 'relu', 'sigmoid']
    gen_convolutional_blocks = 5

    input_layer = Input(shape=gen_input_shape)

    # First 3D transpose convolution(or 3D deconvolution) block
    a = Deconv3D(filters=gen_filters[0],
                 kernel_size=gen_kernel_sizes[0],
                 strides=gen_strides[0])(input_layer)
    a = BatchNormalization()(a, training=True)
    a = Activation(activation='relu')(a)

    # Next 4 3D transpose convolution(or 3D deconvolution) blocks
    for i in range(gen_convolutional_blocks - 1):
        a = Deconv3D(filters=gen_filters[i + 1],
                     kernel_size=gen_kernel_sizes[i + 1],
                     strides=gen_strides[i + 1],
                     padding='same')(a)
        a = BatchNormalization()(a, training=True)
        a = Activation(activation=gen_activations[i + 1])(a)

    gen_model = Model(inputs=[input_layer], outputs=[a])
    return gen_model
Example #3
0
def build_generator():
    '''
    Build the Generator Model of the 3D-GAN.
    Returns: Generator Network
    '''

    z_size = 200
    gen_filters = [512, 256, 128, 64, 1]
    gen_kernel_sizes = [4, 4, 4, 4, 4]
    gen_strides = [1, 2, 2, 2, 2]
    gen_input_shape = (1, 1, 1, z_size)
    gen_activations = ['relu', 'relu', 'relu', 'relu', 'sigmoid']
    gen_convolutional_blocks = 5

    input_layer = Input(shape=gen_input_shape)

    # First 3D transpose convolution(or 3D deconvolution) block
    a = Deconv3D(filters=gen_filters[0],
                 kernel_size=gen_kernel_sizes[0],
                 strides=gen_strides[0])(input_layer)
    a = BatchNormalization()(a, training=True)
    a = Activation(activation='relu')(a)

    # Next 4 3D transpose convolution(or 3D deconvolution) blocks
    for i in range(gen_convolutional_blocks - 1):
        a = Deconv3D(filters=gen_filters[i + 1],
                     kernel_size=gen_kernel_sizes[i + 1],
                     strides=gen_strides[i + 1],
                     padding='same')(a)
        a = BatchNormalization()(a, training=True)
        a = Activation(activation=gen_activations[i + 1])(a)

    gen_model = Model(inputs=[input_layer], outputs=[a])
    return gen_model
Example #4
0
def build_generator(phase_train=True,
                    params={
                        'latent_dim': 200,
                        'strides': (2, 2, 2)
                    }):
    l_dim = params['latent_dim']
    strides = params['strides']

    inputs = Input(shape=(l_dim, ))
    reshape = Reshape((22, 4, 1, 1), input_shape=(l_dim, ))(inputs)
    group1 = Deconv3D(512, (2, 2, 2),
                      strides=(2, 2, 2),
                      kernel_initializer='glorot_normal',
                      bias_initializer='zeros')(reshape)
    group1 = BatchNormalization()(group1, training=phase_train)
    group1 = Activation(activation='relu')(group1)

    group2 = Deconv3D(64, (2, 2, 2),
                      strides=(2, 2, 2),
                      kernel_initializer='glorot_normal',
                      bias_initializer='zeros')(group1)
    group2 = BatchNormalization()(group2, training=phase_train)
    group2 = Activation(activation='relu')(group2)

    group3 = Deconv3D(1, (2, 2, 2),
                      strides=(2, 2, 2),
                      kernel_initializer='glorot_normal',
                      bias_initializer='zeros')(group2)
    group3 = BatchNormalization()(group3, training=phase_train)
    group3 = Activation(activation='relu')(group3)

    generator = Model(inputs, group3)
    generator.summary()
    return generator
Example #5
0
def build_model_2():
    model = Sequential()
    model.add(
        Conv3D(32,
               kernel_size=(2, 2, 2),
               padding='same',
               activation='relu',
               input_shape=input_shape))
    model.add(MaxPool3D(pool_size=(2, 2, 2)))
    model.add(
        Conv3D(64, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(MaxPool3D(pool_size=(2, 2, 2)))
    model.add(
        Conv3D(128, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(MaxPool3D(pool_size=(2, 2, 2)))
    model.add(
        Conv3D(256, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(MaxPool3D(pool_size=(2, 2, 2)))
    model.add(
        Conv3D(512, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(MaxPool3D(pool_size=(2, 2, 2)))

    model.add(UpSampling3D(size=(2, 2, 2)))
    model.add(
        Deconv3D(512, kernel_size=(2, 2, 2), padding='same',
                 activation='relu'))
    model.add(UpSampling3D(size=(2, 2, 2)))
    model.add(
        Deconv3D(256, kernel_size=(2, 2, 2), padding='same',
                 activation='relu'))
    model.add(UpSampling3D(size=(2, 2, 2)))
    model.add(
        Deconv3D(128, kernel_size=(2, 2, 2), padding='same',
                 activation='relu'))
    model.add(UpSampling3D(size=(2, 2, 2)))
    model.add(
        Deconv3D(64, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(UpSampling3D(size=(2, 2, 2)))
    model.add(
        Deconv3D(32, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    #        model.add(Deconv3D(1, kernel_size=(2, 2, 2), padding='same', activation='relu'))
    model.add(Dense(1))
    #        model.add(Lambda(lambda x: scale(x)))

    model.compile(loss='mse',
                  metrics=[
                      keras.metrics.MeanIoU(num_classes=2),
                      tf.keras.metrics.MeanSquaredError()
                  ],
                  optimizer='adam')
    model.summary()

    return model
def decoder(phase_train=True,
            params={
                'z_length': 200,
                'strides': (2, 2, 2),
                'kernel_size': (5, 5, 5)
            }):
    ## Decoder, input z vector, output cube.
    z_length = params['z_length']
    strides = params['strides']
    kernel_size = params['kernel_size']

    inputs = Input(shape=(1, 1, 1, z_length))

    dc1 = Deconv3D(filters=256,
                   kernel_size=kernel_size,
                   strides=(1, 1, 1),
                   kernel_initializer='glorot_normal',
                   bias_initializer='zeros',
                   padding='valid')(inputs)
    dc1 = BatchNormalization()(dc1, training=phase_train)
    dc1 = Activation(activation='relu')(dc1)

    dc2 = Deconv3D(filters=128,
                   kernel_size=kernel_size,
                   strides=strides,
                   kernel_initializer='glorot_normal',
                   bias_initializer='zeros',
                   padding='same')(dc1)
    dc2 = BatchNormalization()(dc2, training=phase_train)
    dc2 = Activation(activation='relu')(dc2)

    dc3 = Deconv3D(filters=64,
                   kernel_size=kernel_size,
                   strides=strides,
                   kernel_initializer='glorot_normal',
                   bias_initializer='zeros',
                   padding='same')(dc2)
    dc3 = BatchNormalization()(dc3, training=phase_train)
    dc3 = Activation(activation='relu')(dc3)

    dc4 = Deconv3D(filters=1,
                   kernel_size=kernel_size,
                   strides=strides,
                   kernel_initializer='glorot_normal',
                   bias_initializer='zeros',
                   padding='same')(dc3)
    dc4 = BatchNormalization()(dc4, training=phase_train)
    dc4 = Activation(activation='sigmoid')(dc4)

    model = Model(inputs=inputs, outputs=dc4)
    model.summary()

    return model
    def build_generator(self):

        model = Sequential()

        # Encoder
        model.add(
            Conv3D(32,
                   kernel_size=5,
                   strides=2,
                   input_shape=self.vol_shape,
                   padding="same"))
        model.add(LeakyReLU(alpha=0.2))
        model.add(BatchNormalization(momentum=0.8))
        model.add(Conv3D(64, kernel_size=5, strides=2, padding="same"))
        model.add(LeakyReLU(alpha=0.2))
        model.add(BatchNormalization(momentum=0.8))
        model.add(Conv3D(128, kernel_size=5, strides=2, padding="same"))
        model.add(LeakyReLU(alpha=0.2))
        model.add(BatchNormalization(momentum=0.8))

        model.add(Conv3D(512, kernel_size=1, strides=2, padding="same"))
        model.add(LeakyReLU(alpha=0.2))
        model.add(Dropout(0.5))

        # Decoder
        model.add(UpSampling3D())
        model.add(Deconv3D(256, kernel_size=5, padding="same"))
        model.add(Activation('relu'))
        model.add(BatchNormalization(momentum=0.8))
        model.add(Deconv3D(128, kernel_size=5, padding="same"))
        model.add(Activation('relu'))
        model.add(BatchNormalization(momentum=0.8))
        model.add(UpSampling3D())
        model.add(Deconv3D(64, kernel_size=5, padding="same"))
        model.add(Activation('relu'))
        model.add(BatchNormalization(momentum=0.8))
        #
        model.add(UpSampling3D())
        #
        model.add(Deconv3D(self.channels, kernel_size=5, padding="same"))
        model.add(Activation('tanh'))

        model.summary()

        masked_vol = Input(shape=self.vol_shape)
        gen_missing = model(masked_vol)

        return Model(masked_vol, gen_missing)
Example #8
0
 def Create_Generator(self):
     print(self.gen_input_shape)
     input_layer = Input(shape = self.gen_input_shape)
     a = Deconv3D(filters = self.gen_filters[0],
                  kernel_size = self.gen_kernel_size[0],
                  strides = self.gen_strides[0])(input_layer)
     a = BatchNormalization()(a, training= True)
     a = Activation(activation=self.gen_activations[0])(a)
     
     for i in range(self.gen_convolution_blocks -1):
         a = Deconv3D(filters = self.gen_filters[i + 1],
                  kernel_size = self.gen_kernel_size[i + 1],
                  strides = self.gen_strides[i + 1], padding='same')(a)
         a = BatchNormalization()(a, training= True)
         a = Activation(activation=self.gen_activations[i + 1])(a)
     
     self.gen_model  = Model(inputs=input_layer, outputs=a)
     print(self.gen_model.summary())
     return(self.gen_model)
Example #9
0
    def make_generator(self):
        out = self.out_shape[0] * self.out_shape[1] * self.out_shape[2]
        model = Sequential()
        
        model.add(Deconv3D(filters=512, kernel_size=4, strides=1, kernel_initializer = 'glorot_normal', activation='relu',
                         input_shape=(1, 1, 1, 200), padding='valid'))
        model.add(BatchNormalization())
        model.add(Deconv3D(filters=256, kernel_size=4, strides=2, kernel_initializer = 'glorot_normal',
                  activation='relu', padding='same'))
        model.add(BatchNormalization())
        model.add(Deconv3D(filters=128, kernel_size=4, strides=2, kernel_initializer = 'glorot_normal',
                  activation='relu', padding='same'))
        model.add(BatchNormalization())
        model.add(Deconv3D(filters=64, kernel_size=4, strides=2, kernel_initializer = 'glorot_normal',
                  activation='relu', padding='same'))
        model.add(Deconv3D(filters=1, kernel_size=4, strides=2, kernel_initializer = 'glorot_normal',  
                  activation='relu', padding='same'))
        model.add(Activation(activation='sigmoid'))
        print(model.summary())
        noise = Input(shape=(1,1,1,200))
        img = model(noise)

        return Model(noise, img)
def get_deconv_layer(input, num_filters):
    a = Deconv3D(num_filters, kernel_size=(2, 2, 2), strides=(2, 2, 2))(input)
    a = BatchNormalization(axis=1)(a)
    return PReLU()(a)
def generator(trainable=True,
              params={
                  'noise_size': 200,
                  'strides': (2, 2, 2),
                  'kernel_size': (4, 4, 4)
              }):
    """
    Returns a Generator Model
    Args:
        trainable (boolean): Should train the model or not
        params (dict): Dictionary with model parameters
    Returns:
        model (keras.Model): Generator model
    """

    noise_size = params['noise_size']
    strides = params['strides']
    kernel_size = params['kernel_size']
    momentum = 0.9
    dropout = 0.25

    inputs = Input(shape=(1, 1, 1, noise_size))

    generator_l1 = Deconv3D(filters=512,
                            kernel_size=kernel_size,
                            strides=(1, 1, 1),
                            kernel_initializer='glorot_normal',
                            bias_initializer='zeros',
                            padding='valid')(inputs)
    generator_l1 = BatchNormalization(momentum=momentum)(generator_l1,
                                                         training=trainable)
    generator_l1 = Activation(activation='relu')(generator_l1)
    generator_l1 = Dropout(dropout)(generator_l1)

    generator_l2 = Deconv3D(filters=256,
                            kernel_size=kernel_size,
                            strides=strides,
                            kernel_initializer='glorot_normal',
                            bias_initializer='zeros',
                            padding='same')(generator_l1)
    generator_l2 = BatchNormalization(momentum=momentum)(generator_l2,
                                                         training=trainable)
    generator_l2 = Activation(activation='relu')(generator_l2)

    generator_l3 = Deconv3D(filters=128,
                            kernel_size=kernel_size,
                            strides=strides,
                            kernel_initializer='glorot_normal',
                            bias_initializer='zeros',
                            padding='same')(generator_l2)
    generator_l3 = BatchNormalization(momentum=momentum)(generator_l3,
                                                         training=trainable)
    generator_l3 = Activation(activation='relu')(generator_l3)

    generator_l4 = Deconv3D(filters=64,
                            kernel_size=kernel_size,
                            strides=strides,
                            kernel_initializer='glorot_normal',
                            bias_initializer='zeros',
                            padding='same')(generator_l3)
    generator_l4 = BatchNormalization(momentum=momentum)(generator_l4,
                                                         training=trainable)
    generator_l4 = Activation(activation='relu')(generator_l4)

    generator_l5 = Deconv3D(filters=1,
                            kernel_size=kernel_size,
                            strides=strides,
                            kernel_initializer='glorot_normal',
                            bias_initializer='zeros',
                            padding='same')(generator_l4)
    generator_l5 = BatchNormalization(momentum=momentum)(generator_l5,
                                                         training=trainable)
    generator_l5 = Activation(activation='sigmoid')(generator_l5)

    model = Model(inputs=inputs, outputs=generator_l5)
    print("Generator")
    model.summary()

    return model
Example #12
0
def build_model():
    kernel_size = (4, 4, 4)
    strides = (2, 2, 2)

    model = Sequential()
    model.add(
        Conv3D(32,
               kernel_size=(4, 4, 4),
               strides=strides,
               padding='same',
               activation='relu',
               input_shape=input_shape))
    model.add(BatchNormalization())
    model.add(
        Conv3D(64,
               kernel_size=(2, 2, 2),
               strides=strides,
               padding='same',
               activation='relu'))
    model.add(BatchNormalization())
    model.add(
        Conv3D(128,
               kernel_size=(2, 2, 2),
               strides=strides,
               padding='same',
               activation='relu'))
    model.add(BatchNormalization())
    model.add(
        Conv3D(256,
               kernel_size=(2, 2, 2),
               strides=strides,
               padding='same',
               activation='relu'))
    model.add(
        Conv3D(512,
               kernel_size=(2, 2, 2),
               strides=1,
               padding='same',
               activation='relu'))
    model.add(
        Deconv3D(512,
                 kernel_size=(2, 2, 2),
                 strides=1,
                 padding='same',
                 activation='relu'))
    model.add(
        Deconv3D(256,
                 kernel_size=(2, 2, 2),
                 strides=strides,
                 padding='same',
                 activation='relu'))
    model.add(
        Deconv3D(128,
                 kernel_size=(2, 2, 2),
                 strides=strides,
                 padding='same',
                 activation='relu'))
    model.add(BatchNormalization())
    model.add(
        Deconv3D(64,
                 kernel_size=(2, 2, 2),
                 strides=strides,
                 padding='same',
                 activation='relu'))
    model.add(BatchNormalization())
    model.add(
        Deconv3D(32,
                 kernel_size=(2, 2, 2),
                 strides=strides,
                 padding='same',
                 activation='relu'))
    model.add(BatchNormalization())
    model.add(
        Deconv3D(1,
                 kernel_size=(4, 4, 4),
                 strides=1,
                 padding='same',
                 activation='sigmoid'))

    model.compile(loss='mse',
                  metrics=[
                      keras.metrics.MeanIoU(num_classes=2),
                      tf.keras.metrics.MeanSquaredError()
                  ],
                  optimizer='adam')
    model.summary()

    return model
Example #13
0
def generator(phase_train=True,
              params={
                  'z_size': 200,
                  'strides': (2, 2, 2),
                  'kernel_size': (4, 4, 4)
              }):
    """
    Returns a Generator Model with input params and phase_train 
    Args:
        phase_train (boolean): training phase or not
        params (dict): Dictionary with model parameters    
    Returns:
        model (keras.Model): Keras Generator model
    """

    z_size = params['z_size']
    strides = params['strides']
    kernel_size = params['kernel_size']

    inputs = Input(shape=(1, 1, 1, z_size))

    g1 = Deconv3D(filters=512,
                  kernel_size=kernel_size,
                  strides=(1, 1, 1),
                  kernel_initializer='glorot_normal',
                  bias_initializer='zeros',
                  padding='valid')(inputs)
    g1 = BatchNormalization()(g1, training=phase_train)
    g1 = Activation(activation='relu')(g1)

    g2 = Deconv3D(filters=256,
                  kernel_size=kernel_size,
                  strides=strides,
                  kernel_initializer='glorot_normal',
                  bias_initializer='zeros',
                  padding='same')(g1)
    g2 = BatchNormalization()(g2, training=phase_train)
    g2 = Activation(activation='relu')(g2)

    g3 = Deconv3D(filters=128,
                  kernel_size=kernel_size,
                  strides=strides,
                  kernel_initializer='glorot_normal',
                  bias_initializer='zeros',
                  padding='same')(g2)
    g3 = BatchNormalization()(g3, training=phase_train)
    g3 = Activation(activation='relu')(g3)

    g4 = Deconv3D(filters=64,
                  kernel_size=kernel_size,
                  strides=strides,
                  kernel_initializer='glorot_normal',
                  bias_initializer='zeros',
                  padding='same')(g3)
    g4 = BatchNormalization()(g4, training=phase_train)
    g4 = Activation(activation='relu')(g4)

    g5 = Deconv3D(filters=1,
                  kernel_size=kernel_size,
                  strides=strides,
                  kernel_initializer='glorot_normal',
                  bias_initializer='zeros',
                  padding='same')(g4)
    g5 = BatchNormalization()(g5, training=phase_train)
    g5 = Activation(activation='sigmoid')(g5)

    model = Model(inputs=inputs, outputs=g5)
    model.summary()

    return model