Clean validator (#144)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
This commit is contained in:
Laughing
2023-01-05 21:14:01 +08:00
committed by GitHub
parent 46cb657b64
commit 19334ebb16
9 changed files with 88 additions and 74 deletions

View File

@ -469,7 +469,7 @@ class Metric:
def mean_results(self):
"""Mean of results, return mp, mr, map50, map"""
return self.mp, self.mr, self.map50, self.map
return [self.mp, self.mr, self.map50, self.map]
def class_result(self, i):
"""class-aware result, return p[i], r[i], ap50[i], ap[i]"""
@ -520,6 +520,7 @@ class DetMetrics:
def get_maps(self, nc):
return self.metric.get_maps(nc)
@property
def fitness(self):
return self.metric.fitness()
@ -527,6 +528,10 @@ class DetMetrics:
def ap_class_index(self):
return self.metric.ap_class_index
@property
def results_dict(self):
return dict(zip(self.keys + ["fitness"], self.mean_results() + [self.fitness]))
class SegmentMetrics:
@ -578,6 +583,7 @@ class SegmentMetrics:
def get_maps(self, nc):
return self.metric_box.get_maps(nc) + self.metric_mask.get_maps(nc)
@property
def fitness(self):
return self.metric_mask.fitness() + self.metric_box.fitness()
@ -585,3 +591,30 @@ class SegmentMetrics:
def ap_class_index(self):
# boxes and masks have the same ap_class_index
return self.metric_box.ap_class_index
@property
def results_dict(self):
return dict(zip(self.keys + ["fitness"], self.mean_results() + [self.fitness]))
class ClassifyMetrics:
def __init__(self) -> None:
self.top1 = 0
self.top5 = 0
def process(self, correct):
acc = torch.stack((correct[:, 0], correct.max(1).values), dim=1) # (top1, top5) accuracy
self.top1, self.top5 = acc.mean(0).tolist()
@property
def fitness(self):
return self.top5
@property
def results_dict(self):
return dict(zip(self.keys + ["fitness"], [self.top1, self.top5, self.fitness]))
@property
def keys(self):
return ["top1", "top5"]