From ec4dec6dc957dff7ac906692b2e231b60c01088f Mon Sep 17 00:00:00 2001 From: Nickiel12 <35903114+Nickiel12@users.noreply.github.com> Date: Tue, 10 Oct 2023 18:13:49 -0700 Subject: [PATCH] added validation statistics --- .gitignore | 3 +- validation/compare_to_gt.py | 97 ++++++++++++++++++++++++++++++++++++ validation/final.xlsx | Bin 0 -> 54762 bytes validation/ground_truth.txt | 1 - 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 validation/compare_to_gt.py create mode 100644 validation/final.xlsx diff --git a/.gitignore b/.gitignore index 09561d3..7fc8105 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ training_data/training_data_*/ training_data/*.vec training_data/backgrounds.txt training_data/negatives -training_data/opencv \ No newline at end of file +training_data/opencv +validation/cascade* \ No newline at end of file diff --git a/validation/compare_to_gt.py b/validation/compare_to_gt.py new file mode 100644 index 0000000..cbde07f --- /dev/null +++ b/validation/compare_to_gt.py @@ -0,0 +1,97 @@ +import argparse +import os + +def dir_path(string): + if os.path.exists(string): + return string + else: + raise NotADirectoryError(string) + +def init_argparse() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="FaceDetection", + usage="%(prog)s [OPTION]", + description="Run face localization" + ) + parser.add_argument( + "ground_truth", type=dir_path, help="ground truth file" + ) + parser.add_argument( + "test_file", type=dir_path, help="file to compare to the ground truth" + ) + parser.add_argument( + "out_file", help="the file to write the output to" + ) + return parser + +multiplication_factor = 0.05 +def get_adjustment_amount(imgSize, x1, y1, x2, y2): + + # find the difference between the left gap and the right gap, divide it by two, and multiply it by the speed scale + horizontal_adjustment = multiplication_factor * (x1 - (imgSize[0] - x2)) / 2 + vertical_adjustment = multiplication_factor * (y1 - (imgSize[0] - y2)) / 2 + + return [horizontal_adjustment, vertical_adjustment] + +parser = init_argparse() +args = parser.parse_args() + +class FrameBox: + frame_number: int + top_left: tuple + bottom_right: tuple + + def __init__(self, frame_number, x1, y1, x2, y2): + self.frame_number = frame_number + self.top_left = (x1, y1) + self.bottom_right = (x2, y2) + +ground_truth = [] +with open(args.ground_truth, 'r') as gt_file: + lines = gt_file.readlines() + for line in lines: + items = line.split(",") + ground_truth.append(FrameBox(int(items[0].strip()), int(items[1].strip()), int(items[2].strip()), int(items[3].strip()), int(items[4].strip()))) + +test_results = [] +with open(args.test_file, 'r') as test_file: + lines = test_file.readlines() + for line in lines: + items = line.split(",") + test_results.append(FrameBox(int(items[0].strip()), int(items[1].strip()), int(items[2].strip()), int(items[3].strip()), int(items[4].strip()))) + +test_fb: FrameBox +gt_frame: FrameBox +last_frame_num = 0 +average_sum = 0 +average_count = 0 +print("length of test file: " + str(len(test_results))) +for test_fb in test_results: + # make + def bring_up_gt(): + if test_fb.frame_number > ground_truth[0].frame_number: + ground_truth.pop(0) + bring_up_gt() + + bring_up_gt() + + assert(ground_truth[0].frame_number == test_fb.frame_number) + gt_frame = ground_truth[0] + + gt_adjustment = get_adjustment_amount((1920, 1000), gt_frame.top_left[0], gt_frame.top_left[1], gt_frame.bottom_right[0], gt_frame.bottom_right[1]) + test_adjustment = get_adjustment_amount((1920, 1000), test_fb.top_left[0], test_fb.top_left[1], test_fb.bottom_right[0], test_fb.bottom_right[1]) + + if last_frame_num != test_fb.frame_number and average_count != 0: + with open(args.out_file, 'a') as out_file: + out_file.write(f"{average_sum},\n") + average_sum = 0 + average_count = 0 + + average_count += 1 + # get the average + average_sum += abs(( (gt_adjustment[0] - test_adjustment[0]) + (gt_adjustment[1] - test_adjustment[1]) ) / 2) + + last_frame_num = test_fb.frame_number + + + \ No newline at end of file diff --git a/validation/final.xlsx b/validation/final.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e2e7fe8a573158ec9a342ecfaca38a3026866700 GIT binary patch literal 54762 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 literal 0 HcmV?d00001 diff --git a/validation/ground_truth.txt b/validation/ground_truth.txt index 36b9c2a..adc730a 100644 --- a/validation/ground_truth.txt +++ b/validation/ground_truth.txt @@ -1,4 +1,3 @@ -frame_number, top_left_x, top_left_y, bottom_right_x, bottom_right_y 0, 856, 189, 1202, 623 1, 856, 189, 1202, 623 2, 857, 189, 1203, 623