- cleaning/
- extractFrames.py
- retinaface_crop.py
- media_pipe_mesh.py
- rebuild_matched_csv.py
- model/train_ensemble_fer.py
- model/evaluate_model.py
- README.md
Data, label, dan artefak model tidak disertakan ke GitHub, termasuk:
- DataSet/
- ExtractedFrames/
- dataset_crop/
- dataset_landmark/
- dataset_fix/
- Labels/
- checkpoints/
- landmark_check_vis/
- Python >= 3.10
- Paket utama: torch, torchvision, mediapipe, opencv-python, pandas, scikit-learn, numpy, matplotlib, seaborn, tqdm, pillow, albumentations
Contoh setup:
python -m venv .venv
# Windows PowerShell
.\\.venv\\Scripts\\Activate.ps1
pip install -U pip
pip install torch torchvision mediapipe opencv-python pandas scikit-learn numpy matplotlib seaborn tqdm pillow albumentations- Siapkan data lokal di mesin masing-masing.
- (Opsional) Crop wajah dengan RetinaFace.
- Ekstraksi landmark dengan MediaPipe.
- Sinkronisasi label dan build dataset final.
- Training model multitask.
Jalankan command dari root project agar path relatif default tetap valid.
python cleaning/retinaface_crop.pyDefault:
- input: DataSet
- fallback: ExtractedFrames (jika DataSet berisi video)
- output: dataset_crop
Contoh split train:
python cleaning/media_pipe_mesh.py \
--input-dir dataset_crop/train \
--output-root dataset_landmark \
--split-name train \
--width 224 \
--height 224 \
--backend solutions \
--save-metadataUlangi untuk split val dan test.
python cleaning/rebuild_matched_csv.py \
--splits train val test \
--dataset-root dataset_landmark \
--labels-dir Labels \
--output-root dataset_fixpython model/train_ensemble_fer.py \
--dataset-root dataset_fix \
--image-size 224 \
--batch-size 16 \
--epochs 15 \
--save-dir checkpoints/ensemble_ferResume training:
python model/train_ensemble_fer.py \
--dataset-root dataset_fix \
--save-dir checkpoints/ensemble_fer \
--resume-autoAuto pilih best_multitask.pt dengan best_val_overall_acc tertinggi di bawah folder checkpoints:
python model/evaluate_model.py \
--dataset-root dataset_fix \
--checkpoints-root checkpointsPakai checkpoint spesifik:
python model/evaluate_model.py \
--dataset-root dataset_fix \
--checkpoint checkpoints/engagement_focal_push/best_multitask.ptSimpan hasil evaluasi ke JSON:
python model/evaluate_model.py \
--dataset-root dataset_fix \
--checkpoints-root checkpoints \
--save-json checkpoints/eval_result.jsonmodel/train_ensemble_fer.py mengharapkan:
- image: dataset_fix/images//...
- landmark: dataset_fix/landmark//...
- CSV label di dataset_fix/labels/
Kolom target wajib:
- Boredom
- Engagement
- Confusion
- Frustration
Kolom landmark yang didukung:
- landmark_file
- landmark_rel_path
Repository ini fokus pada kode pipeline saja. Data dan model disimpan terpisah di local storage atau cloud storage.