Cara Mendeteksi Orang Jahat dari Kamera HP Menggunakan Musyawarah Model Deep Learning
Pada dua artikel sebelumnya, kita telah membahas tentang Face Recognition dan salah satu metode Face Recognition dengan Deep Learning, yaitu ElasticFace. Karena kita sudah banyak membahas Face Recognition, mari kita sekarang cari masalah apa saja yang dialami oleh industri terkait dengan wajah.
Latar Belakang
Pernahkah kalian mendengar istilah Pinjol? Iya pinjol itu. Pinjaman Online. Nah seringkali orang-orang jahat memanfaatkan kamera smartphone mereka. Sayang sekali padahal menggunakan smartphone, tetapi otaknya tidak smart 😃.
Jadi misalkan ada dua orang, Pujo dan Haikal. Haikal ternyata merebut pacarnya Pujo, jadi Pujo merasa dendam terhadap Haikal. Disini, Pujo memikirkan ide cemerlang yang bisa membuat Haikal di teror oleh debt collector. Jadi Pujo mem-print muka selfie Haikal dan menempelkan hasil print-nya di wajahnya, sehingga jika Pujo selfie menggunakan kamera HP nya, terlihat seperti Haikal. KTP Haikal pun juga sudah difoto oleh Pujo ketika Haikal sedang ke toilet saat nongkrong di Cafe. Pujo langsung mendaftarkan dirinya ke pinjol ilegal menggunakan foto KTP Haikal dan topeng yang dibuat tadi.
Beberapa bulan kemudian, tiba tiba didepan rumah Haikal ada debt collector yang menagih hutang yang dia tidak lakukan. Haikal pun bingung, sementara Pujo tertawa dirumahnya melihat Haikal ketakutan. Inilah mengapa juga saat mendaftarkan diri ke pinjol, jangan gunakan pinjol yang abal abal. Carilah pinjol yang mempunyai sistem face anti-spoofing.
Jenis Face Attack
Terdapat beberapa jenis face attack yang biasa dilakukan:
- Print attack, yaitu ketika seseorang mencetak wajah seseorang, memotong dan meletakkan topeng yang sudah dibuat sehingga pada kamera, terlihat seperti orang lain
- Replay/video attack, yaitu ketika kita meletakkan layar yang menampilkan video wajah seseorang. Attack tipe ini terlihat lebih natural dibandingkan print attack, karena ada gerakan wajah yang pasti lebih terlihat dibandingkan kertas yang tidak mungkin bergerak
- 3D mask attack, yaitu sesuai namanya, menggunakan topeng 3D yang terlihat sangat real
Sebagai AI Engineer Intern di Nodeflux (anjay 😆), tentu saja saya harus bisa membangun suatu sistem yang dapat mendeteksi apakah seseorang melakukan kejahatan ini atau tidak dari suatu foto. Disini, saya mencoba suatu pendekatan yang banyak digunakan pada kompetisi ECCV2020 dan IJCB2021, yaitu ensemble learning.
Metodeku
Kenapa saya menggunakan ensemble learning? Karena pada ECCV2020 dan IJCB2021, tim-tim yang memuncaki leaderboard menggunakan ensemble learning.
Nah, saya iseng mencoba beberapa model deep learning yang bisa dibilang the best of the best, yaitu Vision Transformer, ConvNext dan EfficientNetB0. Sebenarnya apa sih maksud ensemble learning?
Definisi orang cupu
Kalau secara bahasa non-teknis, kita suruh ketiga model tersebut belajar cara mengetahui orang jahat, lalu kita berikan meja bundar terhadap model itu, dan membiarkan mereka berdiskusi dan melakukan voting. Karena jumlah model nya ganjil, maka hasil musyawarahnya pasti tidak akan seri dan menghasilkan output yang mufakat.
Definisi orang pro
Secara detail, kita mempunyai beberapa model klasifikasi. Pada eksperimen saya menggunakan Vision Transformer, ConvNext dan EfficientNetB0. Lalu saya memasukkan suatu gambar ke tiga model tersebut, dan mendapatkan prediksi. Kita dapat menentukan output dari ensemble model kita dengan mencari output yang paling banyak dikeluarkan oleh model-model kita, yang dinamakan dengan metode majority voting.
Hasil Eksperimen
Sebelum melihat hasil eksperimen yang saya lakukan, kita harus mengetahui beberapa metrik yang digunakan untuk mengukur performa model face anti-spoofing, yaitu:
- APCER: Persentase attack yang gagal dideteksi model dari seluruh gambar attack
- BPCER: Persentase gambar normal yang dideteksi sebagai attack dari seluruh gambar normal
- ACER: Rerata dari APCER dan BPCER
Dengan melatih tiga model dengan gabungan dataset LCC_FASD, NUAA dan ROSE dengan menggunakan loss function Cross Entropy dan learning rate 2e-4, bisa dilihat bahwa dengan menggabungkan ketiga model tersebut mendapatkan nilai metrik yang sangat bagus. Tetapi, tentu kendala jika kita menggunakan tiga model sekaligus seperti ini, tentu computational cost-nya menjadi sangat buruk.