support gsam2 image predictor model
This commit is contained in:
62
grounding_dino/groundingdino/util/time_counter.py
Normal file
62
grounding_dino/groundingdino/util/time_counter.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import json
|
||||
import time
|
||||
|
||||
|
||||
class TimeCounter:
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
|
||||
def clear(self):
|
||||
self.timedict = {}
|
||||
self.basetime = time.perf_counter()
|
||||
|
||||
def timeit(self, name):
|
||||
nowtime = time.perf_counter() - self.basetime
|
||||
self.timedict[name] = nowtime
|
||||
self.basetime = time.perf_counter()
|
||||
|
||||
|
||||
class TimeHolder:
|
||||
def __init__(self) -> None:
|
||||
self.timedict = {}
|
||||
|
||||
def update(self, _timedict: dict):
|
||||
for k, v in _timedict.items():
|
||||
if k not in self.timedict:
|
||||
self.timedict[k] = AverageMeter(name=k, val_only=True)
|
||||
self.timedict[k].update(val=v)
|
||||
|
||||
def final_res(self):
|
||||
return {k: v.avg for k, v in self.timedict.items()}
|
||||
|
||||
def __str__(self):
|
||||
return json.dumps(self.final_res(), indent=2)
|
||||
|
||||
|
||||
class AverageMeter(object):
|
||||
"""Computes and stores the average and current value"""
|
||||
|
||||
def __init__(self, name, fmt=":f", val_only=False):
|
||||
self.name = name
|
||||
self.fmt = fmt
|
||||
self.val_only = val_only
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
self.val = 0
|
||||
self.avg = 0
|
||||
self.sum = 0
|
||||
self.count = 0
|
||||
|
||||
def update(self, val, n=1):
|
||||
self.val = val
|
||||
self.sum += val * n
|
||||
self.count += n
|
||||
self.avg = self.sum / self.count
|
||||
|
||||
def __str__(self):
|
||||
if self.val_only:
|
||||
fmtstr = "{name} {val" + self.fmt + "}"
|
||||
else:
|
||||
fmtstr = "{name} {val" + self.fmt + "} ({avg" + self.fmt + "})"
|
||||
return fmtstr.format(**self.__dict__)
|
Reference in New Issue
Block a user