forked from jacobjanak/VideaHealth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
64 lines (51 loc) · 2.1 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import sys
import os
from argparse import ArgumentParser
from pathlib import PurePath, Path
# Import classes
from Classes.CSVReader import CSVReader
from Classes.Converter import Converter
from Classes.Image import Image
from Classes.Box import Box
from Classes.CSVWriter import CSVWriter
# Import scripts
from Scripts.non_maximum_suppression import nonmaximum_suppression
from Scripts.teeth_arrangement import teeth_arrangements
from Scripts.missing_tooth import missing_tooth
from Scripts.relabel import relabel
# Quanitifies the accuracy of our output
from Tests.precision_recall import precision_recall_iou, f1_iou, precision_recall_ious, f1_ious
# Visualizer to see the results on an image
from Tests.visualizer import visualizer
# Command line arguments
parser = ArgumentParser()
parser.add_argument("-V", "--visualize", action="store_true", help="Visualize the data")
args = parser.parse_args()
# File paths
project_dir = Path(__file__).parent.absolute()
current_dir = Path.cwd()
data_dir = project_dir / "Sample_Data"
img_folder = str(data_dir / "images")
file_gt = str(data_dir / "1_ground_truth.csv")
file_pred = str(data_dir / "2_input_model_predictions.csv")
file_bw_pa = str(data_dir / "bw_pa.csv")
# Read the input CSV file
input_raw = CSVReader(file_pred, file_bw_pa).output
images_input = Converter(input_raw).result
# Import the ground truth data
gt_raw = CSVReader(file_gt).output
images_gt = Converter(gt_raw).result
iou_threshold = 0.7
print("\nTesting Without Script:")
(precision, recall) = precision_recall_ious(images_input, images_gt)
print('precision, recall = {}'.format((precision, recall)))
print('f1 = {}'.format(f1_ious(precision, recall)))
images_gt = Converter(gt_raw).result
images_input = Converter(input_raw).result
print("\nTesting NMS script:")
images_pred = nonmaximum_suppression(images_input, threshold=0.38, iouThreshold=0.39)
(precision, recall) = precision_recall_ious(images_pred, images_gt, iou_threshold)
print('precision, recall = {}'.format((precision, recall)))
print('f1 = {}\n'.format(f1_ious(precision, recall)))
if args.visualize:
visualizer(img_folder, "NMS", images_pred, images_gt)