2016-11-14 4 views

Répondre

0

Ma solution

dataset = "./dataset/img/" 
dataset_file = "./dataset/gt.txt" 

def model_network(dense_y, dense_x): 

    main_input = Input(shape=shape_img[1:], name="main_input") 
    flow = Convolution2D(32, 3, 3, border_mode='same')(main_input) 
    flow = Activation('relu')(flow) 
    flow = Convolution2D(32, 3, 3)(flow) 
    flow = Activation('relu')(flow) 
    flow = MaxPooling2D(pool_size=(2, 2))(flow) 
    flow = Dropout(0.25)(flow) 

    flow = Convolution2D(64, 3, 3, border_mode='same')(flow) 
    flow = Activation('relu')(flow) 
    flow = Convolution2D(64, 3, 3)(flow) 
    flow = Activation('relu')(flow) 
    flow = MaxPooling2D(pool_size=(2, 2))(flow) 
    flow = Dropout(0.25)(flow) 

    flow = Convolution2D(512, 3, 3, border_mode='same')(flow) 
    flow = Activation('relu')(flow) 
    flow = Convolution2D(512, 3, 3)(flow) 
    flow = Activation('relu')(flow) 
    flow = MaxPooling2D(pool_size=(2, 2))(flow) 
    flow = Dropout(0.25)(flow) 

    flow = Flatten()(flow) 
    cod_x = Dense(100)(flow) 
    output_x = Dense(dense_x, activation='sigmoid', name="output_x")(cod_x) 

    cod_y = Dense(100)(flow) 
    output_y = Dense(dense_y, activation='sigmoid', name="output_y")(cod_y) 
    model = Model(input=[main_input], output=[output_x, output_y]) 

    return model 


def train_model(model, path): 

    # let's train the model using SGD + momentum (how original). 
    sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) 

    print("... compiling") 
    model.compile(optimizer=sgd, 
        loss_weights=[0.5, 0.5], 
        loss='categorical_crossentropy') 

    print("... training") 
    model.fit_generator(generate_array_files(path), samples_per_epoch=500, nb_val_samples=60, nb_epoch=10) 
    save_model(model) 


if __name__ == '__main__': 
    path = "dataset_names.csv" 

    model_tracking = model_network(length_y, length_x) 

    train_model(model_tracking, path=path)