Beispiel #1
0
def main(args):
    x_train, y_train, feature_names, selected_pixels_train, paths_train = ml_utils.create_samples(
        args.dataset_names[0], args.dataset_paths[0], args.mat_files[0],
        args.balanced[0], bool(strtobool(args.save_images)))
    x_test, y_test, feature_names, selected_pixels_test, paths_test = ml_utils.create_samples(
        args.dataset_names[1], args.dataset_paths[1], args.mat_files[1],
        args.balanced[1], bool(strtobool(args.save_images)))
    selected_indices, selected_features = ml_utils.get_feature_subset(
        args, feature_names)
    log_string = "Selected features:\n%s\n" % selected_features
    print(log_string)

    parameter_dict = ml_utils.get_parameter_dict(args)
    clf = available_models[args.model](**parameter_dict)
    scoring = {}
    for metric in args.metrics:
        score_func = available_scores[metric]
        scoring[metric] = score_func if score_func is not None else None

    test_images = [
        "'%s'" % os.path.split(paths_test[0][idx])[-1]
        for idx in range(len(paths_test[0]))
    ]
    test_images = "[%s]" % ", ".join(test_images)

    if not os.path.exists(args.save_results_to):
        os.makedirs(args.save_results_to)
    with open(os.path.join(args.save_results_to, "results.txt"), "w") as f:
        f.write(log_string)
        print("Classifier: %s" % str(clf))
        f.write("\nClassifier: %s\n" % str(clf))
        clf.fit(x_train, y_train)

        predictions = clf.predict(x_test)
        dsc = False
        for metric in scoring.keys():
            if metric == "dsc":
                dsc = True
                continue
            if scoring[metric] is None:
                value = 100 * clf.score(x_test, y_test)
            else:
                value = 100 * scoring[metric](y_test, predictions)
            print("{}(%) = {:.2f}".format(metric, value))
            f.write("\n{}(%) = {:.2f}\n".format(metric, value))

        print("\nTest images per fold (dataset %s):\n%s" %
              (args.dataset_names[1], test_images))
        f.write("\nTest images per fold (dataset %s):\n%s" %
                (args.dataset_names[1], test_images))
        ml_utils.save_visual_results(selected_pixels_test, predictions, y_test,
                                     paths_test, args.save_results_to)

    if dsc:
        ml_utils.calculate_dsc_from_result_folder(args.save_results_to)
Beispiel #2
0
def one_dataset_crossvalidation(selected_features="all"):
    dataset_name = "cfd-pruned"
    dataset_folder = "/media/winbuntu/databases/CrackForestDatasetPruned"
    mat_path = "cfd-pruned.mat"
    # mat_path = None
    save_images = False

    x, y, feature_names, selected_pixels, paths = ml_utils.create_samples(
        dataset_name, dataset_folder, mat_path, False, save_images)
    train_sgd_models(x,
                     y,
                     feature_names,
                     selected_pixels,
                     paths,
                     selected_features=selected_features)
Beispiel #3
0
def main(args):
    x, y, feature_names, selected_pixels, paths = ml_utils.create_samples(args.dataset_name, args.dataset_path, None,
                                                                          args.balanced,
                                                                          bool(strtobool(args.save_images)))
    return x, y, feature_names, selected_pixels, paths
Beispiel #4
0
def main(args):
    x, y, feature_names, selected_pixels, paths = ml_utils.create_samples(args.dataset_name, args.dataset_path,
                                                                          args.mat_file, args.balanced,
                                                                          bool(strtobool(args.save_images)))
    ml_utils.n_fold_cross_validation(args, available_models, available_scores, x, y, feature_names, selected_pixels,
                                     paths)
Beispiel #5
0
    dataset_name_2 = "cfd-pruned"
    dataset_folder_2 = "/media/winbuntu/databases/CrackForestDatasetPruned"
    mat_path_2 = "cfd-pruned.mat"
    # mat_path_2 = None
    balanced_2 = False
    save_images_2 = False

    test_models_cross_dataset([dataset_name_1, dataset_name_2],
                              [dataset_folder_1, dataset_folder_2],
                              [mat_path_1, mat_path_2],
                              [balanced_1, balanced_2],
                              [save_images_1, save_images_2],
                              selected_features=selected_features)


# selected_features = "Frangi's vesselness;Bottom-hat;Cross bottom-hat;Sliding mean 50x50;Sliding std 50x50;Sliding median 50x50;Sliding mad 50x50"
selected_features = "all"
# one_dataset_balanced_crossvalidation(selected_features)

dataset_name = "aigle-rn"
dataset_folder = "/media/winbuntu/databases/CrackDataset"
# mat_path = "cfd-pruned.mat"
mat_path = None
balanced = False
save_images = True

x, y, feature_names, selected_pixels, paths = ml_utils.create_samples(
    dataset_name, dataset_folder, mat_path, balanced, save_images)
# feature_selection(x, y, feature_names)