Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Membuat Aplikasi Android untuk Mengenali Kontur Wajah Dengan Firebase ML

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Imam Firmansyah (you can also view the original English article)

Firebase ML Kit, kumpulan API lokal dan berbasis cloud untuk menambahkan kemampuan mechine learning ke aplikasi mobile, baru-baru ini telah ditingkatkan untuk mendukung deteksi kontur wajah. Berkat fitur canggih ini, Anda tidak lagi harus membatasi diri Anda untuk membuat perkiraan persegi panjang saat mendeteksi wajah. Sebagai gantinya, Anda dapat bekerja dengan sejumlah besar koordinat yang secara akurat menggambarkan bentuk wajah yang terdeteksi dan penanda wajah, seperti mata, bibir, dan alis.

Hal ini memungkinkan Anda untuk dengan mudah membuat aplikasi yang didukung AI yang dapat melakukan tugas-tugas terkait computer vision yang kompleks seperti bertukar wajah, mengenali emosi, atau menerapkan tata rias digital.

Dalam tutorial ini, saya akan menunjukkan kepada Anda cara menggunakan fitur deteksi kontur wajah ML Kit untuk membuat aplikasi Android yang dapat menyorot wajah dalam foto.

Prasyarat

Untuk memanfaatkan tutorial ini, Anda harus memiliki akses ke hal-hal berikut:

  • Versi terbaru dari Android Studio
  • Perangkat yang menjalankan Android API level 23 atau lebih tinggi

1. Mengkonfigurasi Proyek Anda

Karena ML Kit adalah bagian dari platform Firebase, Anda memerlukan proyek Firebase untuk dapat menggunakannya dalam proyek Android Studio Anda. Untuk membuatnya, jalankan Firebase Assistant dengan membuka Tools > Firebase.

Selanjutnya, buka bagian Analytics dan tekan tombol Connect. Pada dialog yang muncul, ketikkan nama untuk proyek Firebase baru Anda, pilih negara tempat Anda berada, dan tekan tombol Connect.

Connect to Firebase dialog

Setelah Anda memiliki koneksi yang sukses, tekan tombol Add analytics to your app sehingga asisten dapat membuat semua perubahan konfigurasi terkait Firebase yang diperlukan dalam proyek Android Studio Anda.

Pada titik ini, jika Anda membuka file modul app build.gradle, di antara perubahan lainnya, Anda akan melihat dependensi implementation berikut yang ada di dalamnya:

Untuk dapat menggunakan fitur deteksi kontur wajah ML Kit, Anda akan membutuhkan dua dependensi lagi: satu untuk versi terbaru dari library ML Vision dan satu lagi untuk model wajah ML Vision. Berikut ini cara menambahkannya:

Dalam tutorial ini, Anda akan bekerja dengan gambar jarak jauh. Untuk memfasilitasi pengunduhan dan menampilkan gambar-gambar tersebut, tambahkan dependensi untuk library Picasso:

Deteksi kontur wajah ML Kit selalu berjalan secara lokal di perangkat pengguna Anda. Secara default, model machine learning yang melakukan deteksi kontur wajah diunduh secara otomatis saat pertama kali pengguna membuka aplikasi Anda. Untuk meningkatkan pengalaman pengguna, saya sarankan Anda memulai pengunduhan segera setelah pengguna menginstal aplikasi Anda. Untuk melakukannya, tambahkan tag <meta-data> berikut ke file AndroidManifest.xml:

2. Membuat Layout

Anda akan membutuhkan tiga widget dalam layout aplikasi Anda: widget EditText tempat pengguna dapat mengetikkan URL foto online, widget ImageView untuk menampilkan foto, dan widget Button untuk memulai proses deteksi kontur wajah. Selain itu, Anda memerlukan widget RelativeLayout untuk memposisikan tiga widget. Jadi tambahkan kode berikut ke file layout main activity XML Anda:

3. Mengunduh dan Menampilkan Gambar

Dengan libraray Picasso, mengunduh dan menampilkan gambar jarak jauh melibatkan panggilan hanya ke dua metode. Pertama, panggilan ke metode load() untuk menentukan URL gambar yang ingin Anda unduh, lalu panggilan ke metode into() untuk menentukan widget ImageView di mana Anda ingin menampilkan gambar yang diunduh.

Anda harus, tentu saja, memanggil kedua metode hanya setelah pengguna selesai mengetik di URL. Oleh karena itu, pastikan Anda memanggil mereka di dalam objek OnEditorActionListener yang melekat pada widget EditText yang Anda buat pada langkah sebelumnya. Kode berikut menunjukkan cara melakukannya:

Jalankan aplikasinya sekarang dan coba ketik URL gambar yang valid untuk memastikan bahwa ia berfungsi dengan benar.

App displaying a photo

4. Membuat Deteksi Kontur Wajah

Anda akan menjalankan semua operasi deteksi kontur wajah di dalam on-click event handler yang melekat pada widget Button pada layout Anda. Jadi tambahkan kode berikut ke activity Anda sebelum melanjutkannya:

Agar dapat bekerja dengan data wajah, Anda sekarang harus membuat objek FirebaseVisionFaceDetector. Namun, karena ia tidak mendeteksi kontur wajah secara default, Anda juga harus membuat objek FirebaseVisionFaceDetectorOptions yang dapat mengonfigurasinya untuk melakukannya.

