示例#1
0
def DarknetConv2D_BN_Leaky(*args, **kwargs):

    no_bias_kwargs = {'use_bias': False}
    no_bias_kwargs.update(kwargs)

    return compose(DarknetConv2D(*args, **no_bias_kwargs),
                   BatchNormalization(), LeakyReLU(alpha=0.1))
示例#2
0
def darknet_body():
    """
        Generate first 10 conv layers of the Darknet
    """
    return compose(DarknetConv2D_BN_Leaky(32, (3, 3)), MaxPooling2D(), DarknetConv2D_BN_Leaky(64, (3, 3)),
                   MaxPooling2D(), bottleneck_block(128, 64), MaxPooling2D(), bottleneck_block(256, 128),
                   MaxPooling2D(), bottleneck_x2_block(512, 256), MaxPooling2D(), bottleneck_x2_block(1024, 512))
示例#3
0
def bottleneck_x2_block(outer_filters, bottleneck_filters):
    """
        Bottleneck block of 3x3, 1x1, 3x3, 1x1, 3x3 convolutions
    """
    return compose(bottleneck_block(outer_filters, bottleneck_filters),
                   DarknetConv2D_BN_Leaky(bottleneck_filters, (1, 1)),
                   DarknetConv2D_BN_Leaky(outer_filters, (3, 3)))
示例#4
0
def DarknetConv2D_BN_Leaky(*args, **kwargs):
    """
        Darknet Convolutional2D followed by BatchNormalization and LeakyReLu;
    """
    no_bias_kwargs = {'use_bias': False}
    no_bias_kwargs.update(kwargs)
    return compose(DarknetConv2D(*args, **no_bias_kwargs), BatchNormalization(), LeakyReLU(alpha=0.1))
示例#5
0
def darknet_body():

    return compose(DarknetConv2D_BN_Leaky(32, (3, 3)), MaxPooling2D(),
                   DarknetConv2D_BN_Leaky(64, (3, 3)), MaxPooling2D(),
                   bottleneck_block(128, 64), MaxPooling2D(),
                   bottleneck_block(256, 128), MaxPooling2D(),
                   bottleneck_x2_block(512, 256), MaxPooling2D(),
                   bottleneck_x2_block(1024, 512))
示例#6
0
def yolo_body(inputs, num_anchors, num_classes):
    """
        Create YOLO_V2 model CNN body in Keras
    """
    darknet = Model(inputs, darknet_body()(inputs))
    conv20 = compose(DarknetConv2D_BN_Leaky(1024, (3, 3)),
                     DarknetConv2D_BN_Leaky(1024, (3, 3)))(darknet.output)
    conv13 = darknet.layers[43].output
    conv21 = DarknetConv2D_BN_Leaky(64, (1, 1))(conv13)
    conv21_reshaped = Lambda(space_to_depth_x2,
                             output_shape=space_to_depth_x2_output_shape,
                             name='space_to_depth')(conv21)
    x = concatenate([conv21_reshaped, conv20])
    x = DarknetConv2D_BN_Leaky(1024, (3, 3))
    return Model(inputs, x)
示例#7
0
def bottleneck_x2_block(outer_filters, bottleneck_filters):

    return compose(bottleneck_block(outer_filters, bottleneck_filters),
                   DarknetConv2D_BN_Leaky(bottleneck_filters, (1, 1)),
                   DarknetConv2D_BN_Leaky(outer_filters, (3, 3)))