SmartOffice-1 / analytics.py
SuriRaja's picture
Upload 13 files
98b1db7 verified
import time
from collections import defaultdict
class MetricsAggregator:
def __init__(self, fps=25.0):
self.fps = fps
self.per_id = defaultdict(lambda: {
'frames_present': 0,
'frames_in_corridor': 0,
'frames_on_phone': 0,
'frames_chatting': 0,
})
def step(self, tracks, in_corridor_ids, phone_ids, chatting_ids):
for tid in tracks.keys():
self.per_id[tid]['frames_present'] += 1
if tid in in_corridor_ids:
self.per_id[tid]['frames_in_corridor'] += 1
if tid in phone_ids:
self.per_id[tid]['frames_on_phone'] += 1
if tid in chatting_ids:
self.per_id[tid]['frames_chatting'] += 1
def summarize_minutes(self):
out = {}
for tid, m in self.per_id.items():
out[tid] = {
'present_min': round(m['frames_present'] / self.fps / 60.0, 2),
'corridor_min': round(m['frames_in_corridor'] / self.fps / 60.0, 2),
'phone_min': round(m['frames_on_phone'] / self.fps / 60.0, 2),
'chat_min': round(m['frames_chatting'] / self.fps / 60.0, 2),
}
return out