Fucius's picture
Upload 422 files
df6c67d verified
from typing import List, Optional, Union
from pydantic import BaseModel, Field
from inference.core.interfaces.camera.video_source import (
BufferConsumptionStrategy,
BufferFillingStrategy,
)
class UDPSinkConfiguration(BaseModel):
type: str = Field(
description="Type identifier field. Must be `udp_sink`", default="udp_sink"
)
host: str = Field(description="Host of UDP sink.")
port: int = Field(description="Port of UDP sink.")
class ObjectDetectionModelConfiguration(BaseModel):
type: str = Field(
description="Type identifier field. Must be `object-detection`",
default="object-detection",
)
class_agnostic_nms: Optional[bool] = Field(
description="Flag to decide if class agnostic NMS to be applied. If not given, default or InferencePipeline host env will be used.",
default=None,
)
confidence: Optional[float] = Field(
description="Confidence threshold for predictions. If not given, default or InferencePipeline host env will be used.",
default=None,
)
iou_threshold: Optional[float] = Field(
description="IoU threshold of post-processing. If not given, default or InferencePipeline host env will be used.",
default=None,
)
max_candidates: Optional[int] = Field(
description="Max candidates in post-processing. If not given, default or InferencePipeline host env will be used.",
default=None,
)
max_detections: Optional[int] = Field(
description="Max detections in post-processing. If not given, default or InferencePipeline host env will be used.",
default=None,
)
class PipelineInitialisationRequest(BaseModel):
model_id: str = Field(description="Roboflow model id")
video_reference: Union[str, int] = Field(
description="Reference to video source - either stream, video file or device. It must be accessible from the host running inference stream"
)
sink_configuration: UDPSinkConfiguration = Field(
description="Configuration of the sink."
)
api_key: Optional[str] = Field(description="Roboflow API key", default=None)
max_fps: Optional[Union[float, int]] = Field(
description="Limit of FPS in video processing.", default=None
)
source_buffer_filling_strategy: Optional[str] = Field(
description=f"`source_buffer_filling_strategy` parameter of Inference Pipeline (see docs). One of {[e.value for e in BufferFillingStrategy]}",
default=None,
)
source_buffer_consumption_strategy: Optional[str] = Field(
description=f"`source_buffer_consumption_strategy` parameter of Inference Pipeline (see docs). One of {[e.value for e in BufferConsumptionStrategy]}",
default=None,
)
model_configuration: ObjectDetectionModelConfiguration = Field(
description="Configuration of the model",
default_factory=ObjectDetectionModelConfiguration,
)
active_learning_enabled: Optional[bool] = Field(
description="Flag to decide if Active Learning middleware should be enabled. If not given - env variable `ACTIVE_LEARNING_ENABLED` will be used (with default `True`).",
default=None,
)
class CommandContext(BaseModel):
request_id: Optional[str] = Field(
description="Server-side request ID", default=None
)
pipeline_id: Optional[str] = Field(
description="Identifier of pipeline connected to operation", default=None
)
class CommandResponse(BaseModel):
status: str = Field(description="Operation status")
context: CommandContext = Field(description="Context of the command.")
class InferencePipelineStatusResponse(CommandResponse):
report: dict
class ListPipelinesResponse(CommandResponse):
pipelines: List[str] = Field(description="List IDs of active pipelines")