""" Konfigurasi untuk project penerjemah bahasa isyarat Indonesia. Berisi konfigurasi project sesuai README.md. """ import random import numpy as np import torch from pathlib import Path # Random seed for reproducibility RANDOM_SEED = 42 # Set random seeds random.seed(RANDOM_SEED) np.random.seed(RANDOM_SEED) torch.manual_seed(RANDOM_SEED) if torch.cuda.is_available(): torch.cuda.manual_seed_all(RANDOM_SEED) # Base paths BASE_DIR = Path(__file__).parent.parent DATASET_DIR = BASE_DIR / "dataset" # Dataset paths RAW_DIR = DATASET_DIR / "raw" LANDMARK_DIR = DATASET_DIR / "landmark" NORMALIZED_DIR = DATASET_DIR / "normalized" TRAIN_DIR = DATASET_DIR / "train" TEST_DIR = DATASET_DIR / "test" # Model paths (sesuai README: models/{category}/) MODEL_DIR = BASE_DIR / "models" # Output paths OUTPUT_DIR = BASE_DIR / "outputs" CONFUSION_MATRIX_DIR = OUTPUT_DIR / "confusion_matrix" CLASSIFICATION_REPORT_DIR = OUTPUT_DIR / "classification_report" ACCURACY_DIR = OUTPUT_DIR / "accuracy" LOSS_DIR = OUTPUT_DIR / "loss" # Create directories for dir_path in [MODEL_DIR, CONFUSION_MATRIX_DIR, CLASSIFICATION_REPORT_DIR, ACCURACY_DIR, LOSS_DIR]: dir_path.mkdir(parents=True, exist_ok=True) # Categories (urutan sesuai README) CATEGORIES = ["abjad_bisindo", "abjad_sibi", "angka", "kata"] # Sliding window configuration # Sesuai README: 30 Frame dan 5 Stride WINDOW_SIZE = 30 STRIDE = 5 # Landmark configuration NUM_HAND_LANDMARKS = 21 # MediaPipe hand landmarks NUM_FACE_LANDMARKS = 60 # Selected face mesh landmarks # Feature size calculation: # - Left hand: 21 landmarks x 3 coordinates = 63 # - Right hand: 21 landmarks x 3 coordinates = 63 # - Face mesh: 60 landmarks x 3 coordinates = 180 # Total: 63 + 63 + 180 = 306 FEATURE_SIZE = 306 # Training configuration BATCH_SIZE = 32 EPOCHS = 100 LEARNING_RATE = 0.001 # Train/test split ratio (sesuai README: 80% / 20%) TRAIN_RATIO = 0.8 TEST_RATIO = 0.2 # Video extensions (sesuai README) VIDEO_EXTENSIONS = [".mp4"] # Face mesh landmark indices (60 landmarks dari dagu, mulut, bibir, hidung, mata, pipi) FACE_LANDMARK_INDICES = [ # Outer face outline (dagu) 152, 234, 454, 358, 465, 452, 253, 389, # Eyebrows 336, 296, 334, 293, 300, 276, 283, 282, # Eyes (mata) 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 249, # Nose (hidung) 1, 2, 98, 327, 4, 75, 221, 189, 417, 62, 305, 293, # Mouth outer (mulut luar) 13, 14, 17, 84, 185, 61, 291, 0, # Mouth inner (bibir) 78, 95, 88, 178, 87, 317, 402, 310, # Cheeks (pipi) 50, 187, 411, 93, 323, 234, 454, 36, # Additional key points 168, 6, 195, 197, 199, 175, 246, 123, # Forehead 10, 151, 9, 107 ]