Spaces:
Running
Running
from collections import OrderedDict | |
class Metrics: | |
def __init__(self, name='metrics'): | |
# Data dicts | |
self.error = OrderedDict() | |
self.metrics_log = OrderedDict() | |
self.name = name | |
self.database = None | |
self.data_type = None | |
def compute_error(self, data_anns, data_pred, database, select_ids=None): | |
self.init_ce(data_anns, data_pred, database) | |
raise ValueError('Computer error has to be implemented by inheritance') | |
def init_ce(self, data_anns, data_pred, database): | |
# Update database info | |
[self.database, self.data_type] = database | |
# Logs and checks | |
print('Computing %s error...' % self.name) | |
if len(data_anns) == 0: | |
raise ValueError('Annotations miss for computing error in %s' % self.name) | |
if len(data_pred) == 0: | |
raise ValueError('Predictions miss for computing error in %s' % self.name) | |
elif len(data_pred) != len(data_anns): | |
raise Warning('Prediction vs annotations length mismatch') | |
def metrics(self): | |
self.init_metrics() | |
raise ValueError('Metrics has to be implemented by inheritance') | |
def init_metrics(self): | |
# Logs and checks | |
print('> Metrics %s:' % self.name) | |
if len(self.error) == 0: | |
raise ValueError('Error must be compute first in %s' % self.name) | |
def get_pimg_err(self, data_dict): | |
return data_dict | |