Sejarah & Cara Kerja Face Recognition pada Computer Vision

Kristian Wilianto
Data Folks Indonesia
9 min readJan 5, 2022
https://blog.dormakaba.com/tachyon/2020/04/dormakaba-Blog-Post-pictures-_-1024-x-683-83.jpg

“FaceID? Face Unlock? Face Payment? Gimana caranya ya kok mesin kaya gitu bisa ngenalin wajah kita?” Untuk menjawab pertanyaan-pertanyaan tersebut, kalian datang ke artikel yang sangat tepat! Karena pada artikel ini penulis akan membahas tentang core dari itu semua yakni face recognition.

Face Recognition secara umum adalah cara atau metode untuk mengidentifikasi atau mengkonfirmasi identitas individu menggunakan wajah mereka. Sistem face recognition dapat digunakan untuk mengidentifikasi orang dalam foto, video, atau secara real-time.

Jika dipikir-pikir kita sebagai manusia sebenarnya juga memiliki sistem face recognition secara natural. Secara tidak sadar manusia tentunya akan mendeteksi wajah dahulu pada tahap pertama dan kemudian mencocokkan wajah tersebut dengan memori yang berupa seluruh wajah yang pernah kita lihat dan kita kenal. Sama juga halnya dengan face recognition pada Computer Vision, secara umum tahapannya adalah deteksi wajah kemudian diambil dan dicrop ROI dari hasil deteksinya, kemudian hasil yang telah dicrop akan menjadi input pada ekstraksi fitur dari wajah tersebut. Sehingga fitur yang diekstraksi tersebut akan dicocokkan dengan data enrollment yang sudah dikumpulkan sebelumnya.

Sebelum mengenal metode dan cara kerja face recognition, kita juga perlu mengatahui bahwa face recognition terbagi menjadi dua jenis pada implementasinya yaitu :

  1. Face Verification : Operasi ini akan membandingkan dua buah inputan dan akan mengeluarkan output berupa tingkat kemiripannya (Perbandingan 1:1).
  2. Face Identification: Operasi ini akan membandingkan 1 buah gambar dengan keseluruhan wajah yang terdaftar pada database (Perbandingan 1:N), dimana N adalah jumlah gambar.

Metode Umum Face Recognition

Secara umum rumusan masalah dari face recognition pada computer vision adalah diberikan suatu video atau gambar, maka tugasnya adalah mengidentifikasi satu orang atau lebih dengan database wajah yang tersimpan.

Tahapannya secara umum adalah sebagai berikut:

  1. Face Detection, deteksi wajah dan crop hanya wajahnya saja
  2. Face Alignment, normalisasi wajah agar seragam dan sesuai dengan database
  3. Feature Extraction, ekstrak fitur dari wajah yang dapat digunakan untuk face recognition
  4. Face Recognition, mencocokkan hasil fitur yang sudah diekstraksi dengan database wajah yang tersimpan
https://machinelearningmastery.com/introduction-to-deep-learning-for-face-recognition/

Image Classification vs Face Recognition

“Jika dipikir-pikir bukannya langkah-langkah tersebut hampir serupa dengan deteksi dan klasifikasi gambar biasa?” Tentu saja secara alur sistem face recognition memiliki beberapa tahapan yang mirip dengan deteksi dan klasifikasi gambar biasa. Tetapi ada suatu perbedaan yang sangat membedakan antara klasifikasi gambar biasa dan face recognition, yaitu pada tahapan Ekstraksi Fitur. Pada umumnya klasifikasi biasa tentu akan mengklasifikasikan objek-objek yang fiturnya sangat berbeda, sedangkan pada kasus face recognition seluruh datanya adalah wajah. Sehingga kita harus mengenali perbedaan-perbedaan halus yang ada pada wajah-wajah tersebut.

Jadi, meskipun klasifikasi biasa dan face recognition adalah kedua kasus yang mirip, kedua kasus tersebut tetap diperlukan pendekatan yang berbeda meskipun nantinya akan ditemui beberapa kesamaan pada konsepnya.

EigenFaces

https://www.researchgate.net/publication/264167711_Face_Recognition_Based_on_Improved_Fuzzy_RBF_Neural_Network_for_Smar_t_Device/figures?lo=1&utm_source=google&utm_medium=organic

EigenFaces merupakan cikal bakal dan salah satu konsep dasar face recognition pada computer vision. Tetapi terdapat beberapa konsep pada aljabar linear yang perlu diketahui sebelum kita masuk ke EigenFaces yaitu EigenVector, EigenValues, dan PCA. Secara singkat EigenVector dan EigenValues didefinisikan sebagai berikut.

“Dianggapkan terdapat sebuah matriks persegi A. Hampir semua vektor berubah arah ketika dikalikan dengan A seperti yang kita harapkan. Namun, ada beberapa vektor x yang arahnya sama persis dengan Ax. Coba tebak? Itu adalah vektor eigen kami. Yang spesial… Bahkan jika mereka berada dalam arah yang sama, Ax dan x mungkin masih merupakan dua vektor yang berbeda berdasarkan besarannya. Inilah persamaan yang sudah dikenal. Ax = λx. Yang membuat keduanya sama adalah λ, skalar equalizer magnitudo kita, nilai eigen. Ini akan memberi tahu kita bagaimana vektor eigen kita berubah setelah perkalian”

