VitalyVorobyev's picture
dl_adapters from dexined and superpoint
aaa448c
from typing import Any, Dict, Literal, Optional
from pydantic import BaseModel, Field
class DetectionParams(BaseModel):
canny_low: Optional[int] = Field(None, ge=0, le=255)
canny_high: Optional[int] = Field(None, ge=0, le=255)
harris_k: Optional[float] = Field(None, ge=0.0, le=1.0)
harris_block: Optional[int] = Field(None, ge=1, le=16)
harris_ksize: Optional[int] = Field(None, ge=1, le=15)
hough_thresh: Optional[int] = Field(None, ge=1, le=500)
hough_min_len: Optional[int] = Field(None, ge=1, le=1000)
hough_max_gap: Optional[int] = Field(None, ge=0, le=200)
ellipse_min_area: Optional[int] = Field(None, ge=10, le=100000)
max_ellipses: Optional[int] = Field(None, ge=1, le=100)
line_detector: Optional[Literal["hough", "lsd"]] = Field(
None,
description="Classical line detector variant to use: 'hough' (default) or 'lsd'.",
)
class DetectionRequest(BaseModel):
image: str = Field(..., description="Base64-encoded image (PNG/JPEG).")
params: Optional[DetectionParams] = None
mode: Literal["classical", "dl", "both"] = "classical"
compare: bool = False
dl_model: Optional[str] = Field(
None, description="Optional ONNX filename override from ./models."
)
class DetectionResponse(BaseModel):
overlay: Optional[str] = None
overlays: Dict[str, Optional[str]]
features: Dict[str, Any]
timings: Dict[str, float]
fps_estimate: Optional[float] = None
model: Dict[str, Any]
models: Dict[str, Dict[str, Any]]