Face Recognition: Kemampuan Komputer untuk “Mengenali” Wajah Manusia

Hafidh Soekma Ardiansyah
8 min readDec 30, 2021

--

Camera CCTV
Photo by Joe Gadd on Unsplash

Manusia memiliki kemampuan, untuk mengenali seseorang hanya dengan melihat orang itu secara langsung, tanpa harus berpikir keras untuk mengetahui seseorang itu. Kecuali, jika orang itu sudah lama tidak kita temui atau kita tidak pernah mengenali orang tersebut. Mata akan memberikan sinyal ke otak melalui sel saraf dan memberi perintah untuk mengenali orang tersebut. Semua itu dilakukan oleh manusia dalam sepersekian detik dengan cepat.

Perangkat keras seperti desktop, laptop dan smartphone sekarang memiliki kemampuan, untuk mengenali kita. Biasanya dalam kasus tersebut, untuk keamanan dalam memasuki perangkat tersebut tanpa menggunakan sandi yang rentan terhadap peretasan. Pernahkah terlintas dipikiranmu, bagaimanakah perangkat tersebut dapat mengenali kita? Apakah didalam perangkat tersebut ada manusia untuk mengetahui kita? Terdapat banyak sekali metode untuk face recognition. Disini kita akan bahas tuntas dari metode tradisional sampai ke metode modern.

Proses Komputer untuk “Melihat”

Dikutip dari alodokter, proses manusia melihat dengan cara cahaya masuk dan ditangkap oleh mata. Setelah itu masuk ke mata melalui kornea di bagian depan mata, kemudian melewati bagian tengah dan akhirnya diterima oleh retina. Setelah itu kita dapat mengetahui objek yang kita lihat seperti bunga, bangunan, ataupun hewan.

Anatomi dalam mata manusia (source)

Kalau kamera sendiri bagaimana? dikutip dari fisipol uma, sama seperti dalam mata. Lensa kamera mengumpulkan dan memfokuskan cahaya, setelah itu masuk ke dalam sensor di kamera dan ditransformasi kedalam format digital yang disimpan ke dalam media digital.

Anatomi dalam kamera digital (source)

Kita sebagai manusia dapat mengetahui benda tersebut, jika benda tersebut memiliki warna dan bentuk. Tetapi, berbeda dengan komputer. Komputer tidak mengetahui apa itu warna dan bentuk. Komputer hanya mengenali sebuah angka saja. Lantas, bagaimana komputer dapat melihat? Komputer merepresentasikan gambar dengan menggunakan piksel. Dikutip dari wikipedia piksel, ada unsur gambar atau representasi sebuah titik terkecil dalam sebuah gambar grafis yang dihitung per inci.

Piksel dalam layar komputer. Photo by Michael Maasen on Unsplash

Bisa kalian lihat pada contoh gambar diatas, satu piksel itu seperti satu kotak kecil dan jejer satu sama lain membentuk sebuah layar dengan memiliki panjang dan lebar. Pada contoh diatas warna satu piksel diberi tanda biru, kuning dan merah. Sebuah gambar, terdiri dari banyak sekali piksel. Rata-rata zaman sekarang, kamera pada smartphone mampu mereproduksi gambar dengan ukuran 1920x1080 atau setara dengan 2,073,600 piksel pada satu gambar. Untuk mengetahui bagaimana proses komputer melihat, kita akan menggunakan ukuran gambar yang kecil dengan ukuran 16x12.

Representasi gambar oleh komputer (source)

Seperti yang kita lihat, dalam kasus gambar hitam putih (grayscale) dengan ukuran 16x12 tersebut, komputer merepresentasikan setiap piksel dengan menggunakan angka 0–255. untuk angka 0 berarti jumlah warna putih dalam satu piksel tersebut berjumlah sedikit. Semakin mendekati angka 255, maka jumlah warna putih dalam satu piksel tersebut semakin banyak.

Skala warna dalam gambar hitam putih (source)

Kalau dalam kasus gambar hitam putih, satu piksel terdiri dari satu warna yaitu putih dan direpresentasikan dengan angka 0–255. Kalau dalam kasus gambar berwarna, satu piksel terdiri dari tiga warna yaitu Merah, Hijau dan Biru (RGB) dan direpresentasikan dengan angka 0–255.

Representasi gambar berwarna dalam komputer (source)

Tradisional Face Recognition

Dikutip dari wikipedia, Face Recognition atau disebut sistem pengenalan adalah sebuah teknologi yang dapat mencocokkan wajah manusia dari citra digital atau cuplikan video melalui basis data wajah, biasanya dipakai untuk mengotentikasikan para pengguna melalui layanan verfikasi ID. Simpelnya, face recognition adalah bagaimana sebuah komputer dapat mengenali kita.

1. Eigenface

