kyc-backend / app /config.py
supraptin's picture
Fix: correct InsightFace model directory structure (root/models/name)
26d5d83
"""
Configuration settings for KYC POC application.
"""
from pydantic_settings import BaseSettings
from typing import List
from pathlib import Path
class Settings(BaseSettings):
"""Application settings."""
# Application
APP_NAME: str = "KYC POC API"
APP_VERSION: str = "1.0.0"
DEBUG: bool = True
# Model paths
AURAFACE_MODEL_DIR: str = "insightface_models/models/auraface"
ANTISPOOF_MODEL_DIR: str = "models/anti_spoof"
SILENT_FACE_REPO_DIR: str = "Silent-Face-Anti-Spoofing"
# Face matching
FACE_MATCH_THRESHOLD: float = 0.5
# Liveness detection
LIVENESS_THRESHOLD: float = 0.5
# Face quality thresholds
BLUR_THRESHOLD: float = 100.0 # Below this = blurry
BRIGHTNESS_MIN: float = 0.2 # Below this = too dark
BRIGHTNESS_MAX: float = 0.8 # Above this = too bright
POSE_MAX_YAW: float = 30.0 # Max yaw angle for frontal face
POSE_MAX_PITCH: float = 30.0 # Max pitch angle for frontal face
POSE_MAX_ROLL: float = 30.0 # Max roll angle for frontal face
# Device settings
USE_GPU: bool = False # CPU mode for POC
DEVICE_ID: int = -1 # -1 for CPU, 0+ for GPU
# API settings
MAX_IMAGE_SIZE_MB: float = 10.0
ALLOWED_IMAGE_TYPES: List[str] = ["image/jpeg", "image/png", "image/jpg"]
# Face detection settings
DET_SIZE: tuple = (640, 640) # Detection input size
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
@property
def max_image_size_bytes(self) -> int:
"""Get max image size in bytes."""
return int(self.MAX_IMAGE_SIZE_MB * 1024 * 1024)
@property
def auraface_path(self) -> Path:
"""Get AuraFace model path."""
return Path(self.AURAFACE_MODEL_DIR)
@property
def antispoof_path(self) -> Path:
"""Get anti-spoof model path."""
return Path(self.ANTISPOOF_MODEL_DIR)
# Global settings instance
settings = Settings()