DEV Community

Cover image for Menganalisis Emosi, Umur, dan Gender Menggunakan Library Serengil/DeepFace di Python
Yogie Setya Nugraha
Yogie Setya Nugraha

Posted on

Menganalisis Emosi, Umur, dan Gender Menggunakan Library Serengil/DeepFace di Python

Dalam artikel ini, kita akan membahas bagaimana menggunakan library DeepFace dari serengil untuk menganalisis emosi, umur, dan gender dari gambar wajah. Artikel ini akan mencakup empat bagian utama: (1) pembahasan library yang digunakan, (2) cara penggunaan library, (3) penjelasan kode, dan (4) hasil analisis.

1. Pembahasan Library DeepFace
DeepFace adalah library open-source berbasis Python yang menawarkan kemampuan analisis wajah. Library ini dikembangkan oleh Serengil dan telah menjadi alat yang kuat bagi banyak aplikasi pengenalan wajah dan analisis atribut wajah. DeepFace mampu mendeteksi dan mengenali wajah, serta menganalisis atribut seperti emosi, umur, dan gender dengan akurasi yang tinggi.

DeepFace menggunakan model pembelajaran mesin yang sudah dilatih dengan dataset besar gambar wajah. Model ini memanfaatkan deep learning untuk mengekstrak fitur wajah dan melakukan klasifikasi atribut dengan presisi. Beberapa model deep learning yang digunakan oleh DeepFace termasuk VGG-Face, Google FaceNet, OpenFace, dan banyak lagi. Kemampuan untuk memilih dan mengkombinasikan berbagai model ini memberikan fleksibilitas dan keandalan dalam berbagai skenario aplikasi.

2. Cara Penggunaan Library
Untuk menggunakan DeepFace, kita perlu menginstal beberapa dependensi terlebih dahulu. Berikut adalah langkah-langkah detailnya:

  • Pastikan Anda memiliki Python dan pip terinstal pada sistem Anda. Anda dapat memeriksa instalasi dengan menjalankan perintah berikut di terminal:
python --version
pip --version
Enter fullscreen mode Exit fullscreen mode
  • Instal library DeepFace dengan perintah berikut:
pip install deepface
Enter fullscreen mode Exit fullscreen mode
  • Selain DeepFace, kita juga memerlukan library lain seperti OpenCV untuk pengolahan gambar dan NumPy untuk manipulasi array. Instal library tersebut dengan perintah berikut:
pip install opencv-python numpy
Enter fullscreen mode Exit fullscreen mode

Setelah semua dependensi terinstal, kita siap untuk mulai menulis kode untuk menganalisis wajah.

3. Penjelasan Kode
Berikut adalah kode untuk menganalisis emosi, umur, dan gender dari gambar wajah. Kode ini terdiri dari beberapa fungsi utama yang akan dijelaskan secara rinci.

python
import json
import numpy as np
from deepface import DeepFace
import cv2

# Fungsi untuk menampilkan gambar
def show_image(img_path):
    img = cv2.imread(img_path)
    cv2.imshow("Image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# Fungsi untuk konversi data agar bisa di-serialisasi
def convert_to_serializable(obj):
    if isinstance(obj, np.float32):
        return float(obj)
    raise TypeError(f"Object of type {type(obj)} is not JSON serializable")

# Fungsi untuk analisis wajah
def analyze_face(img_path):
    result = DeepFace.analyze(img_path)
    print("Hasil Analisis:", result)
    return result

# Fungsi utama
def main():
    # Path gambar
    img_path = "images/happy.jpg"

    # Analisis wajah
    analysis_result = analyze_face(img_path)

    # Simpan hasil analisis ke file JSON
    with open('result_analysis.json', 'w') as json_file:
        json.dump(analysis_result, json_file, default=convert_to_serializable)

if __name__ == "__main__":
    main()
Enter fullscreen mode Exit fullscreen mode

Penjelasan Code
show_image(img_path): Fungsi ini digunakan untuk menampilkan gambar menggunakan OpenCV. Gambar akan ditampilkan dalam jendela terpisah dan menunggu input dari pengguna sebelum menutup jendela.

convert_to_serializable(obj): Fungsi ini mengkonversi objek numpy float32 ke float agar bisa di-serialisasi ke format JSON. Ini diperlukan karena tipe data numpy tidak langsung kompatibel dengan JSON.

analyze_face(img_path): Fungsi utama untuk menganalisis wajah. Fungsi ini menggunakan DeepFace untuk menganalisis gambar wajah yang diberikan dan mengembalikan hasil analisis.

main(): Fungsi ini merupakan titik masuk utama dari skrip. Fungsi ini menentukan path gambar, memanggil fungsi analisis wajah, dan menyimpan hasil analisis ke file JSON.

img_path: Berisi gambar yang ingin di analisis, contoh gambar yang saya gunakan untuk menganalisis

Ruben Amorim

4. Hasil Analisis
Setelah menjalankan kode di atas dengan menggunakan gambar, Anda akan mendapatkan hasil analisis wajah yang disimpan dalam file result_analysis.json. Hasil ini mencakup informasi tentang emosi, umur, dan gender dari wajah yang dianalisis. Berikut adalah contoh hasilnya:

[
  {
    "emotion": {
      "angry": 1.5220872522439532e-12,
      "disgust": 8.931468378748334e-32,
      "fear": 5.746265387866762e-21,
      "happy": 100,
      "sad": 9.223629621505245e-18,
      "surprise": 1.0149199189402047e-11,
      "neutral": 9.83559630185482e-7
    },
    "dominant_emotion": "happy",
    "region": {
      "x": 268,
      "y": 184,
      "w": 432,
      "h": 432,
      "left_eye": [
        547,
        361
      ],
      "right_eye": [
        419,
        360
      ]
    },
    "face_confidence": 0.92,
    "age": 35,
    "gender": {
      "Woman": 0.00001910559512907639,
      "Man": 99.9999771118164
    },
    "dominant_gender": "Man",
    "race": {
      "asian": 0.00001607497688382864,
      "indian": 0.0569615438580513,
      "black": 0.0004316684207879007,
      "white": 13.096882820129395,
      "middle eastern": 85.8901596069336,
      "latino hispanic": 0.955557644367218
    },
    "dominant_race": "middle eastern"
  }
]
Enter fullscreen mode Exit fullscreen mode

Dengan informasi ini, Anda dapat memahami lebih lanjut mengenai atribut wajah yang dianalisis menggunakan DeepFace. Library ini sangat berguna dalam berbagai aplikasi seperti keamanan, pemasaran, dan penelitian. Misalnya, dalam bidang pemasaran, analisis emosi dapat membantu dalam memahami respons konsumen terhadap iklan atau produk.

Selain itu, kemampuan untuk mendeteksi umur dan gender dapat digunakan dalam personalisasi layanan, seperti memberikan rekomendasi yang sesuai dengan profil pengguna. Artikel ini menunjukkan betapa kuat dan fleksibelnya library DeepFace untuk keperluan analisis wajah.

Top comments (0)