from __future__ import annotations from pathlib import Path APP_ROOT = Path(__file__).resolve().parents[1] MODELS_DIR = APP_ROOT / "models" RESULTS_DIR = APP_ROOT / "results" SELECTED_ENSEMBLE_PATH = RESULTS_DIR / "selected_ensemble.json" CLASS_NAMES = ["glioma", "meningioma", "notumor", "pituitary"] CLASS_DISPLAY_NAMES = { "glioma": "Glioma", "meningioma": "Meningioma", "notumor": "No tumor", "pituitary": "Pituitary", } IMAGE_SIZE = 224 NORMALIZE_MEAN = [0.485, 0.456, 0.406] NORMALIZE_STD = [0.229, 0.224, 0.225] # The selected deployment ensemble from the ablation notebook. # Zero-weight members are intentionally omitted. ENSEMBLE_MEMBERS = [ { "member": "efficientnet_b0__seed123", "model_name": "efficientnet_b0", "seed": 123, "weight": 0.49513684, "checkpoint_file": "best_efficientnet_b0_seed123.pt", "display_name": "EfficientNet-B0 · seed 123", }, { "member": "efficientnet_b0__seed2026", "model_name": "efficientnet_b0", "seed": 2026, "weight": 0.35077890, "checkpoint_file": "best_efficientnet_b0_seed2026.pt", "display_name": "EfficientNet-B0 · seed 2026", }, { "member": "mobilenet_v3_small__seed42", "model_name": "mobilenet_v3_small", "seed": 42, "weight": 0.15408426, "checkpoint_file": "best_mobilenet_v3_small_seed42.pt", "display_name": "MobileNetV3-Small · seed 42", }, ]