Untuk membuat objek opsi yang valid, Anda harus mengikuti pola builder. Jadi buat instance class FirebaseVisionFaceDetectorOptions.Builder, panggil metode setContourMode(), dan teruskan ALL_CONTOURS constant untuk menetapkan bahwa Anda ingin mendeteksi kontur semua wajah yang ada dalam gambar Anda.

Kemudian panggil method build() dari builder untuk menghasilkan objek opsi.

Anda sekarang dapat meneruskan objek opsi ke metode getVisionFaceDetector() dari class FirebaseVision ML Kit untuk membuat detektor kontur wajah Anda.

5. Mengumpulkan Data Koordinat

Detektor kontur wajah tidak dapat secara langsung menggunakan foto yang ditampilkan oleh widget ImageView Anda. Sebaliknya, ia mengharapkan Anda untuk mengirimkan objek FirebaseVisionImageke objek tersebut. Untuk menghasilkan objek seperti itu, Anda harus mengonversi foto menjadi objek Bitmap. Kode berikut menunjukkan cara melakukannya:

Anda sekarang dapat memanggil metode detectInImage() dari detektor untuk mendeteksi kontur semua wajah yang ada dalam foto. Metode berjalan secara asinkron dan mengembalikan daftar objek FirebaseVisionFace jika berhasil diselesaikan.

Di dalam on-success listener, Anda dapat menggunakan variabel implisit it untuk loop melalui daftar wajah yang terdeteksi. Setiap wajah memiliki sejumlah besar titik kontur yang terkait dengannya. Untuk mendapatkan akses ke titik-titik tersebut, Anda harus memanggil metode getContour(). Metode ini dapat mengembalikan titik kontur dari beberapa tanda wajah yang berbeda. Misalnya, jika Anda meneruskan konstanta LEFT_EYEke sana, ia akan mengembalikan titik-titik yang Anda perlukan untuk membuat garis besar mata kiri. Demikian pula, jika Anda meneruskan UPPER_LIP_TOP, Anda akan mendapatkan titik-titik yang terkait dengan tepi atas dari bibir atas.

Dalam tutorial ini, kita akan menggunakan konstan FACE karena kita ingin menonjolkan wajah itu sendiri. Kode berikut menunjukkan kepada Anda cara mencetak koordinat X dan Y dari semua titik yang ada di sepanjang tepi setiap wajah:

Jika Anda mencoba menggunakan aplikasinya sekarang dan menentukan gambar yang memiliki setidaknya satu wajah di dalamnya, Anda akan melihat sesuatu seperti ini di jendela Logcat:

Logcat window showing coordinates of contour points

6. Menggambar Jalur di Sekitar Wajah

Untuk menyorot wajah yang terdeteksi, mari kita menggambar jalur di sekitar mereka menggunakan titik kontur. Agar dapat menggambar jalur tersebut, Anda memerlukan salinan bitmap widget ImageViewAnda yang dapat berubah. Buat satu dengan memanggil metode copy().

Menggambar jalur dengan langsung memodifikasi piksel dari bitmap dapat menjadi sulit. Jadi buat kanvas 2D baru untuk itu dengan meneruskannya ke constructor class Canvas.

Selain itu, buat objek Paint untuk menentukan warna piksel yang ingin Anda gambar di kanvas. Kode berikut menunjukkan kepada Anda cara membuat kanvas tempat Anda dapat menggambar piksel merah tembus cahaya:

Cara termudah untuk menggambar jalur pada kanvas adalah menggunakan kelas Path. Dengan menggunakan metode moveTo()dan lineTo() yang dinamai secara intuitif dari kelas, Anda dapat dengan mudah menggambar bentuk kompleks pada kanvas.

Untuk saat ini, untuk menggambar bentuk wajah, panggil metode moveTo() sekali dan lewati koordinat titik kontur pertama ke koordinat tersebut. Dengan demikian, Anda menentukan di mana jalur dimulai. Kemudian lewati koordinat semua titik ke metode lineTo() untuk benar-benar menggambar jalur. Terakhir, panggil metode close()untuk menutup jalur dan mengisinya.

Dengan demikian, tambahkan kode berikut:

Untuk me-render path, berikan ke metode drawPath() kanvas, bersama dengan objek Paint.

Dan untuk memperbarui widget ImageView untuk menampilkan bitmap yang dimodifikasi, berikan bitmap ke metode setImageBitmap().

Jika Anda menjalankan aplikasinya sekarang, Anda harus dapat melihatnya menggambar topeng merah transparan di semua wajah yang dideteksi.

App highlighting a face

Kesimpulan

Dengan API deteksi kontur wajah ML Kit yang baru dan sedikit kreativitas, Anda dapat dengan mudah membuat aplikasi yang didukung AI yang dapat melakukan tugas-tugas kompleks terkait computer vision seperti bertukar wajah, mendeteksi emosi, atau menerapkan tata rias digital. Dalam tutorial ini, Anda telah belajar cara menggunakan koordinat 2D yang dihasilkan API untuk menggambar bentuk yang menyorot wajah yang ada dalam sebuah foto.

Deteksi kontur wajah API dapat menangani maksimal lima wajah dalam sebuah foto. Untuk kecepatan dan akurasi maksimum, saya sarankan Anda menggunakannya hanya dengan foto-foto yang memiliki satu atau dua wajah.

Untuk mempelajari lebih lanjut tentang API, lakukan rujukan ke dokumentasi resmi.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.