FaceID API dirancang untuk membangun infrastruktur backend untuk otentikasi pengguna melalui pengenalan wajah. API ini berfungsi dengan menerima vektor representasi wajah (FRV) dari klien jarak jauh, kemudian memverifikasi apakah ini yang disediakan FRV sesuai dengan yang ada yang disimpan dalam database. Berdasarkan verifikasi ini, akses diberikan atau ditolak kepada klien.
API FaceID dapat diakses oleh klien mana pun yang mampu mengirim permintaan HTTP. Dikembangkan menggunakan Golang dan mengikuti arsitektur REST, API menawarkan fleksibilitas dalam hal implementasi klien. Klien dapat dikembangkan dalam bahasa pemrograman apa pun dan dapat berasal dari berbagai platform seperti web, seluler, atau desktop. Kemampuan integrasi yang mulus ini memungkinkan penggabungan fungsionalitas pengenalan wajah ke dalam beragam aplikasi. Khususnya, proses mendapatkan FRV dari klien berada di luar ruang lingkup tanggung jawab API FaceID.
Dokumentasi API tersedia di http://faceid.orionsoft.site/reference
Catatan: Anda dapat menggunakan vektor yang terletak di file vectors.json di direktori root proyek ini untuk menguji API. Vektor ini sudah disimpan dalam database.
Pengenalan wajah adalah teknologi yang melibatkan mengidentifikasi dan memverifikasi individu dengan menganalisis dan membandingkan fitur wajah mereka. Ini adalah subset dari identifikasi biometrik, dan memiliki berbagai aplikasi, termasuk sistem keamanan, otentikasi, dan kontrol akses pengguna. Berikut gambaran yang disederhanakan tentang cara kerja pengakuan wajah:
Deteksi Wajah: Langkah pertama adalah menemukan dan mengekstrak wajah dari bingkai gambar atau video. Ini dilakukan dengan menggunakan algoritma deteksi wajah, yang mengidentifikasi daerah wajah potensial dalam data input.
Penyelarasan Wajah: Setelah wajah terdeteksi, algoritma dapat melakukan penyelarasan wajah, memastikan bahwa wajah berada dalam posisi standar. Ini membantu dalam menormalkan fitur untuk perbandingan yang akurat.
Ekstraksi fitur: Ini adalah langkah penting di mana fitur khas wajah diekstraksi dan diubah menjadi representasi numerik. Fitur -fitur ini mungkin termasuk jarak antara landmark wajah utama, sudut antara titik -titik tertentu, dan data lain yang dapat membedakan satu wajah dari yang lain. Teknik populer untuk ekstraksi fitur meliputi pola biner lokal (LBP), histogram gradien berorientasi (HOT), dan lebih baru-baru ini, metode berbasis pembelajaran mendalam.
Pengkodean fitur: Fitur yang diekstraksi kemudian dikonversi menjadi representasi kompak yang dapat dengan mudah dibandingkan dengan representasi wajah lainnya. Ini sering melibatkan pengurangan dimensi fitur sambil mempertahankan informasi diskriminatif mereka.
Face Database: Dalam skenario Anda, Anda akan memiliki database yang berisi representasi wajah (atau embeddings) dari pengguna yang berwenang. Basis data ini dapat dibuat dengan mengumpulkan dan memproses satu set gambar setiap pengguna selama pendaftaran.
Pencocokan Wajah: Ketika pengguna mencoba mendapatkan akses, wajah yang dikirimkan mereka diproses melalui pipa yang sama: deteksi, penyelarasan, ekstraksi fitur, dan pengkodean. Representasi wajah yang dihasilkan kemudian dibandingkan dengan representasi dalam database wajah Anda menggunakan metrik jarak seperti jarak Euclidean atau kesamaan cosinus. Idenya adalah untuk menemukan pertandingan terdekat.
Thresholding: Perbandingan menghasilkan skor kesamaan. Anda akan menetapkan nilai ambang batas di atas mana wajah yang dikirimkan dianggap cocok dengan wajah dalam database. Ambang itu membantu menyeimbangkan positif palsu dan negatif palsu.
Pengambilan keputusan: Berdasarkan skor kesamaan dan ambang batas, keputusan dibuat apakah akan memberikan akses atau tidak. Jika skor di atas ambang batas dan dalam kisaran yang dapat diterima, akses diberikan. Kalau tidak, akses ditolak.
Pembelajaran Berkelanjutan: Untuk meningkatkan akurasi pengakuan dari waktu ke waktu, beberapa sistem menerapkan pembelajaran berkelanjutan. Ini melibatkan memperbarui representasi wajah secara berkala dalam database menggunakan gambar baru pengguna. Ini dapat membantu memperhitungkan perubahan penampilan karena faktor -faktor seperti penuaan atau rambut wajah.
FRV adalah vektor yang mewakili wajah seseorang. Ini adalah representasi numerik dari wajah, dan digunakan untuk membandingkan wajah. FRV dihasilkan oleh algoritma pengenalan wajah yang diimplementasikan oleh perpustakaan yang digunakan di sisi klien. Sisi klien dapat berupa platform apa pun (web, seluler, desktop, dll). Mari kita lihat struktur FRV:
[
0.123, -0.456, 0.789, 0.234, 0.567, 0.123, 0.678, -0.345,
-0.987, 0.876, -0.123, -0.456, 0.789, -0.234, -0.567, 0.123,
0.678, 0.345, -0.987, -0.876, 0.123, 0.456, -0.789, 0.234,
0.567, -0.123, 0.678, 0.345, 0.987, -0.876, -0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
-0.567, 0.123, 0.678, 0.345, -0.987, -0.876, 0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234
]
Di atas kami memiliki 128 dimensi FRV (vektor representasi wajah) dari representasi numerik wajah seseorang. Perpustakaan yang berbeda dapat menghasilkan FRV dimensi yang berbeda, yang dapat 256, 512 atau bahkan lebih lama dimensi. Kita dapat menganggap FRV ini sebagai cap unik numerik dari wajah seseorang. Karena tidak ada yang memiliki wajah yang sama, tidak ada yang memiliki FRV yang sama. Jadi, FRV dapat digunakan untuk mengidentifikasi seseorang terhadap database FRV.
API FaceID ini menggunakan FRV yang dikirim oleh klien untuk mengidentifikasi apakah FRV yang diberikan cocok dengan FRV dalam database. Jika FRV yang diberikan cocok dengan FRV dalam database, API memberikan akses ke klien. Kalau tidak, API menolak akses ke klien.
Basis data vektor adalah sesuatu yang baru di dunia database, dan penggunaannya tumbuh dengan cepat. Dalam kasus kami, kami menggunakan Qdrant (https://qdrant.tech), database vektor yang merupakan sumber terbuka dan bebas digunakan. Ingatlah bahwa vektor representasi wajah pada dasarnya adalah array angka float yang bisa berukuran besar. Pada API FaceID ini, kami menggunakan FRV 128 dimensi, tetapi bisa 256, 512 atau bahkan lebih lama dimensi. Jadi, kami memerlukan database yang dapat menyimpan data dalam jumlah besar ini dan dapat melakukan pencarian cepat di atasnya.
Basis data SQL dan NoSQL tradisional dapat digunakan untuk menyimpan FRV, tetapi mereka tidak dioptimalkan untuk data semacam ini. Database vektor dioptimalkan untuk menyimpan dan mencari vektor. Mereka juga dioptimalkan untuk pencarian cepat, dan dapat melakukan pencarian pada jutaan vektor dalam beberapa milidetik. Ini berarti wajah dapat diidentifikasi dalam beberapa milidetik, yang bagus untuk aplikasi waktu nyata.
Proyek ini adalah implementasi sederhana dari API pengenalan wajah. Ini adalah API sederhana yang dapat digunakan untuk mengintegrasikan pengenalan wajah dalam aplikasi apa pun. API ditulis dalam Golang dan menggunakan arsitektur lainnya. Klien dapat ditulis dalam bahasa apa pun, dan dapat berasal dari platform apa pun (web, seluler, desktop, dll). Jika Anda ingin menerapkan pengenalan wajah di aplikasi Anda, Anda dapat menggunakan FaceID API sebagai titik awal. Tolong, jangan ragu untuk menghubungi saya di [email protected] jika Anda memiliki pertanyaan atau saran. Terima kasih!