paint_defect_detector / src\config.py
therealestcoder's picture
Upload src\config.py with huggingface_hub
3771fa4 verified
"""Конфигурация проекта детекции дефектов окраски кузова."""
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