def evualate_model(model, data, test_paths, settings): """ """ # predict on testing data pred_mtx = temp_model.predict_generator( data_generator(data, test_paths, settings), steps=ceil(len(test_paths) / settings["BATCH_SIZE"]), ) # write out images write_images(data, test_paths, pred_mtx, settings, iter_path) # return evualation data frame self.eval_metrics = self.eval_metrics.append( calculate_metrics(data, full_testing_paths, pred_mtx, self.settings, self.curr_iter), ignore_index=True, )
def main(): data_generator() train()
total_flops, total_params = get_flops(FLOPS_PATH, MODEL) print(total_flops, total_params) exit() # define where to save the model model_name = f"{P_NAME}_{MODEL}_{BACKBONE}_{IN_HEIGHT}_{IN_WIDTH}_weights_{datetime.now().strftime('%d_%m_%y-%H_%M_%p')}" callbacks = get_callbacks(weights_path=WEIGHTS_OUT_PATH, model_name=model_name) # Load data using generator if generator: train_generator = data_generator(frames_path=FRAMES_TRAIN_PATH, masks_path=MASKS_TRAIN_PATH, fnames=os.listdir(FRAMES_TRAIN_PATH), n_classes=CLASSES, input_h=IN_HEIGHT, input_w=IN_WIDTH, batch_size=TRAIN_BATCH_SIZE, is_resizable=False, training=True) val_generator = data_generator(frames_path=FRAMES_VAL_PATH, masks_path=MASKS_VAL_PATH, fnames=os.listdir(FRAMES_VAL_PATH), n_classes=CLASSES, input_h=IN_HEIGHT, input_w=IN_WIDTH, batch_size=VAL_BATCH_SIZE, is_resizable=False, training=True)
test_masks = None if not os.path.isfile(UNET_MODEL_PATH): quit(f"Model file not found {UNET_MODEL_PATH}") if not os.path.isdir(FRAMES_TEST_IN_PATH) or not os.path.isdir(MASKS_TEST_IN_PATH): quit(f"Directory not found") # Create model model = UNet.build(pre_trained=True, model_path=UNET_MODEL_PATH, n_classes=3, input_h=320, input_w=320) # If images are loaded from generator if is_generator: test_data_generated = data_generator(frames_path=FRAMES_TEST_IN_PATH, masks_path=MASKS_TEST_IN_PATH, fnames=os.listdir(MASKS_TEST_IN_PATH), input_h=320, input_w=320, n_classes=3, batch_size=10, is_resizable=True) predicted_masks = model.predict_generator(test_data_generated, steps=15) # If images are loaded from builder(no generator) else: test_frames, test_masks = data_loader(frames_path=FRAMES_TEST_IN_PATH, masks_path=MASKS_TEST_IN_PATH, input_h=320, input_w=320, n_classes=3, fnames=os.listdir(MASKS_TEST_IN_PATH), is_resizable=True) # Predictive probs
if not os.path.isfile(WEIGHTS_IN_PATH): quit(f"Model file not found {WEIGHTS_IN_PATH}") if not os.path.isdir(FRAMES_TEST_IN_PATH) or not os.path.isdir(MASKS_TEST_IN_PATH): quit(f"Directory not found") # Load model from dispatcher and build network = MODELS[MODEL] model = network.build() #model.summary() # If images are loaded from generator if is_generator: test_data_generated = data_generator(frames_path=FRAMES_TEST_IN_PATH, masks_path=MASKS_TEST_IN_PATH, fnames=os.listdir(MASKS_TEST_IN_PATH), input_h=IN_HEIGHT, input_w=IN_WIDTH, n_classes=NO_CLASSES, batch_size=1, is_resizable=True) predicted_masks = model.predict_generator(test_data_generated, steps=6) # If images are loaded from builder(no generator) else: test_frames, test_masks = data_loader(frames_path=FRAMES_TEST_IN_PATH, masks_path=MASKS_TEST_IN_PATH, input_h=IN_HEIGHT, input_w=IN_WIDTH, n_classes=NO_CLASSES, fnames=os.listdir(MASKS_TEST_IN_PATH), is_resizable=False) # Predictive probs
# Load Env. variables FRAMES_TRAIN_PATH = os.environ.get("FRAMES_TRAIN_PATH") MASKS_TRAIN_PATH = os.environ.get("MASKS_TRAIN_PATH") FRAMES_VAL_PATH = os.environ.get("FRAMES_VAL_PATH") MASKS_VAL_PATH = os.environ.get("MASKS_VAL_PATH") #MODEL = os.environ.get("MODEL") MODELS_OUT_PATH = os.environ.get("MODELS_OUT_PATH") if __name__ == '__main__': # Image generator train_generator = data_generator(frames_path=FRAMES_TRAIN_PATH, masks_path=MASKS_TRAIN_PATH, fnames=os.listdir(FRAMES_TRAIN_PATH), n_classes=3, input_h=320, input_w=320, batch_size=25, is_resizable=True) val_generator = data_generator(frames_path=FRAMES_VAL_PATH, masks_path=MASKS_VAL_PATH, fnames=os.listdir(FRAMES_VAL_PATH), n_classes=3, input_h=320, input_w=320, batch_size=10, is_resizable=True) # Save model model_checkpoint_path = os.path.join(