Esempio n. 1
0
def resnet50_block(inputs, num_pyramid):
    bn_axis = 3  # TODO
    outputs = []

    x = layers.ZeroPadding2D(padding=(3, 3), name='conv1_pad')(inputs)
    x = layers.Conv2D(64, (7, 7),
                      strides=(2, 2),
                      padding='valid',
                      kernel_initializer='he_normal',
                      name='conv1')(x)
    x = batch_norm(axis=bn_axis, name='bn_conv1')(x)
    x = layers.Activation('relu')(x)
    x = layers.ZeroPadding2D(padding=(1, 1), name='pool1_pad')(x)
    x = layers.MaxPooling2D((3, 3), strides=(2, 2))(x)

    x = conv_block(x, 3, [64, 64, 256], stage=2, block='a', strides=(1, 1))
    x = identity_block(x, 3, [64, 64, 256], stage=2, block='b')
    x = identity_block(x, 3, [64, 64, 256], stage=2, block='c')
    if num_pyramid > 3:
        outputs.append(x)  # 1/4

    x = conv_block(x, 3, [128, 128, 512], stage=3, block='a')
    x = identity_block(x, 3, [128, 128, 512], stage=3, block='b')
    x = identity_block(x, 3, [128, 128, 512], stage=3, block='c')
    x = identity_block(x, 3, [128, 128, 512], stage=3, block='d')
    if num_pyramid > 2:
        outputs.append(x)  # 1/8

    x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a')
    x = identity_block(x, 3, [256, 256, 1024], stage=4, block='b')
    x = identity_block(x, 3, [256, 256, 1024], stage=4, block='c')
    x = identity_block(x, 3, [256, 256, 1024], stage=4, block='d')
    x = identity_block(x, 3, [256, 256, 1024], stage=4, block='e')
    x = identity_block(x, 3, [256, 256, 1024], stage=4, block='f')
    if num_pyramid > 1:
        outputs.append(x)  # 1/16

    x = conv_block(x, 3, [512, 512, 2048], stage=5, block='a')
    x = identity_block(x, 3, [512, 512, 2048], stage=5, block='b')
    x = identity_block(x, 3, [512, 512, 2048], stage=5, block='c')

    outputs.append(x)  # 1/32

    return outputs
Esempio n. 2
0
def Discriminator(img_size=img_size,channels=channels):
    initializer=tf.random_normal_initializer(0.,.02)
    inp=tkl.Input(shape=[img_size,img_size,channels],
                  name='input_img')
    tar=tkl.Input(shape=[img_size,img_size,channels],
                  name='target_img')
    x=tkl.concatenate([inp,tar])
    ds1=downsample(64,4,False)(x)
    ds2=downsample(192,4)(ds1)
    ds3=downsample(256,4)(ds2)
    zero_pad1=tkl.ZeroPadding2D()(ds3)
    conv=tkl.Conv2D(
        512,4,strides=1,kernel_initializer=initializer,
        use_bias=False)(zero_pad1)
    batchnorm1=tkl.BatchNormalization()(conv)
    leaky_relu=tkl.LeakyReLU()(batchnorm1)
    zero_pad2=tkl.ZeroPadding2D()(leaky_relu)
    last=tkl.Conv2D(
        1,4,strides=1,kernel_initializer=initializer)(zero_pad2)
    return tf.keras.Model(inputs=[inp,tar],outputs=last)