Harshasnade's picture
Deploy Backend (No Frontend)
0966609
import os
import torch
import platform
class Config:
# System
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATA_DIR = os.path.join(PROJECT_ROOT, "data")
RESULTS_DIR = os.path.join(PROJECT_ROOT, "results")
# Model Architecture
IMAGE_SIZE = 256
NUM_CLASSES = 1 # Logic: 0=Real, 1=Fake (Sigmoid output)
# Component Flags
USE_RGB = True
USE_FREQ = True
USE_PATCH = True
USE_VIT = True
# Training Hyperparameters
BATCH_SIZE = 32 # Optimized for Mac M4 (Unified Memory)
EPOCHS = 3
LEARNING_RATE = 1e-4
WEIGHT_DECAY = 1e-5
NUM_WORKERS = 8 # Leverage M4 Performance Cores
# Hardware
DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
# Paths
# Docker Deployment: Use relative paths
DATA_DIR = os.path.join(PROJECT_ROOT, "data")
# Since we are using the root folder, the script will recursively find ALL images
# in all sub-datasets and split them 80/20 for training/validation.
TRAIN_DATA_PATH = DATA_DIR
TEST_DATA_PATH = DATA_DIR
CHECKPOINT_DIR = os.path.join(RESULTS_DIR, "checkpoints")
@classmethod
def setup(cls):
os.makedirs(cls.RESULTS_DIR, exist_ok=True)
os.makedirs(cls.CHECKPOINT_DIR, exist_ok=True)
os.makedirs(cls.DATA_DIR, exist_ok=True)
print(f"Project initialized at {cls.PROJECT_ROOT}")
print(f"Using device: {cls.DEVICE}")
if __name__ == "__main__":
Config.setup()