ML(Machine Learning) adalah salah satu cabang dari AI(Artificial Intellegence = kecerdasan buatan). Sesuai namanya, machine = mesin, learning = belajar/pembelajaran, sehingga boleh dikatakan ML(Machine Learning) adalah sebuah rekayasa teknologi yang memungkinkan mesin bisa belajar layaknya manusia.

Akhir-akhir ini ML(Machine Learning) nge-trend karena memang terbukti manfaatnya untuk kehidupan manusia seperti bidang kedokteran, bisnis dan lain-lain. Tak ketinggalan perusahaan-perusahaan raksasa seperti Google dan Huawei pun berlomba-lomba mengembangkan teknologi ini.

Tulisan ini membantu anda untuk memilih sesuai dengan kebutuhan dan budget Anda

Nah, pada postingan kali ini saya mencoba membandingkan 3 vendor penyedia API Machine Learning Kit untuk kebutuhan Liveness Detection, yang intinya adalah membedakan mana Live Face, mana Spoofing Face sehingga diharapkan dapat mencegah aksi penipuan atau kecurangan dalam transaksi online.

Proses Liveness Detection pada umumnya adalah dengan perhitungan total score smilling probability, kedipan mata, gerak kepala, rotasi kepala dan lain-lain tergantung kebutuhan. Adapun contoh implementasi Liveness Detection dapat kita jumpai pada verifikasi ojol, lamaran kerja online, verifikasi akun payment dan lain sebagainya.

Ketiga API tersebut adalah ML Kit for Firebase, Google ML Kit dan Huawei ML Kit. Semua bagus, namun masing-masing memiliki kelebihan dan kekurangan. Tulisan ini mungkin dapat membantu anda untuk memilih sesuai dengan kebutuhan dan budget Anda.

1. Firebase: ML Kit for Firebase

Firebase merupakan salah satu layanan cloud service yang dikembangkan oleh Mbah Google. Firebase ML Kit yang tersedia saat ini adalah beta version atau boleh dikatakan masih dalam rangka project uji coba, sehingga jangan heran jika masih banyak fungsi yang belum lengkap.

Library ini bersifat on device delivered, artinya semua komputasi/ML dilakukan secara standalone, namun data model yg dibutuhkan akan didownload saat pertama kali install app. Keuntungan model on device delivered ini adalah tidak menyebabkan ukuran apk membengkak.

Namun kekurangan dari layanan Firebase pada umumnya adalah proses integrasi yang lumayan panjang dan ribet. Berikut sekilas step-by-step nya.

  1. Create SignConfig.
  2. Build Signed Apk.
  3. Generete SHA-1 from Signed Apk.
  4. Create Project in Firebase Console..
  5. Add SHA-1 on Firebase project.
  6. Download file services.json(berisi api key, package id dan data credential lainya).
  7. Put services.json to app directory.
  8. Add package dependency on gradle.
  9. Build sync gradle.

Nah, lumayan panjang dan ribet bukan?

2. Google : ML Kit

Library ini sama-sama dikembangkan oleh Google dan merupakan penyempurnaan ML Kit for Firebase. Bahkan Google sendiri sangat menyarankan pengguna ML Kit for Firebase untuk migrasi ke Google ML Kit.

Proses integrasinya sederhana, cukup add package dependency di gradle, kemudian build & sync. Kemudian library ini juga tidak ada validasi API Key dan semacamnya.

Ada dua pilihan API Service dalam Google ML Kit:

  • On Device Bundle

Semua komputasi/ML dilakukan secara standalone. Semua model yang dibutuhkan akan di embed ke dalam apk, sehingga dampaknya ukuran apk menjadi besar.

  • On Device Delivered (by Google Play Service)

Semua komputasi/ML dilakukan secara standalone, namun data model yang dibutuhkan akan ditangani oleh Google Play Service, sehingga ukuran apk kecil.

Google Play Service sendiri merupakan API penghubung berbagai macam services yang disediakan oleh Google.

3. Huawei ML Kit

Huawei ML Kit dikembangkan oleh Huawei. Jika dibandingkan dengan Firebase dan Google, Huawei memiliki fungsi yang lebih lengkap. Ada Emotional Probability, Gender Probability , Age Probability dan lain sebagainya. Bagi saya ini benar-benar keren.

Namun sayangnya, khusus untuk Face Detection, library ini hanya menyediakan pilihan on device bundle sehingga dampaknya ukuran apk menjadi bengkak. Sepertinya masih butuh exploring lebih dalam lagi untuk mereduce ukuran apk-nya.

Proses integrasinya memang tidak se-ribet Firebase, namun tetap ada validasi api key saat build.

4. Comparison Table

ML Kit API Comparisons
Comparison items Win
Head Angle
~ Euler Angle X
~ Euler Angle Y
~ Euler Angle Z
Emotion Probability
~ Smiling
~ Neutral
~ Angry
~ Fear
~ Sad
~ Disgust
~ Surprise
Eye
~ Open Right Eye
~ Open Left Eye
Gender Probability
Age Probability
Other
~ Hat
~ Moustache
~ Sun Glass
API Services
~ On Device Bundle
Semua model yang dibutuhkan di download bersama library saat build sync via gradle dan akan di embed ke dalam apk, sehingga ukuran apk jadi besar
~ On Device Delivered
Saat build gradle hanya mendownload library. Sedangkan model didownload dari cloud saat pertama kali install apk
~ On Device Delivered by Google Play Service
Saat build gradle hanya mendownload library, sedangkan model akan di handle oleh Google Play Service
~ API Key validation on Gradle Build 👎🏽 👍 👎🏽
Validasi API Key(Firebase API Key/ Huawei API Key) saat build gradle/ build apk dengan file json services. Konfigurasi di gradle harus benar dan valid. Selain lumayan ribet bagi client, file json services ini seharusnya rahasia karena berisi data credential seperti api key, package id dll.
Apk Size (di build dari Prototype/ Sample project) 👍 👍 👎🏽
~ Delivered API Services 4,4 MB 4,1 MB
~ Bundle APK 23,6 MB 22,3 MB

5. Kesimpulan

  • Dalam hal ketersediaan fungsi, Huawei menang banyak. Namun kekurangannya, ukuran apk jadi bengkak, perlu diteliti lebih dalam untuk mereduce ukuran apk-nya.
  • Firebase kurang recomended untuk komersial, karena masih beta dan Google Sendiri menyarankan migrasi.
  • Google ML Kit, untuk fungsi-fungsi sederhana seperti deteksi smile, eye blink dan face direction sudah cukup memenuhi. Ukuran apk juga bisa di reduce dengan memilih yang on device delivered(by Google Play Service).

Referensi:

 

4 Comments

  1. Mantab mas..
    Jadi, firebase ndak recomended y mas?

    1. Buat experimen sih ndak masalah.
      Kalo komersial, mending google atau huawei. CMIIW.

  2. Mas kalo bikin shape oval di camera view yna gimana yak? atau ada keyword yg bisa di gugling. Makasih

    1. Hangga Aji Sayekti

      agak tricky mas..
      Kalo sy cuma tak tutup pake custom layout k gini. Hehehe.. 😁
      https://stackoverflow.com/questions/36763696/how-to-create-a-transparent-circle-inside-rectangle-shape-in-xml-in-android

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.