def main() -> None: timer = Timer('Model training') model_trainer, images = set_up_components('base_model_location') model_trainer.train_and_save_all_models(images) model_trainer.charts.finalize() print('class 1: ' + images.class_labels[0] + ', class 2: ' + images.class_labels[1]) timer.stop() timer.print_results()
def main(): # Start execution and parse arguments timer = Timer('Classifying a test set') image_folders, list_of_models, color_mode, image_size = process_input_arguments() # Import images images = LabeledImages(SEED) images.load_testing_images(image_folders, image_size, color_mode) print('Images imported.') combined_results = pd.DataFrame() combined_results['filename'] = images.test_img_names combined_results['actual_class'] = images.test_labels all_predictions = pd.DataFrame() for model_path in list_of_models: classify_images_with_a_model(images.class_labels, all_predictions, images, model_path) all_predictions['voted_probability'] = all_predictions.mean(axis=1) # calculate_confusion_matrix(combined_results) combined_results = combined_results.join(all_predictions) combined_results['tp'] = combined_results.eval('actual_class == 1 and voted_probability >= 0.5') combined_results['fn'] = combined_results.eval('actual_class == 1 and voted_probability < 0.5') combined_results['fp'] = combined_results.eval('actual_class == 0 and voted_probability >= 0.5') combined_results['tn'] = combined_results.eval('actual_class == 0 and voted_probability < 0.5') combined_results['voted_label'] = combined_results.eval('voted_probability >= 0.5') combined_results['tp'] = combined_results['tp'].map(lambda v: 1 if v else 0) combined_results['fn'] = combined_results['fn'].map(lambda v: 1 if v else 0) combined_results['fp'] = combined_results['fp'].map(lambda v: 1 if v else 0) combined_results['tn'] = combined_results['tn'].map(lambda v: 1 if v else 0) combined_results['voted_label'] = combined_results['voted_label'].map(lambda v: 1 if v else 0) combined_results.columns = ['filename', 'actual_class'] + list_of_models + \ ['voted_probability', 'tp', 'fn', 'fp', 'tn', 'voted_label'] if not os.path.exists('predictions'): os.makedirs('predictions') write_dataframe_to_csv('predictions', 'model_vote_predict', combined_results) # Finish execution timer.stop() timer.print_results()
def main() -> None: timer = Timer('Model training') cnn_arguments = CNNArguments() new_images = LabeledImages(SEED) new_images.load_images_from_folders(cnn_arguments.training_image_folder, cnn_arguments.image_size, cnn_arguments.color_mode, shuffle=True, n_folds=cnn_arguments.n_folds) architecture = SmithsonianModel(SEED, cnn_arguments.lr, cnn_arguments.image_size, cnn_arguments.color_mode) trainer = ModelTrainer(cnn_arguments.n_epochs, cnn_arguments.batch_size, cnn_arguments.n_folds, architecture, SEED) trainer.train_and_save_all_models(new_images) trainer.charts.finalize() print('class 1: ' + new_images.class_labels[0] + ', class 2: ' + new_images.class_labels[1]) timer.stop() timer.print_results()