Sedangkan PCA secara singkat merupakan metode untuk pengurangan dimensi. Ini memiliki banyak aplikasi dalam visualisasi, ekstraksi fitur, kompresi data, dll. Ide di baliknya adalah untuk memproyeksikan data asli secara linier ke lower-dimensional subspace yang menawarkan komponen utama (eigenvectors) varians maksimum dari data yang diproyeksikan dan/atau kesalahan distorsi minimum dari proyeksi. Akhirnya, keduanya mengarah pada hasil yang sama yang merupakan formula rekonstruksi terbaik. Sebagai catatan tambahan, subspace ini disebut subspace utama.

Pada implementasinya face recognition dapat digunakan dengan menggunakan PCA yang dinamakan sebagai EigenFaces. Eigenfaces adalah gambar yang dapat ditambahkan ke wajah rata-rata (rata-rata) untuk membuat gambar wajah baru. Rumus dari EigenFaces adalah sebagai berikut.

Dimana,

F adalah wajah barunya

Fm adalah mean dari rata-rata wajahnya

Fi adalah eigenfaces (eigenvectors pada wajah-wajah)

α adalah scalar yang dapat dipilih

Setelah eigenvector dihitung atas K eigenvector dipilih untuk mewakili setiap wajah. Setiap berarti wajah dikurangi dalam set pelatihan sekarang dapat diwakili menggunakan eigenfaces ini dengan

Kemudian dari rumus tersebut kita dapat mengidentifikasi wajah dengan langkah-langkah berikut.

  1. Resize dan Crop wajah menjadi ukuran N x N
  2. Kurangi mean
  3. Vectorize gambar menjadi N² x 1
  4. Hitung weight vector pada wajah baru
  5. Bandingkan vektornya dengan seluruh vektor yang ada pada database untuk proses pengenalan dan pencocokkan.

FisherFaces

Sebelumnya kita telah mengenal konsep PCA yang berfungsi untuk mereduksi dimensi dan menjadi inti pada EigenFaces. Namun, PCA secara praktis hanya dapat mereduksi dimensi tanpa mengenal adanya perbedaan kelas pada kasus klasifikasi dan face recognition misalnya. Inilah sebabnya mengapa tergantung pada data, menerapkan PCA mungkin bukan ide yang bagus setelah semua jika tujuan akhir adalah klasifikasi.

Oleh karena itu terdapat metode baru yang bernama Linear Discriminant Analysis (LDA) untuk mengatasi itu. Tujuan utama dari LDA adalah dapat membedakan kelas data yang berbeda sambil mereduksi dimensinya. Dapat dilihat dari gambar di bawah ini perbedaan yang sangat jelas antara PCA vs LDA.

PCA
LDA

Fisherfaces adalah ide LDA yang diterapkan pada masalah face recognition. Cara kerjanya sendiri step-by-step mirip dengan EigenFaces yang sudah dijabarkan di atas, hanya saja EigenFaces menggunakan PCA dan Fisherfaces menggunakan LDA. Argumen paling meyakinkan yang diberikan dalam mendukung Fisherfaces dalam paper aslinya adalah bahwa Fisherfaces berhubungan dengan variasi pencahayaan yang jauh lebih baik daripada Eigenfaces. Untuk lebih detailnya tentang FisherFaces dapat dilihat disini.

Locally Binary Pattern Histogram (LBPH)

Local Binary Pattern (LBP) adalah operator tekstur sederhana namun sangat efisien yang melabeli pixel dari suatu gambar dengan ambang batas lingkungan setiap pixel dan menganggap hasilnya sebagai bilangan biner. Dengan digabungnya LBP dan Histrogram dapat dihasilkan deskripsi fitur yang dapat digunakan untuk merepresentasikan citra wajah.

Sebelum memahami cara kerja LBPH, perlu diketahui bahwa LBPH menggunakan 4 parameter untuk perhitungannya. Parameter-parameter tersebut adalah Radius yang digunakan untuk mengatur jarak/radius seberapa besar lingkaran untuk merepresentasikan central pixelnya, lalu Neighbors untuk seberapa banyak sample yang diambil untuk membuat lingkaran LBPnya, lalu ada Grid X dan Grid Y untuk membagi citra menjadi grid kotak-kotak kecil.

Berikut adalah langkah-langkah cara kerja dari LBPH:

  • Siapkan data training untuk training model LBPH
  • Lakukan operasi LBP yang mana operasinya akan tergantung dari parameter radius dan neighbors. Implementasinya seperti berikut.
https://towardsdatascience.com/face-recognition-how-lbph-works-90ec258c3d6b

Operasi LBP juga dapat diexpand dengan mengubah parameter dari radius dan neighbors sehingga dinamakan sebagai Circular LBP. Karena circular maka terkadang akan ada beberapa titik yang berada di antara pixel, oleh karena itu dapat digunakan bilinear interpolation untuk mencari nilai tersebut. Berikut ilustrasinya.

