Features: - Fire detection (YOLOv10) - Helmet detection (YOLOv8) - Crowd detection (YOLOv8) - Smoking detection (YOLOv8) - Loitering detection (YOLOv8) Tech Stack: - Frontend: Vue 3 + Vite + Element Plus - Backend: FastAPI + WebSocket - Monorepo: pnpm workspace + Turbo - Docker support included
40 lines
934 B
Python
40 lines
934 B
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Optional, Dict, Any
|
|
from enum import Enum
|
|
|
|
class ModelInfo(BaseModel):
|
|
id: str
|
|
name: str
|
|
description: str
|
|
classes: List[str]
|
|
labels: Dict[str, str]
|
|
size: str
|
|
type: str
|
|
|
|
class Detection(BaseModel):
|
|
class_name: str
|
|
label: str
|
|
confidence: float
|
|
bbox: List[int]
|
|
|
|
class DetectionStats(BaseModel):
|
|
total_detections: int
|
|
avg_confidence: float
|
|
processing_time: float
|
|
model_used: str
|
|
|
|
class ImageDetectionResult(BaseModel):
|
|
success: bool
|
|
message: str
|
|
data: Dict[str, Any]
|
|
|
|
class VideoDetectionRequest(BaseModel):
|
|
model_id: str
|
|
confidence: float = Field(default=0.5, ge=0.1, le=1.0)
|
|
iou: float = Field(default=0.45, ge=0.1, le=0.9)
|
|
|
|
class DetectionConfig(BaseModel):
|
|
model_id: str
|
|
confidence: float = Field(default=0.5, ge=0.1, le=1.0)
|
|
iou: float = Field(default=0.45, ge=0.1, le=0.9)
|