Python keras.layers.merge.add() Examples
The following are 30
code examples of keras.layers.merge.add().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
keras.layers.merge
, or try the search function
.
Example #1
Source File: object_detection.py From Traffic-Signal-Violation-Detection-System with GNU General Public License v3.0 | 6 votes |
def _conv_block(inp, convs, skip=True): x = inp count = 0 for conv in convs: if count == (len(convs) - 2) and skip: skip_connection = x count += 1 if conv['stride'] > 1: x = ZeroPadding2D(((1,0),(1,0)))(x) # peculiar padding as darknet prefer left and top x = Conv2D(conv['filter'], conv['kernel'], strides=conv['stride'], padding='valid' if conv['stride'] > 1 else 'same', # peculiar padding as darknet prefer left and top name='conv_' + str(conv['layer_idx']), use_bias=False if conv['bnorm'] else True)(x) if conv['bnorm']: x = BatchNormalization(epsilon=0.001, name='bnorm_' + str(conv['layer_idx']))(x) if conv['leaky']: x = LeakyReLU(alpha=0.1, name='leaky_' + str(conv['layer_idx']))(x) return add([skip_connection, x]) if skip else x
Example #2
Source File: resnet.py From DeepANPR with MIT License | 6 votes |
def _shortcut(input, residual): """Adds a shortcut between input and residual block and merges them with "sum" """ # Expand channels of shortcut to match residual. # Stride appropriately to match residual (width, height) # Should be int if network architecture is correctly configured. input_shape = K.int_shape(input) residual_shape = K.int_shape(residual) stride_width = int(round(input_shape[ROW_AXIS] / residual_shape[ROW_AXIS])) stride_height = int(round(input_shape[COL_AXIS] / residual_shape[COL_AXIS])) equal_channels = input_shape[CHANNEL_AXIS] == residual_shape[CHANNEL_AXIS] shortcut = input # 1 X 1 conv if shape is different. Else identity. if stride_width > 1 or stride_height > 1 or not equal_channels: shortcut = Conv2D(filters=residual_shape[CHANNEL_AXIS], kernel_size=(1, 1), strides=(stride_width, stride_height), padding="valid", kernel_initializer="he_normal", kernel_regularizer=l2(0.0001))(input) return add([shortcut, residual])
Example #3
Source File: resnet.py From DeepANPR with MIT License | 6 votes |
def _shortcut(input, residual): """Adds a shortcut between input and residual block and merges them with "sum" """ # Expand channels of shortcut to match residual. # Stride appropriately to match residual (width, height) # Should be int if network architecture is correctly configured. input_shape = K.int_shape(input) residual_shape = K.int_shape(residual) stride_width = int(round(input_shape[ROW_AXIS] / residual_shape[ROW_AXIS])) stride_height = int(round(input_shape[COL_AXIS] / residual_shape[COL_AXIS])) equal_channels = input_shape[CHANNEL_AXIS] == residual_shape[CHANNEL_AXIS] shortcut = input # 1 X 1 conv if shape is different. Else identity. if stride_width > 1 or stride_height > 1 or not equal_channels: shortcut = Conv2D(filters=residual_shape[CHANNEL_AXIS], kernel_size=(1, 1), strides=(stride_width, stride_height), padding="valid", kernel_initializer="he_normal", kernel_regularizer=l2(0.0001))(input) return add([shortcut, residual])
Example #4
Source File: resnet.py From DeepANPR with MIT License | 6 votes |
def _shortcut(input, residual): """Adds a shortcut between input and residual block and merges them with "sum" """ # Expand channels of shortcut to match residual. # Stride appropriately to match residual (width, height) # Should be int if network architecture is correctly configured. input_shape = K.int_shape(input) residual_shape = K.int_shape(residual) stride_width = int(round(input_shape[ROW_AXIS] / residual_shape[ROW_AXIS])) stride_height = int(round(input_shape[COL_AXIS] / residual_shape[COL_AXIS])) equal_channels = input_shape[CHANNEL_AXIS] == residual_shape[CHANNEL_AXIS] shortcut = input # 1 X 1 conv if shape is different. Else identity. if stride_width > 1 or stride_height > 1 or not equal_channels: shortcut = Conv2D(filters=residual_shape[CHANNEL_AXIS], kernel_size=(1, 1), strides=(stride_width, stride_height), padding="valid", kernel_initializer="he_normal", kernel_regularizer=l2(0.0001))(input) return add([shortcut, residual])
Example #5
Source File: resnet.py From SPTM with MIT License | 6 votes |
def _shortcut(input, residual): """Adds a shortcut between input and residual block and merges them with "sum" """ # Expand channels of shortcut to match residual. # Stride appropriately to match residual (width, height) # Should be int if network architecture is correctly configured. input_shape = K.int_shape(input) residual_shape = K.int_shape(residual) stride_width = int(round(input_shape[ROW_AXIS] / residual_shape[ROW_AXIS])) stride_height = int(round(input_shape[COL_AXIS] / residual_shape[COL_AXIS])) equal_channels = input_shape[CHANNEL_AXIS] == residual_shape[CHANNEL_AXIS] shortcut = input # 1 X 1 conv if shape is different. Else identity. if stride_width > 1 or stride_height > 1 or not equal_channels: shortcut = Conv2D(filters=residual_shape[CHANNEL_AXIS], kernel_size=(1, 1), strides=(stride_width, stride_height), padding="valid", kernel_initializer="he_normal", kernel_regularizer=l2(0.0001))(input) return add([shortcut, residual])
Example #6
Source File: resnet3d.py From keras-resnet3d with MIT License | 6 votes |
def _shortcut3d(input, residual): """3D shortcut to match input and residual and merges them with "sum".""" stride_dim1 = ceil(input._keras_shape[DIM1_AXIS] \ / residual._keras_shape[DIM1_AXIS]) stride_dim2 = ceil(input._keras_shape[DIM2_AXIS] \ / residual._keras_shape[DIM2_AXIS]) stride_dim3 = ceil(input._keras_shape[DIM3_AXIS] \ / residual._keras_shape[DIM3_AXIS]) equal_channels = residual._keras_shape[CHANNEL_AXIS] \ == input._keras_shape[CHANNEL_AXIS] shortcut = input if stride_dim1 > 1 or stride_dim2 > 1 or stride_dim3 > 1 \ or not equal_channels: shortcut = Conv3D( filters=residual._keras_shape[CHANNEL_AXIS], kernel_size=(1, 1, 1), strides=(stride_dim1, stride_dim2, stride_dim3), kernel_initializer="he_normal", padding="valid", kernel_regularizer=l2(1e-4) )(input) return add([shortcut, residual])
Example #7
Source File: yolo3_one_file_to_detect_them_all.py From keras-yolo3 with MIT License | 6 votes |
def _conv_block(inp, convs, skip=True): x = inp count = 0 for conv in convs: if count == (len(convs) - 2) and skip: skip_connection = x count += 1 if conv['stride'] > 1: x = ZeroPadding2D(((1,0),(1,0)))(x) # peculiar padding as darknet prefer left and top x = Conv2D(conv['filter'], conv['kernel'], strides=conv['stride'], padding='valid' if conv['stride'] > 1 else 'same', # peculiar padding as darknet prefer left and top name='conv_' + str(conv['layer_idx']), use_bias=False if conv['bnorm'] else True)(x) if conv['bnorm']: x = BatchNormalization(epsilon=0.001, name='bnorm_' + str(conv['layer_idx']))(x) if conv['leaky']: x = LeakyReLU(alpha=0.1, name='leaky_' + str(conv['layer_idx']))(x) return add([skip_connection, x]) if skip else x
Example #8
Source File: yolo.py From keras-yolo3 with MIT License | 6 votes |
def _conv_block(inp, convs, do_skip=True): x = inp count = 0 for conv in convs: if count == (len(convs) - 2) and do_skip: skip_connection = x count += 1 if conv['stride'] > 1: x = ZeroPadding2D(((1,0),(1,0)))(x) # unlike tensorflow darknet prefer left and top paddings x = Conv2D(conv['filter'], conv['kernel'], strides=conv['stride'], padding='valid' if conv['stride'] > 1 else 'same', # unlike tensorflow darknet prefer left and top paddings name='conv_' + str(conv['layer_idx']), use_bias=False if conv['bnorm'] else True)(x) if conv['bnorm']: x = BatchNormalization(epsilon=0.001, name='bnorm_' + str(conv['layer_idx']))(x) if conv['leaky']: x = LeakyReLU(alpha=0.1, name='leaky_' + str(conv['layer_idx']))(x) return add([skip_connection, x]) if do_skip else x
Example #9
Source File: model.py From parapred with MIT License | 6 votes |
def base_ab_seq_model(max_cdr_len): input_ab = Input(shape=(max_cdr_len, NUM_FEATURES)) label_mask = Input(shape=(max_cdr_len,)) seq = MaskingByLambda(mask_by_input(label_mask))(input_ab) loc_fts = MaskedConvolution1D(28, 3, padding='same', activation='elu', kernel_regularizer=l2(0.01))(seq) res_fts = add([seq, loc_fts]) glb_fts = Bidirectional(LSTM(256, dropout=0.15, recurrent_dropout=0.2, return_sequences=True), merge_mode='concat')(res_fts) fts = Dropout(0.3)(glb_fts) probs = TimeDistributed(Dense(1, activation='sigmoid', kernel_regularizer=l2(0.01)))(fts) return input_ab, label_mask, res_fts, probs
Example #10
Source File: yolo.py From ImageAI with MIT License | 6 votes |
def _conv_block(inp, convs, do_skip=True): x = inp count = 0 for conv in convs: if count == (len(convs) - 2) and do_skip: skip_connection = x count += 1 if conv['stride'] > 1: x = ZeroPadding2D(((1,0),(1,0)))(x) # unlike tensorflow darknet prefer left and top paddings x = Conv2D(conv['filter'], conv['kernel'], strides=conv['stride'], padding='valid' if conv['stride'] > 1 else 'same', # unlike tensorflow darknet prefer left and top paddings name='conv_' + str(conv['layer_idx']), use_bias=False if conv['bnorm'] else True)(x) if conv['bnorm']: x = BatchNormalization(epsilon=0.001, name='bnorm_' + str(conv['layer_idx']))(x) if conv['leaky']: x = LeakyReLU(alpha=0.1, name='leaky_' + str(conv['layer_idx']))(x) return add([skip_connection, x]) if do_skip else x
Example #11
Source File: pspnet.py From keras-image-segmentation with MIT License | 6 votes |
def conv_block(input_tensor, filters, strides, d_rates): x = Conv2D(filters[0], kernel_size=1, dilation_rate=d_rates[0])(input_tensor) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[1], kernel_size=3, strides=strides, padding='same', dilation_rate=d_rates[1])(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[2], kernel_size=1, dilation_rate=d_rates[2])(x) x = BatchNormalization()(x) shortcut = Conv2D(filters[2], kernel_size=1, strides=strides)(input_tensor) shortcut = BatchNormalization()(shortcut) x = add([x, shortcut]) x = Activation('relu')(x) return x
Example #12
Source File: yolov3_weights_to_keras.py From ai-platform with MIT License | 6 votes |
def _conv_block(inp, convs, skip=True): x = inp count = 0 len_convs = len(convs) for conv in convs: if count == (len_convs - 2) and skip: skip_connection = x count += 1 if conv['stride'] > 1: x = ZeroPadding2D(((1,0),(1,0)))(x) # peculiar padding as darknet prefer left and top x = Conv2D(conv['filter'], conv['kernel'], strides=conv['stride'], padding='valid' if conv['stride'] > 1 else 'same', # peculiar padding as darknet prefer left and top name='conv_' + str(conv['layer_idx']), use_bias=False if conv['bnorm'] else True)(x) if conv['bnorm']: x = BatchNormalization(epsilon=0.001, name='bnorm_' + str(conv['layer_idx']))(x) if conv['leaky']: x = LeakyReLU(alpha=0.1, name='leaky_' + str(conv['layer_idx']))(x) return add([skip_connection, x]) if skip else x #SPP block uses three pooling layers of sizes [5, 9, 13] with strides one and all outputs together with the input are concatenated to be fed #to the FC block
Example #13
Source File: psp_temp.py From keras-image-segmentation with MIT License | 6 votes |
def identity_block(input_tensor, filters, d_rates): x = Conv2D(filters[0], kernel_size=1, dilation_rate=d_rates[0])(input_tensor) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[1], kernel_size=3, padding='same', dilation_rate=d_rates[1])(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[2], kernel_size=1, dilation_rate=d_rates[2])(x) x = BatchNormalization()(x) x = add([x, input_tensor]) x = Activation('relu')(x) return x
Example #14
Source File: pspnet.py From keras-image-segmentation with MIT License | 6 votes |
def conv_block(input_tensor, filters, strides, d_rates): x = Conv2D(filters[0], kernel_size=1, dilation_rate=d_rates[0])(input_tensor) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[1], kernel_size=3, strides=strides, padding='same', dilation_rate=d_rates[1])(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[2], kernel_size=1, dilation_rate=d_rates[2])(x) x = BatchNormalization()(x) shortcut = Conv2D(filters[2], kernel_size=1, strides=strides)(input_tensor) shortcut = BatchNormalization()(shortcut) x = add([x, shortcut]) x = Activation('relu')(x) return x
Example #15
Source File: psp_temp.py From keras-image-segmentation with MIT License | 6 votes |
def conv_block(input_tensor, filters, strides, d_rates): x = Conv2D(filters[0], kernel_size=1, dilation_rate=d_rates[0])(input_tensor) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[1], kernel_size=3, strides=strides, padding='same', dilation_rate=d_rates[1])(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[2], kernel_size=1, dilation_rate=d_rates[2])(x) x = BatchNormalization()(x) shortcut = Conv2D(filters[2], kernel_size=1, strides=strides)(input_tensor) shortcut = BatchNormalization()(shortcut) x = add([x, shortcut]) x = Activation('relu')(x) return x
Example #16
Source File: pspnet.py From keras-image-segmentation with MIT License | 6 votes |
def identity_block(input_tensor, filters, d_rates): x = Conv2D(filters[0], kernel_size=1, dilation_rate=d_rates[0])(input_tensor) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[1], kernel_size=3, padding='same', dilation_rate=d_rates[1])(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(filters[2], kernel_size=1, dilation_rate=d_rates[2])(x) x = BatchNormalization()(x) x = add([x, input_tensor]) x = Activation('relu')(x) return x
Example #17
Source File: BaseModel.py From DeepDeblur with MIT License | 5 votes |
def _AddShortCut(self, x): x = add(x) return self._BNRelu(x)
Example #18
Source File: models.py From open-solution-toxic-comments with MIT License | 5 votes |
def _vdcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first, last_block): def f(x): main = _convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) main = _convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) if not last_block: x = MaxPooling1D(pool_size=3, strides=2)(x) return x return f
Example #19
Source File: architectures.py From open-solution-mapping-challenge with MIT License | 5 votes |
def dpcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first): def f(x): x = MaxPooling1D(pool_size=3, strides=2)(x) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(main) x = add([main, x]) return x return f
Example #20
Source File: architectures.py From open-solution-mapping-challenge with MIT License | 5 votes |
def vdcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first, last_block): def f(x): main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) if not last_block: x = MaxPooling1D(pool_size=3, strides=2)(x) return x return f
Example #21
Source File: models.py From open-solution-toxic-comments with MIT License | 5 votes |
def _dpcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first): def f(x): x = MaxPooling1D(pool_size=3, strides=2)(x) main = _convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) main = _convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(main) x = add([main, x]) return x return f
Example #22
Source File: resnet.py From SPTM with MIT License | 5 votes |
def build_pixel_comparison_network(input_shape): channels, height, width = input_shape input = Input(shape=(height, width, channels)) first = Flatten()(Lambda(lambda x: x[:, :, :, :1])(input)) second = Flatten()(Lambda(lambda x: x[:, :, :, 1:])(input)) # second = Lambda(lambda x: -x)(second) # difference = add([first, second]) # raw_result = Lambda(lambda x: K.mean(K.abs(x), axis=1, keepdims=True))(difference) # prob_zero = Lambda(lambda x: x / 255.0)(raw_result) # prob_one = Lambda(lambda x: 1.0 - x)(prob_zero) prob_one = dot([first, second], axes=1, normalize=True) prob_zero = Lambda(lambda x: 1.0 - x)(prob_one) output = concatenate([prob_zero, prob_one]) return Model(inputs=input, outputs=output)
Example #23
Source File: nonlocal_resnet.py From keras-non-local-nets with MIT License | 5 votes |
def _shortcut(input_feature, residual, conv_name_base=None, bn_name_base=None): """Adds a shortcut between input and residual block and merges them with "sum" """ # Expand channels of shortcut to match residual. # Stride appropriately to match residual (width, height) # Should be int if network architecture is correctly configured. input_shape = K.int_shape(input_feature) residual_shape = K.int_shape(residual) stride_width = int(round(input_shape[ROW_AXIS] / residual_shape[ROW_AXIS])) stride_height = int(round(input_shape[COL_AXIS] / residual_shape[COL_AXIS])) equal_channels = input_shape[CHANNEL_AXIS] == residual_shape[CHANNEL_AXIS] shortcut = input_feature # 1 X 1 conv if shape is different. Else identity. if stride_width > 1 or stride_height > 1 or not equal_channels: print('reshaping via a convolution...') if conv_name_base is not None: conv_name_base = conv_name_base + '1' shortcut = Conv2D(filters=residual_shape[CHANNEL_AXIS], kernel_size=(1, 1), strides=(stride_width, stride_height), padding="valid", kernel_initializer="he_normal", kernel_regularizer=l2(0.0001), name=conv_name_base)(input_feature) if bn_name_base is not None: bn_name_base = bn_name_base + '1' shortcut = BatchNormalization(axis=CHANNEL_AXIS, name=bn_name_base)(shortcut) return add([shortcut, residual])
Example #24
Source File: decoder.py From enet-keras with MIT License | 5 votes |
def bottleneck(encoder, output, upsample=False, reverse_module=False): internal = output // 4 x = Conv2D(internal, (1, 1), use_bias=False)(encoder) x = BatchNormalization(momentum=0.1)(x) x = Activation('relu')(x) if not upsample: x = Conv2D(internal, (3, 3), padding='same', use_bias=True)(x) else: x = Conv2DTranspose(filters=internal, kernel_size=(3, 3), strides=(2, 2), padding='same')(x) x = BatchNormalization(momentum=0.1)(x) x = Activation('relu')(x) x = Conv2D(output, (1, 1), padding='same', use_bias=False)(x) other = encoder if encoder.get_shape()[-1] != output or upsample: other = Conv2D(output, (1, 1), padding='same', use_bias=False)(other) other = BatchNormalization(momentum=0.1)(other) if upsample and reverse_module is not False: other = UpSampling2D(size=(2, 2))(other) if upsample and reverse_module is False: decoder = x else: x = BatchNormalization(momentum=0.1)(x) decoder = add([x, other]) decoder = Activation('relu')(decoder) return decoder
Example #25
Source File: decoder.py From enet-keras with MIT License | 5 votes |
def bottleneck(encoder, output, upsample=False, reverse_module=False): internal = output // 4 x = Conv2D(internal, (1, 1), use_bias=False)(encoder) x = BatchNormalization(momentum=0.1)(x) # x = Activation('relu')(x) x = PReLU(shared_axes=[1, 2])(x) if not upsample: x = Conv2D(internal, (3, 3), padding='same', use_bias=True)(x) else: x = Conv2DTranspose(filters=internal, kernel_size=(3, 3), strides=(2, 2), padding='same')(x) x = BatchNormalization(momentum=0.1)(x) # x = Activation('relu')(x) x = PReLU(shared_axes=[1, 2])(x) x = Conv2D(output, (1, 1), padding='same', use_bias=False)(x) other = encoder if encoder.get_shape()[-1] != output or upsample: other = Conv2D(output, (1, 1), padding='same', use_bias=False)(other) other = BatchNormalization(momentum=0.1)(other) if upsample and reverse_module is not False: other = MaxUnpooling2D()([other, reverse_module]) if upsample and reverse_module is False: decoder = x else: x = BatchNormalization(momentum=0.1)(x) decoder = add([x, other]) # decoder = Activation('relu')(decoder) decoder = PReLU(shared_axes=[1, 2])(decoder) return decoder
Example #26
Source File: architectures.py From steppy-toolkit with MIT License | 5 votes |
def vdcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first, last_block): def f(x): main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) x = add([main, x]) if not last_block: x = MaxPooling1D(pool_size=3, strides=2)(x) return x return f
Example #27
Source File: architectures.py From steppy-toolkit with MIT License | 5 votes |
def dpcnn_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first): def f(x): x = MaxPooling1D(pool_size=3, strides=2)(x) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(x) main = convolutional_block(filter_nr, kernel_size, use_batch_norm, use_prelu, dropout, dropout_mode, kernel_reg_l2, bias_reg_l2, batch_norm_first)(main) x = add([main, x]) return x return f
Example #28
Source File: blocks.py From keras-fcn with MIT License | 5 votes |
def vgg_upsampling(classes, target_shape=None, scale=1, weight_decay=0., block_name='featx'): """A VGG convolutional block with bilinear upsampling for decoding. :param classes: Integer, number of classes :param scale: Float, scale factor to the input feature, varing from 0 to 1 :param target_shape: 4D Tuples with targe_height, target_width as the 2nd, 3rd elements if `channels_last` or as the 3rd, 4th elements if `channels_first`. >>> from keras_fcn.blocks import vgg_upsampling >>> feat1, feat2, feat3 = feat_pyramid[:3] >>> y = vgg_upsampling(classes=21, target_shape=(None, 14, 14, None), >>> scale=1, block_name='feat1')(feat1, None) >>> y = vgg_upsampling(classes=21, target_shape=(None, 28, 28, None), >>> scale=1e-2, block_name='feat2')(feat2, y) >>> y = vgg_upsampling(classes=21, target_shape=(None, 224, 224, None), >>> scale=1e-4, block_name='feat3')(feat3, y) """ def f(x, y): score = Conv2D(filters=classes, kernel_size=(1, 1), activation='linear', padding='valid', kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay), name='score_{}'.format(block_name))(x) if y is not None: def scaling(xx, ss=1): return xx * ss scaled = Lambda(scaling, arguments={'ss': scale}, name='scale_{}'.format(block_name))(score) score = add([y, scaled]) upscore = BilinearUpSampling2D( target_shape=target_shape, name='upscore_{}'.format(block_name))(score) return upscore return f
Example #29
Source File: layers.py From fast-neural-style-keras with Apache License 2.0 | 5 votes |
def call(self, x, mask=None): mean, var = tf.nn.moments(x, [1, 2], keep_dims=True) return tf.div(tf.subtract(x, mean), tf.sqrt(tf.add(var, self.epsilon)))
Example #30
Source File: layers.py From fast-neural-style-keras with Apache License 2.0 | 5 votes |
def res_conv(nb_filter, nb_row, nb_col,stride=(1,1)): def _res_func(x): identity = Cropping2D(cropping=((2,2),(2,2)))(x) a = Conv2D(nb_filter, (nb_row, nb_col), strides=stride, padding='valid')(x) a = BatchNormalization()(a) #a = LeakyReLU(0.2)(a) a = Activation("relu")(a) a = Conv2D(nb_filter, (nb_row, nb_col), strides=stride, padding='valid')(a) y = BatchNormalization()(a) return add([identity, y]) return _res_func