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)
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)
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)