"""Конфигурация проекта детекции дефектов окраски кузова.""" import os from pathlib import Path ROOT = Path(__file__).resolve().parent.parent DATA_RAW = ROOT / "data" / "raw" # raw/defect/*.jpg, raw/clean/*.jpg DATA_PATCHES = ROOT / "data" / "patches" # patches/train|val/{defect,clean} CHECKPOINTS = ROOT / "checkpoints" RUNS = ROOT / "runs" # Источник исходного датасета (АвтоВАЗ ТЗ) SOURCE_DATASET = ROOT.parent / "3_Дефекты_окраски_кузова(детали)" / "3_Дефекты_окраски_кузова(детали)" SRC_DEFECT = SOURCE_DATASET / "Фото с дефектами" SRC_CLEAN = SOURCE_DATASET / "Фото без дефектов" # Архитектура BACKBONE = os.getenv("PDD_BACKBONE", "tf_efficientnetv2_s.in21k_ft_in1k") # сильный backbone из timm NUM_CLASSES = 2 # defect / clean IMG_SIZE = 384 # размер патча на входе модели PATCH_SIZE = 512 # размер вырезаемого патча из 4000x1846 PATCH_STRIDE = 256 # шаг при инференсе (50% overlap) PANEL_CROP = True # автоматически вырезать панель из фона # Тренировка BATCH_SIZE = int(os.getenv("PDD_BATCH_SIZE", 16)) EPOCHS = int(os.getenv("PDD_EPOCHS", 40)) LR = float(os.getenv("PDD_LR", 3e-4)) WEIGHT_DECAY = 1e-4 LABEL_SMOOTH = 0.05 NUM_WORKERS = 2 SEED = 42 # Инференс / порог принятия решения DEFECT_THRESHOLD = 0.55 # вероятность для отнесения патча к "дефект" PANEL_DEFECT_RATIO = 0.005 # доля дефектных пикселей, чтобы пометить деталь как дефектную # REST API API_HOST = "0.0.0.0" API_PORT = 8080