Example #1
0
def SSD512_resnet(input_shape=(512, 512, 3), num_classes=21, softmax=True):

    # TODO: it does not converge!

    x = input_tensor = Input(shape=input_shape)
    source_layers = ssd512_resnet_body(x)

    # Add multibox head for classification and regression
    num_priors = [4, 6, 6, 6, 6, 4, 4]
    normalizations = [20, 20, 20, 20, 20, 20, 20]
    output_tensor = multibox_head(source_layers, num_priors, num_classes,
                                  normalizations, softmax)
    model = Model(input_tensor, output_tensor)
    model.num_classes = num_classes

    # parameters for prior boxes
    model.image_size = input_shape[:2]
    model.source_layers = source_layers
    # stay compatible with caffe models
    model.aspect_ratios = [[1, 2, 1 / 2], [1, 2, 1 / 2, 3, 1 / 3],
                           [1, 2, 1 / 2, 3, 1 / 3], [1, 2, 1 / 2, 3, 1 / 3],
                           [1, 2, 3, 1 / 2, 1 / 3], [1, 2, 1 / 2],
                           [1, 2, 1 / 2]]
    model.minmax_sizes = [(35, 76), (76, 153), (153, 230), (230, 307),
                          (307, 384), (384, 460), (460, 537)]
    model.steps = [8, 16, 32, 64, 128, 256, 512]
    model.special_ssd_boxes = True

    return model
Example #2
0
def SL512_resnet(input_shape=(512, 512, 3), activation='relu', softmax=True):
    
    # body
    x = input_tensor = Input(shape=input_shape)
    source_layers = ssd512_resnet_body(x, activation=activation)
    
    # Add multibox head for classification and regression
    num_priors = [1, 1, 1, 1, 1, 1, 1]
    normalizations = [20, 20, 20, 20, 20, 20, 20]
    output_tensor = multibox_head(source_layers, num_priors, normalizations, softmax)
    model = Model(input_tensor, output_tensor)
    
    # parameters for prior boxes
    model.image_size = input_shape[:2]
    model.source_layers = source_layers
    
    return model