from __future__ import annotations from pathlib import Path import os PROJECT_ROOT = Path(__file__).resolve().parents[1] ASSETS_DIR = PROJECT_ROOT / "assets" GALLERY_DIR = ASSETS_DIR / "gallery" EXAMPLES_DIR = ASSETS_DIR / "examples" VIDEOS_DIR = ASSETS_DIR / "videos" OUTPUT_DIR = Path(os.environ.get("FPSI_OUTPUT_DIR", "/tmp/fuzzypsi_hamming_out")) OUTPUT_DIR.mkdir(parents=True, exist_ok=True) ENROLLMENT_DIR = Path(os.environ.get("FPSI_ENROLLMENT_DIR", str(OUTPUT_DIR / "enrolled_gallery"))) ENROLLMENT_DIR.mkdir(parents=True, exist_ok=True) ENROLLMENT_IMAGES_DIR = ENROLLMENT_DIR / "images" ENROLLMENT_IMAGES_DIR.mkdir(parents=True, exist_ok=True) ENROLLMENT_FEATURES_PATH = ENROLLMENT_DIR / "enrolled_features.npz" ENROLLMENT_MANIFEST_PATH = ENROLLMENT_DIR / "enrolled_manifest.json" SPACE_TITLE = "FuzzyPSI-hamming" SPACE_SUBTITLE = "Private face identification over Hamming distance" DEFAULT_MODE = os.environ.get("FPSI_DEMO_MODE", "simulation") SUPPORTED_MODES = ("simulation", "full") DEFAULT_DIMENSIONS = (128, 256, 512) DEFAULT_DIM = 128 DEFAULT_SECURITY_LAMBDA = 40 DEFAULT_N_SENDER = 512 DEFAULT_N_RECEIVER = 100 DEFAULT_FRAME_SAMPLE_LIMIT = 8 DEFAULT_VIDEO_SECONDS = 12 REALTIME_STREAM_SECONDS = float(os.environ.get("FPSI_REALTIME_STREAM_SECONDS", "2.0")) PCA_FIT_SAMPLE_LIMIT = int(os.environ.get("FPSI_PCA_FIT_SAMPLE_LIMIT", "2048")) LFW_FEATURES_PATH = os.environ.get("LFW_FEATURES_PATH", str(GALLERY_DIR / "lfw_gallery_full.npz")) LFW_CALIBRATION_PATH = os.environ.get("LFW_CALIBRATION_PATH", str(GALLERY_DIR / "lfw_gallery_calibration.npz")) LFW_VISIBLE_MANIFEST = os.environ.get("LFW_VISIBLE_MANIFEST", str(GALLERY_DIR / "gallery_manifest_full.json")) LFW_EXAMPLES_MANIFEST = os.environ.get("LFW_EXAMPLES_MANIFEST", str(EXAMPLES_DIR / "examples_manifest_full.json")) LFW_IMAGE_ROOT = os.environ.get("LFW_IMAGE_ROOT", "") FULL_PROTOCOL_ENABLED = os.environ.get("FPSI_ENABLE_FULL_PROTOCOL", "0") == "1" FULL_PROTOCOL_DIR = Path(os.environ.get("FPSI_PROTOCOL_ROOT", str(PROJECT_ROOT / "runtime"))) FULL_PROTOCOL_BUILD_DIR = Path(os.environ.get("FPSI_PROTOCOL_BUILD_DIR", str(FULL_PROTOCOL_DIR / "build"))) FACE_MODEL_DEVICE = os.environ.get("FPSI_FACE_DEVICE", "cpu") MATCH_THRESHOLD_MARGIN = float(os.environ.get("FPSI_THRESHOLD_MARGIN", "0.0"))