File size: 1,618 Bytes
bcc2f7b
 
 
 
 
 
ffdd945
bcc2f7b
 
 
 
 
 
 
32aa8db
bcc2f7b
32aa8db
bcc2f7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ffdd945
 
 
 
bcc2f7b
 
 
ffdd945
bcc2f7b
 
 
 
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""
Configuration management for the FastAPI application.
"""

import os
from typing import Optional
from pydantic_settings import BaseSettings


class Settings(BaseSettings):
    """Application settings."""
    
    # API Configuration
    API_V1_STR: str = "/api/v1"
    PROJECT_NAME: str = "Seamo Species API"
    VERSION: str = "1.0.0"
    DESCRIPTION: str = "FastAPI-based species identification using YOLOv5"
    
    # Model Configuration
    MODEL_NAME: str = "marina-benthic-33k"
    MODEL_PATH: str = "models/marina-benthic-33k.pt"
    HUGGINGFACE_REPO: str = "seamo-ai/marina-species-v1"
    DEVICE: Optional[str] = None  # Auto-detect if None
    
    # Inference Configuration
    DEFAULT_CONFIDENCE_THRESHOLD: float = 0.25
    DEFAULT_IOU_THRESHOLD: float = 0.45
    DEFAULT_IMAGE_SIZE: int = 720
    MAX_IMAGE_SIZE: int = 1280
    MIN_IMAGE_SIZE: int = 320
    
    # File Upload Configuration
    MAX_FILE_SIZE: int = 10 * 1024 * 1024  # 10MB
    ALLOWED_EXTENSIONS: set = {".jpg", ".jpeg", ".png", ".bmp", ".tiff", ".webp"}
    
    # Performance Configuration
    MODEL_CACHE_SIZE: int = 1
    ENABLE_MODEL_WARMUP: bool = True
    
    # HuggingFace Configuration
    HF_HUB_OFFLINE: bool = os.getenv("HF_HUB_OFFLINE", "0") == "1"
    TRANSFORMERS_NO_ADVISORY_WARNINGS: bool = True
    
    # Server Configuration
    HOST: str = "0.0.0.0"
    PORT: int = 7860  # HuggingFace Spaces standard

    # Development Configuration
    DEBUG: bool = False

    class Config:
        env_file = ".env"
        case_sensitive = True
        extra = "ignore"


# Global settings instance
settings = Settings()