yolo8 / src /detection /detector.py
mayanktak15's picture
Upload folder using huggingface_hub
c94751c verified
Raw
History Blame Contribute Delete
918 Bytes
"""Reusable detector abstractions."""
from __future__ import annotations
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Sequence
import numpy as np
BBox = tuple[float, float, float, float]
@dataclass(slots=True)
class Detection:
"""Single object detection emitted by a detector."""
class_name: str
confidence: float
bbox: BBox
class_id: int | None = None
def as_dict(self) -> dict[str, object]:
return {
"class": self.class_name,
"confidence": round(float(self.confidence), 4),
"bbox": [round(float(v), 2) for v in self.bbox],
"class_id": self.class_id,
}
class BaseDetector(ABC):
"""Contract for frame-level object detectors."""
@abstractmethod
def detect(self, frame: np.ndarray) -> Sequence[Detection]:
"""Return detections for one BGR video frame."""