https://towardsdatascience.com/face-recognition-how-lbph-works-90ec258c3d6b
  • Ekstrak histogram, dengan menggunakan gambar yang dihasilkan pada langkah terakhir, kita dapat menggunakan parameter Grid X dan Grid Y untuk membagi gambar menjadi beberapa grid, kemudian dihitung histogram dari tiap kotak kecilnya dan akhirnya semua histogram tersebut digabung. seperti yang dapat dilihat pada gambar berikut:
https://towardsdatascience.com/face-recognition-how-lbph-works-90ec258c3d6b
  • Face Recognition, hasil histogram yang sudah digabung tadi akan menjadi fitur untuk melakukan face recognition. Pertama diapply ke semua data trainingnya, lalu untuk melakukan face recognition akan dilakukan matching antara dua fitur. Matching sendiri dapat digunakan algoritma untuk menghitung jarak antar dua histogram atau vektor, contohnya seperti euclidean distance, cosine similarity, chi-square, dll. Dari semua hasilnya akan diurutkan dari yang memiliki confidence tertinggi dan yang paling tinggi akan menjadi output dari face recognitionnya.

Face Recognition with Deep Learning

Wang, M. and Deng, W., “Deep Face Recognition: A Survey”, 2018

Seiring berkembangnya teknologi dan riset deep learning, riset tentang face recognition (face recognition) juga semakin bermunculan. Secara metode tentunya face recognition dengan menggunakan deep learning cukup berbeda dengan metode tradisional terutama pada bagian ekstraksi fiturnya dan terdapat tambahan preprocessing.

Menurut paper yang bertajuk Deep Face Recognition : A Survey”, disebutkan ada beberapa pendekatan yang turut mendukung dan mengembangkan inovasi penggunaan deep learning pada face recognition. Antara lain: DeepFace, DeepID, VGGFace, dan FaceNet.

Wang, M. and Deng, W., “Deep Face Recognition: A Survey”, 2018

Pendekatan face recognition dengan menggunakan deep learning memiliki beberapa langkah yang mirip dengan klasifikasi gambar salah satunya adalah dengan menggunakan Convolutional Neural Network (CNN) sebagai pengekstraksi fiturnya. Tahapan pertama tentunya tetap face detection dan face alignment seperti pendekatan-pendekatan umumnya.

Pada tahapan preprocessing, terdapat dua yang utama dalam pendekatan ini yakni one to many yang merupakan augmentasi data citra dari satu gambar menjadi banyak pose dan kondisi berbeda, kemudian many to one merupakan kebalikannya yang mengembalikan dari berbagai pose dan kondisi menjadi satu gambar utuh.

Pada proses training, karena akan dilakukan pelatihan maka tentunya dibutuhkan data training yang cukup banyak untuk melatih model kita. Seiring berkembangnya face recognition semakin bermunculan juga dataset-dataset besar yang dibuat khusus untuk face recognition seperti LFW, Glints360k, CelebFaces, dll. Untuk arsitektur model, arsitektur yang digunakan hampir sama dengan kasus klasifikasi dimana bisa digunakan berbagai backbone baik yang mainstream, light-weight, adaptive, maupun joint-alignment recognition (Wang, 2018). Tetapi loss function yang digunakan sedikit berbeda karena softmax loss tidak cukup efektif pada kasus face recognition ini, sehingga beberapa penelitian membuat loss function baru yang lebih diskriminatif sehingga dapat membedakan fitur-fitur khusus pada wajahnya. Berikut adalah hasil dari beberapa penelitian yang menggunakan pendekatan deep learning pada kombinasi yang berbeda-beda yang telah disurvey oleh (Wang, 2018) pada dataset LFW (Labeled Face in the Wild).

Wang, M. and Deng, W., “Deep Face Recognition: A Survey”, 2018

Pada tahap inference/matching, umumnya digunakan sebuah penghitung jarak antara kedua vektor yang outputnya berupa similarity seberapa cocok gambar yang diinput dengan yang berada di database. Sama seperti LBPH kita dapat menggunakan cosine, euclidian, atau algoritma jarak vektor lainnya. Kemudian untuk keputusan finalnya biasanya digunakan thresholding ataupun Nearest Neighbor (NN) Classifier.

Final Notes

Jadi kita telah membahas sejarah panjang face recognition dari yang hanya menggunakan metode konvensional hingga menggunakan histogram dan hingga menggunakan metode yang modern dengan pendekatan deep learning. Pada dasarnya memang metode-metode tersebut mirip-mirip hanya saja pada tahap ekstraksi fiturnya yang berbeda-beda ada yang dengan higher dimensional seperti PCA dan LDA, dan ada juga yang menggunakan lower dimensional seperti deep learning face recognition. Dari artikel ini diharapkan para pembaca sekalian dapat memahami bagaimana sejarah serta cara kerja face recognition sebenarnya pada Computer Vision. Akhir kata, feel free to comment jika dirasa ada informasi yang kurang atau membingungkan. Sekian & thanks for reading!

--

--