Proyek ini mengimplementasikan sistem deteksi emosi wajah menggunakan fitur HOG (Histogram of Oriented Gradients), Gabor, dan kombinasi HOG+Gabor dengan model neural network. Sistem ini dilatih untuk mengenali tujuh emosi wajah: angry, disgust, fear, happy, neutral, sad, dan surprise. Proyek ini mencakup dua bagian utama: pelatihan model (train/) dan deteksi emosi secara real-time menggunakan webcam (webcam.ipynb).
Proyek ini terdiri dari dua notebook Jupyter:
-
train/: Melatih model untuk deteksi emosi menggunakan fitur HOG, Gabor, dan HOG+Gabor. Dataset yang digunakan berasal dari direktori/kaggle/input/dataset-ekspresi/dataset-ekspresi. Proses pelatihan melibatkan:- Augmentasi data (skala, rotasi, flipping, kecerahan, dan noise).
- Ekstraksi fitur HOG dan Gabor.
- Pelatihan model neural network dengan k-fold cross-validation.
- Visualisasi hasil pelatihan melalui confusion matrix dan grafik akurasi/loss.
- Penyimpanan model ke file
.h5.
-
webcam.ipynb: Menggunakan model yang telah dilatih untuk mendeteksi emosi wajah secara real-time melalui webcam. Fitur utama meliputi:- Deteksi wajah menggunakan Haar Cascade Classifier.
- Ekstraksi fitur HOG, Gabor, atau HOG+Gabor dari wajah yang terdeteksi.
- Prediksi emosi dengan tingkat kepercayaan (confidence score).
- Pilihan untuk beralih antar model (HOG, Gabor, HOG+Gabor) menggunakan tombol (
h,g,b).
Untuk menjalankan proyek ini, Anda perlu menginstal dependensi berikut:
- Python 3.8 atau lebih tinggi
- Library Python:
opencv-pythonscikit-imagetensorflownumpymatplotlibseaborntqdm
-
Clone repository:
git clone <URL_REPOSITORY> cd <NAMA_REPOSITORY>
-
Instal dependensi:
pip install opencv-python scikit-image tensorflow numpy matplotlib seaborn tqdm
-
Unduh file model
.h5: Model yang telah dilatih (hog_emotion_model.h5,gabor_emotion_model.h5,hog_gabor_emotion_model.h5) dapat diunduh dari: Google Drive Simpan file-file ini di direktori proyek Anda. -
Unduh notebook: Pastikan Anda memiliki file
train/,dataset/danwebcam.ipynbdi direktori proyek.
- Buka
train/di Jupyter Notebook atau lingkungan seperti Kaggle. - Pastikan dataset tersedia di direktori
/kaggle/input/dataset-ekspresi/dataset-ekspresiatau sesuaikan path di kode. - Jalankan semua sel untuk melatih model dan menyimpan file
.h5. - Hasil pelatihan akan menampilkan confusion matrix dan grafik akurasi/loss.
- Buka
webcam.ipynbdi Jupyter Notebook. - Pastikan file model
.h5(hog_emotion_model.h5,gabor_emotion_model.h5,hog_gabor_emotion_model.h5) ada di direktori yang sama. - Jalankan notebook untuk memulai deteksi emosi secara real-time.
- Kontrol:
- Tekan
quntuk keluar. - Tekan
huntuk menggunakan model HOG. - Tekan
guntuk menggunakan model Gabor. - Tekan
buntuk menggunakan model HOG+Gabor.
- Tekan
- Output akan menampilkan kotak di sekitar wajah yang terdeteksi, nama emosi, dan tingkat kepercayaan (confidence score).
Untuk melihat contoh hasil eksekusi kode, kunjungi notebook yang telah dijalankan di Kaggle: Kaggle Notebook
├── dataset/ # Dataset yang dilatih
├── train/ # Notebook untuk melatih model
├── webcam.ipynb # Notebook untuk deteksi emosi dengan webcam
├── hog_emotion_model.h5 # Model HOG yang telah dilatih
├── gabor_emotion_model.h5 # Model Gabor yang telah dilatih
├── hog_gabor_emotion_model.h5 # Model HOG+Gabor yang telah dilatih
├── README.md # File ini
- Dataset ekspresi wajah tidak disertakan di repository ini. Anda dapat menggunakan dataset pada repository, menyediakan dataset sendiri atau menggunakan dataset dari Kaggle.
- Pastikan webcam terhubung dan berfungsi dengan baik untuk menjalankan
webcam.ipynb. - Webcam realtime hanya dapat berjalan di local (contohnya. VS Code)
- Model HOG+Gabor umumnya memberikan akurasi lebih baik karena menggabungkan fitur tepi (HOG) dan tekstur (Gabor).
Kontribusi untuk meningkatkan proyek ini sangat diterima! Silakan buat pull request atau laporkan issue di repository GitHub.