TIF_E4253362/backend/utils/config.py

99 lines
2.6 KiB
Python

"""
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
]