Proyek ini bertujuan untuk mengklasifikasikan emosi di wajah seseorang menjadi salah satu dari Tujuh Kategori/Ekspresi , menggunakan jaringan saraf konvolusional yang dalam. Model ini dilatih pada kumpulan data FER-2013 yang dipublikasikan di International Conference on Machine Learning (ICML). Dataset ini terdiri dari 35887 grayscale, gambar wajah berukuran 48x48 dengan Tujuh Emosi - marah, jijik, takut, senang, netral, sedih dan terkejut.
- Python 3, OpenCV, Tensorflow
- Langkah awalan utuk menjalankan program ketikan perintah berikut di dalam terminal
pip install -r requirements.txt
.
Repositori saat ini kompatibel dengan tensorflow-2.3.1
dan menggunakan API Keras menggunakan tensorflow.keras
pustaka.
-
Download the FER-2013 dataset from here and unzip it inside the
src
folder. This will create the folderdata
. -
Jika ingin melatih kumpulan data (model), ketikan:
python main.py --mode train
- Jika ingin melihat prediksi/hasil tanpa pelatihan lagi, Anda dapat mendownload model terlatih dari sini dan kemudian menjalankan:
python main.py --mode display
-
Struktur Folder:
src:- data (folder)
main.py
(file)dataset_prepare.py
(file)haarcascade_frontalface_default.xml
(file)model.h5
(file)requirements.txt
(file)
-
Penerapan ini secara default mendeteksi emosi pada semua wajah di umpan webcam. Dengan CNN 4-lapis sederhana, akurasi pengujian mencapai 63,2% dalam 50 epoch.
-
The dataset FER2013 asli dalam Kaggle tersedia sebagai file csv tunggal. Saya telah mengonversi menjadi kumpulan data gambar dalam format PNG untuk pelatihan / pengujian dan memberikan ini sebagai kumpulan data di bagian sebelumnya.
-
ika Anda ingin bereksperimen dengan kumpulan data baru, Anda mungkin harus berurusan dengan data dalam format csv. Saya telah memberikan kode yang saya tulis untuk preprocessing data di
dataset_prepare.py
file yang dapat digunakan untuk referensi.
-
Pertama, metode haar cascade digunakan untuk mendeteksi wajah di setiap bingkai dari umpan webcam.
-
Wilayah gambar yang berisi wajah diubah ukurannya menjadi 48x48 dan diteruskan sebagai input ke CNN.
-
Jaringan mengeluarkan daftar skor softmax untuk tujuh kelas emosi.
-
Emosi dengan skor maksimal ditampilkan di layar.
- "Challenges in Representation Learning: A report on three machine learning contests." I Goodfellow, D Erhan, PL Carrier, A Courville, M Mirza, B
Hamner, W Cukierski, Y Tang, DH Lee, Y Zhou, C Ramaiah, F Feng, R Li,
X Wang, D Athanasakis, J Shawe-Taylor, M Milakov, J Park, R Ionescu, M Popescu, C Grozea, J Bergstra, J Xie, L Romaszko, B Xu, Z Chuang, and Y. Bengio. arXiv 2013.