Contoh Eigenface (source)

Seperti yang kita ketahui, bahwasanya dalam satu gambar terdiri dari banyak piksel. Kita ambil contoh gambar dengan resolusi 1920x1080 atau setara dengan 2,073,600 piksel pada satu gambar dan pada sistem face recognition, bukan hanya satu gambar saja, melainkan bisa lebih dari 10 wajah, bisa kita bayangkan seberapa besar piksel yang diproses oleh komputer. Untuk mengenali wajah seseorang dengan piksel yang sebegitu besarnya sangatlah susah.

Maka dari itu pada tahun 1991, Matthew Turk dan Alex Pentland menawarkan metode face recognition untuk mengatasi masalah ini. Ide dasar pada eigenface adalah mengurangi piksel yang sebegitu besarnya dan kita buat gambar wajah baru dengan piksel ukuran yang lebih kecil, tetapi tidak mengurangi informasi yang ada pada gambar awal. Ambil contoh kita punya gambar wajah A dengan ukuran 1920x1080. Setelah itu kita kurangi piksel tersebut dan menjadi ukuran 100x100 yaitu gambar wajah B. Tetapi gambar wajah B tidak mengurangi informasi penting dari gambar wajah A. Kita bisa mengurangi piksel tersbut dengan menggunakan teknik PCA (Principal Component Analysis), untuk detailnya bisa dibaca disini.

Setelah kita mendapatkan eigenface untuk basis data kita face recognition. Contoh kita ingin mengetahui gambar wajah seseorang A. Caranya tinggal kita mereduksi piksel gambar tersebut, dapatkan eigenface dan kita komparasi dengan eigenface dari basis data kita. Apakah gambar tersebut mirip dengan eigenface yang ada pada basis data kita? Jika iya maka face recognition berhasil. Untuk detail eigenface bisa dilihat disini.

2. Fisherface

Contoh Fisherface (source)

Terdapat beberapa masalah ketika kita menggunakan metode eigenface, salah satunya adalah komputer masih susah dalam membedakan satu wajah dengan wajah yang lainnya. Metode reduksi dimensi PCA hanya mereduksi dimensinya saja, tanpa harus mempertimbangkan apakah wajah satu dengan wajah lain itu berbeda. Jadi intinya PCA hanya ingin mencapai target yang ditentukan awal, yaitu mereduksi piksel yang awalnya banyak menjadi sedikit.

Pada tahun 2011, Aleix Martinez menawarkan metode baru untuk mengatasi permasalahan yang ada pada eigenface. Metode baru ini beranama Fisherface. Fisherface adalah perkembangan metode eigenface face recognition. Perbedaan mendasar dari kedua metode tersebut ialah, eigenface menggunakan metode reduksi dimensi menggunakan PCA, sedangkan fisherface menggunakan metode reduksi dimensi menggunakan LDA (Linear Discriminant Analysis)

PCA vs LDA (source)

Seperti pada gambar diatas, PCA mereduksi dimensi warna hijau dan merah dan diproyeksikan menjadi satu dimensi garis diagonal. PCA berhasil menyelesaikan tugasnya, yaitu mereduksi dimensi, tetapi distribusi antara warna hijau dan merah sulit untuk dibaca karena distribusi yang dibuat oleh PCA tumpang tindih satu sama lain. Lain kata jika kita menggunakan LDA sebagai metode reduksi dimensi kita. Bisa kita lihat dari gambar diatas, LDA berhasil mereduksi dimensi warna hijau dan merah. Setelah itu diproyeksikan menjadi satu dimensi dan distribusi warna antara hijau dan merah terlihat jelas, alhasil kita bisa lebih mudah memberikan klasifikasi antar warna merah dan hijau. Untuk lebih detailnya tentang fisherface bisa baca disini dan untuk LDA bisa baca disini.

Modern Face Recognition

Setelah kita melewati beberapa tradisional face recognition, kali ini kita akan menuju modern face recognition yang biasanya sering dipakai di sekitar kita. Tapi, meskipun modern face recognition, masih ada beberapa aplikasi yang masih menggunakan tradisional face recognition, karena hasil tradisional face recognition bisa dibilang “masih oke” dan dapat dibandingkan dengan modern face recognition.

Eigenface vs Fisherface vs LBPH vs OpenFace (source)

Seperti yang bisa dilihat pada gambar diatas, fisherface tidak cukup buruk performanya ketika hanya menyimpan gambar wajah sekitar 10 orang, tetapi mulai menurun ketika gambar wajah semakin banyak. Tradisional face recognition menggunakan metode ML (Machine Learning) atau pembelajaran mesin sedangkan modern face recognition menggunakan metode DL (Deep Learning) atau pembelajaran dalam.

Machine Learning Vs Deep Learning

