def train(resume=False):
    print('Loading data...')
    X_train, X_val, y_train, y_val = DataManager.load_train_val_data("cleaned")
    # X_train, y_train = filter_mask_presence(X_train, y_train)
    # X_val, y_val = filter_mask_presence(X_train, y_train)

    print('Creating and compiling model...')
    model = build_model()
    if resume:
        model.load_weights('./results/net.hdf5')
    model_checkpoint = ModelCheckpoint('./results/net.hdf5', monitor='val_loss', save_best_only=True)

    print('Training on model')
    model.summary()
    batch_size = 64
    nb_epoch = 200

    train_generator = CustomDataGenerator(X_train, y_train, transform, batch_size)

    # Use fixed samples instead to visualize histograms. There is currently a bug that prevents it
    # when a val generator is used.
    # Not aug val samples to keep the eval consistent.
    val_generator = CustomDataGenerator(X_val, y_val, lambda x, y: transform(x, y, augment=False), batch_size)

    model.fit_generator(train_generator, validation_data=val_generator, nb_val_samples=X_val.shape[0],
                        samples_per_epoch=X_train.shape[0], nb_epoch=nb_epoch, verbose=2,
                        callbacks=[model_checkpoint, reduce_lr, tb], max_q_size=1000)
Пример #2
0
def examine_generator():
    X_train, X_val, y_train, y_val = DataManager.load_train_val_data("all")
    from generator import CustomDataGenerator
    from train import transform, filter_mask_presence

    X_val, y_val = filter_mask_presence(X_val, y_val)
    generator = CustomDataGenerator(X_val, y_val, lambda x, y: transform(x, y, augment=True), 32)
    imgs, outs = generator.next()
    for i in range(len(imgs)):
        cv2.imshow("image", imgs[i, 0])
        cv2.imshow("mask", outs['main_output'][i, 0])
        cv2.waitKey(0)
Пример #3
0
def inspect_set(train=False):
    X_train, X_val, y_train, y_val = DataManager.load_train_val_data("all")
    X = X_train if train else X_val
    y = y_train if train else y_val

    from model import build_model
    from train import transform
    from submission import post_process_mask

    model = build_model()
    model.load_weights('./results/net.hdf5')

    for i in range(X.shape[0]):
        img_i, mask_i = transform(X[i], y[i])
        masks, has_mask = model.predict(np.array([img_i]), verbose=1)

        print has_mask[0, 0]

        # print has_masks[0, 0]
        cv2.imshow("Image with mask".format(i), generate_image_with_mask(X[i], y[i]))
        cv2.imshow("pred mask".format(i), post_process_mask(masks[0, 0]))
        cv2.waitKey(0)