File size: 1,099 Bytes
98075af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from __future__ import annotations

from typing import Any

from pydantic import BaseModel, ConfigDict, Field


class Point2D(BaseModel):
    x: float
    y: float


class AgentState(BaseModel):
    id: int
    type: str
    raw_label: str | None = None
    history: list[Point2D] = Field(default_factory=list)
    predictions: list[list[Point2D]] = Field(default_factory=list)
    probabilities: list[float] = Field(default_factory=list)
    is_target: bool = False


class LiveFusionRequest(BaseModel):
    anchor_idx: int = Field(default=3, ge=0)
    score_threshold: float = Field(default=0.35, ge=0.0, le=1.0)
    tracking_gate_px: float = Field(default=130.0, ge=1.0, le=500.0)
    use_pose: bool = False


class PredictionResponse(BaseModel):
    mode: str
    target_track_id: int | None = None
    agents: list[AgentState] = Field(default_factory=list)
    meta: dict[str, Any] = Field(default_factory=dict)
    detections: dict[str, Any] | None = None
    sensors: dict[str, Any] | None = None
    scene_geometry: dict[str, Any] | None = None

    model_config = ConfigDict(extra="allow")