Machine Learning Vs Deep Learning (source)

Sebelum masuk ke ML dan DL, saya akan menjelaskan singkat terlebih dahulu apa itu AI (Artificial Intelligence). AI adalah sebuah program untuk memberikan kemampuan kepada komputer supaya komputer dapat mereplika tingkah laku maupun sesuatu yang ada pada manusia. Seperti contoh untuk mengetahui wajah seseorang, membedakan warna, atau membedakan barang. ML adalah cabang dari AI dan DL adalah cabang dari ML. ML adalah sebuah metode pada AI yang memungkinkan komputer untuk belajar melalui data, tanpa perlu kita memberikan kode yang eksplisit pada program tersebut. Biasanya ML masih menggunakan metode statistika matematika yang dirubah ke dalam program komputer. Pada ML biasanya kita sebagai manusia, harus merubah data tersebut supaya dapat mudah dipahami oleh komputer atau biasa disebut Feature Extraction. ML banyak sekali macamnya ada Random Forest, Decision Tree, Linear Regression atau PCA. Untuk lebih lengkapnya tentang ML bisa baca disini.

Kalau DL sendiri adalah cabang dari ML, sama seperti ML yaitu belajar melalui data, tetapi dalam DL kita tidak perlu menggunakan Feature Extraction pada gambar kita, DL yang akan melakukan tersebut. DL sendiri tidak menggunakan model statistika matematika. DL menggunakan yang namanya ANN (Artificial Neural Network). Hasil dari DL jauh lebih bagus daripada menggunakan ML, tetapi sumber energi yang dibutuhkan juga lebih besar daripada menggunakan ML. Untuk lebih lengkapnya tentang DL bisa baca disini.

Perbedaan ML dan DL (source)

FaceNet

Ilustrasi FaceNet (source)

Salah satu metode pada modern face recognition adalah FaceNet. FaceNet ditemukan oleh Florian Schroff, Dmitry Kalenichenko, dan James Philbin pada ajang CVPR2015. FaceNet ditemukan karena pada metode sebelumnya (bukan tradisional face recognition), adalah dengan menggunakan classification layer, yang dimana layer tersebut harus dilatih menggunakan data yang banyak, sedangkan pada satu wajah sendiri, sulit sekali untuk mendapatkan data wajah dengan banyak, karena variasi data untuk satu wajah sendiri tidaklah banyak.

FaceNet untuk setiap satu wajah, dilatih menggunakan tiga data, yaitu anchor image, positive image, dan negative image. Setelah itu, ketiga data tersebut akan memiliki output X dan Y. Supaya lebih mudah memahami kita akan menggunakan koordinat 2D saja yaitu X dan Y. Setelah itu, kita taruh ke sebuah ruangan yang dinamakan embedding space. Setelah kita selesai melatih semua data wajah kita, kita akan mendapatkan embedding space dengan semua data wajah yang sudah kita latih. Setelah itu, FaceNet akan menghitung jarak antara anchor image ke positive image untuk setiap gambar dengan menggunakan rumus squared L2 distances. FaceNet akan berusaha mendapatkan jarak yang lebih kecil antara anchor image ke positive image dan harus lebih kecil dari jarak anchor image ke negative image. Untuk lebih lengkapnya bisa baca disini. Jika kita ingin memprediksi data wajah baru kita dengan hasil FaceNet yang sudah kita latih sebelumnya, rinciannya sebagai berikut:

  1. Kita masukkan wajah yang akan kita prediksi.
  2. Kita feature extraction dengan menggunakan backbone layer
  3. Kita dapatkan lokasi embedding space untuk wajah yang kita prediksi.
  4. Kita hitung jarak wajah yang kita prediksi dan dataset asli menggunakan squared L2 distances.
  5. Jika jarak anchor image ke negative image, lebih besar daripada jarak wajah yang kita prediksi, maka face recognition berhasil.
  6. Tetapi, Jika jarak anchor image ke negative image, lebih kecil daripada jarak wajah yang kita prediksi, maka face recognition gagal.
Ilustrasi Cara Kerja FaceNet (source)

Dalam artikel kali ini, kita sudah membahas tentang beberapa metode face recognition. Bukan hanya itu saja, sebelum masuk ke face recognition, kita harus mengetahui terlebih dahulu, bagaimana cara bekerja komputer melihat dalam melihat sebuah gambar. Tradisional face recognition tidak selalu harus ditinggalkan, adakalanya beberapa kasus, kita harus menggunakan tradisional face recognition, seperti contoh sumber daya yang kurang dan tidak ada waktu yang cukup. Tetapi, jika kamu mempunyai sumber daya yang lebih besar, sangat disarankan kamu menggunakan metode modern face recognition, karena lebih aman dan lebih stabil daripada tradisional face recognition.

Referensi

--

--