def test_generate_resnet_model(): architecture = generate_resnet_architecture(n_upsampling=3, n_filter=64, stride=2) input_params = {'shape': [128, 128, 3]} model = load_architecture(architecture, input_params) model.summary() expected_model = load_architecture( load_json_config('tests/json/resnet_architecture.json'), input_params) assert check_same_models(model, expected_model)
def test_generate_voxresnet_model(): architecture = generate_voxresnet_architecture(n_upsampling=3, n_filter=64, stride=2) input_params = {'shape': [128, 128, 128, 3]} model = load_architecture(architecture, input_params) model.summary()
def test_generate_resnet_model_dropout(): architecture = generate_resnet_architecture(n_upsampling=4, n_filter=48, stride=2, dropout_rate=0.1) input_params = {'shape': [128, 128, 3]} model = load_architecture(architecture, input_params) model.summary()
def test_generate_densenet_model_3d(): architecture = generate_densenet_3d_architecture(n_upsampling=3, n_filter=[4, 8, 12, 16], dense_block=[2, 3, 4, 5], stride=2) input_params = {'shape': [128, 128, 128, 3]} model = load_architecture(architecture, input_params) model.summary()
def test_generate_densenet_model_batchnorm(): architecture = generate_densenet_2d_architecture(n_upsampling=4, n_filter=48, stride=2, batchnorm=True) input_params = {'shape': [128, 128, 3]} model = load_architecture(architecture, input_params) model.summary()
def test_generate_vnet_model_resize(): architecture = generate_vnet_architecture(n_upsampling=5, n_filter=4, stride=2) input_params = {'shape': [129, 129, 129, 3]} model = load_architecture(architecture, input_params) assert np.all(model.input_shape == (None, 129, 129, 129, 3)) assert np.all(model.output_shape == (None, 129, 129, 129, 1))
def test_load_vnet_model_resize(): architecture = load_json_config( read_file('tests/json/vnet_architecture.json') ) input_params = {'shape': [129, 129, 129, 3]} model = load_architecture(architecture, input_params) assert np.all(model.input_shape == (None, 129, 129, 129, 3)) assert np.all(model.output_shape == (None, 129, 129, 129, 1))
def test_load_sequential_model(): architecture = load_json_config( read_file('tests/json/sequential_architecture.json')) input_params = {'shape': [32, 32]} model = load_architecture(architecture, input_params) input_layer = Input(shape=(32, 32)) flatten = Flatten()(input_layer) dense = Dense(units=128, activation='relu')(flatten) dropout = Dropout(rate=0.2)(dense) output_layer = Dense(units=10, activation='softmax')(dropout) expected_model = Model(inputs=input_layer, outputs=output_layer) assert check_same_models(model, expected_model)
def test_generate_unet_model(): architecture = generate_unet_architecture(n_upsampling=5, n_filter=4, stride=2) input_params = {'shape': [128, 128, 3]} model = load_architecture(architecture, input_params) model.summary() def conv_layers(filters, pre_layer): conv = BatchNormalization()(Conv2D( filters, kernel_size=3, activation='relu', padding='same', kernel_initializer='he_normal')(pre_layer)) return BatchNormalization()(Conv2D( filters, kernel_size=3, activation='relu', padding='same', kernel_initializer='he_normal')(conv)) input_layer = Input(shape=[128, 128, 3]) conv_1 = conv_layers(4, input_layer) max_pool_1 = MaxPooling2D()(conv_1) conv_2 = conv_layers(8, max_pool_1) max_pool_2 = MaxPooling2D()(conv_2) conv_3 = conv_layers(16, max_pool_2) max_pool_3 = MaxPooling2D()(conv_3) conv_4 = conv_layers(32, max_pool_3) max_pool_4 = MaxPooling2D()(conv_4) conv_5 = conv_layers(64, max_pool_4) max_pool_5 = MaxPooling2D()(conv_5) conv_t_kwargs = { "kernel_size": 3, "strides": 2, "padding": "same", "kernel_initializer": "he_normal" } conv_6 = conv_layers(128, max_pool_5) conv_trans_1 = Conv2DTranspose(64, **conv_t_kwargs)(conv_6) upconv_1 = conv_layers(64, concatenate([conv_5, conv_trans_1])) conv_trans_2 = Conv2DTranspose(32, **conv_t_kwargs)(upconv_1) upconv_2 = conv_layers(32, concatenate([conv_4, conv_trans_2])) conv_trans_3 = Conv2DTranspose(16, **conv_t_kwargs)(upconv_2) upconv_3 = conv_layers(16, concatenate([conv_3, conv_trans_3])) conv_trans_4 = Conv2DTranspose(8, **conv_t_kwargs)(upconv_3) upconv_4 = conv_layers(8, concatenate([conv_2, conv_trans_4])) conv_trans_5 = Conv2DTranspose(4, **conv_t_kwargs)(upconv_4) upconv_5 = conv_layers(4, concatenate([conv_1, conv_trans_5])) output = Conv2D(1, kernel_size=3, activation='sigmoid', padding="same", kernel_initializer="he_normal")(upconv_5) expected_model = Model(inputs=input_layer, outputs=output) expected_model.summary() assert check_same_models(model, expected_model)
def test_load_vnet_model(): architecture = load_json_config( read_file('tests/json/vnet_architecture.json') ) input_params = {'shape': [128, 128, 128, 3]} model = load_architecture(architecture, input_params) def conv_layers(filters, pre_layer): conv = BatchNormalization()( Conv3D(filters, kernel_size=3, activation='relu', padding='same')(pre_layer)) return BatchNormalization()( Conv3D(filters, kernel_size=3, activation='relu', padding='same')(conv)) input_layer = Input(shape=[128, 128, 128, 3]) conv_1 = conv_layers(4, input_layer) max_pool_1 = MaxPooling3D()(conv_1) conv_2 = conv_layers(8, max_pool_1) max_pool_2 = MaxPooling3D()(conv_2) conv_3 = conv_layers(16, max_pool_2) max_pool_3 = MaxPooling3D()(conv_3) conv_4 = conv_layers(32, max_pool_3) max_pool_4 = MaxPooling3D()(conv_4) conv_5 = conv_layers(64, max_pool_4) max_pool_5 = MaxPooling3D()(conv_5) conv_t_kwargs = {"kernel_size": 3, "strides": [ 2, 2, 2 ], "padding": "same"} conv_6 = conv_layers(128, max_pool_5) conv_trans_1 = Conv3DTranspose(32, **conv_t_kwargs)(conv_6) upconv_1 = conv_layers(64, concatenate([conv_5, conv_trans_1])) conv_trans_2 = Conv3DTranspose(16, **conv_t_kwargs)(upconv_1) upconv_2 = conv_layers(32, concatenate([conv_4, conv_trans_2])) conv_trans_3 = Conv3DTranspose(8, **conv_t_kwargs)(upconv_2) upconv_3 = conv_layers(16, concatenate([conv_3, conv_trans_3])) conv_trans_4 = Conv3DTranspose(4, **conv_t_kwargs)(upconv_3) upconv_4 = conv_layers(8, concatenate([conv_2, conv_trans_4])) conv_trans_5 = Conv3DTranspose(2, **conv_t_kwargs)(upconv_4) upconv_5 = conv_layers(4, concatenate([conv_1, conv_trans_5])) output = Conv3D(1, kernel_size=1, activation='sigmoid')(upconv_5) expected_model = Model(inputs=input_layer, outputs=output) assert check_same_models(model, expected_model)