Tentukan jenis kelamin dan usia dari foto





Dalam praktik audit internal, terdapat tugas-tugas yang memerlukan pemeriksaan untuk mengidentifikasi input data pelanggan yang salah. Salah satu masalah ini mungkin adalah ketidaksesuaian antara data yang dimasukkan dan foto klien pada saat pendaftaran produk.



Misalnya, informasi berikut tersedia: jenis kelamin, usia dan tautan ke foto. Untuk memeriksa kepatuhan, kami akan menggunakan pustaka py-agender dari bahasa Python.



Perpustakaan bekerja dalam dua tahap. Pertama, opencv menentukan posisi wajah di foto. Yang kedua, jaringan saraf dari arsitektur EfficientNetB3, yang dilatih di UTKFace DataSet, menentukan jenis kelamin dan usia pemilik wajah di foto.



Pertama, mari impor pustaka yang diperlukan:



import cv2
from pyagender import PyAgender


Mari buat objek pendeteksi jenis kelamin dan usia:



agender = PyAgender()


Unggah foto menggunakan opencv:



img = cv2.imread("habensky.jpeg")


Selanjutnya, kami mendefinisikan karakteristik wajah menggunakan metode detect_genders_ages dari objek agender:



face_info = agender.detect_genders_ages(img)


di mana variabel face_info berisi informasi berikut:



[{'left': 0,
  'top': 5,
  'right': 299,
  'bottom': 299,
  'width': 299,
  'height': 294,
  'gender': 0.0075379927,
  'age': 41.585840644804094}]


Di sini parameter ('left', 'top', 'right', 'bottom', 'width', 'height') mencirikan posisi wajah di foto. Parameter gender mencirikan milik jenis kelamin tertentu, di mana 0 untuk pria, 1 - untuk wanita. Itu. setelah pemrosesan gambar, pada ambang 0,5, kami membagi sampel yang diproses menjadi pria dan wanita.







Algoritme menentukan bahwa gambar ini mewakili seorang pria (nilai jenis kelamin sangat dekat dengan nol: 0,0075379927), dan juga bahwa di foto ini dia berusia 41 setengah tahun (41,5858), saya tidak tahu berapa usia Konstantin Khabensky di foto ini, tetapi saya pikir algoritmanya dekat dengan kebenaran.



Contoh yang bagus, gambar yang tajam, dan hasil yang cukup mengesankan. Namun, ketika Anda mulai menerapkan algoritme ke data nyata, segalanya tidak semerah yang kami inginkan. Dan intinya di sini bukan pada algoritmanya, tetapi pada kualitas data awal.



Dalam kasus saya, ini adalah kumpulan 1542 gambar dengan resolusi 300x300. Untuk 64 gambar, algoritme tidak dapat menentukan karakteristik wajah. Alasan utamanya adalah pencahayaan yang buruk pada saat memotret (wajah hampir tidak terlihat). Untuk 1478 gambar, kesalahan usia rata-rata adalah 4,96 tahun. Gambar di bawah ini menunjukkan distribusi kesalahan:







Untuk 8,5% gambar (125 dari 1478), algoritme membuat kesalahan dalam menentukan jenis kelamin seseorang. Dari jumlah tersebut, dalam 122 kasus, algoritme salah mengira wanita sebagai pria. Sekali lagi, jangan salahkan algoritme dalam semua kasus. Di sebagian besar contoh yang salah, ada banyak wajah berkacamata yang dapat menyembunyikan beberapa fitur wajah. Gambar di bawah ini menunjukkan distribusi usia untuk UTKFace DataSet:







Anda dapat melihat bahwa sebagian besar dataset berisi gambar orang-orang yang berusia 20-40. Meskipun demikian, algoritme paling sering membuat kesalahan dengan tepat untuk interval yang ditentukan, yaitu kemungkinan besar kesalahan terkait dengan kekhasan kumpulan data yang diterapkan algoritme. Gambar di bawah ini menunjukkan distribusi usia orang yang algoritmanya salah:







Py-Agender adalah alat menarik yang dapat membantu mengotomatiskan sejumlah tugas rutin, atau setidaknya mengurangi ukuran sampel untuk analisis manual. Artikel ini memberikan perkiraan untuk kumpulan data tertentu, mungkin dalam kasus Anda algoritme akan bekerja lebih efisien.



All Articles