Mengenali fitur teks dan wajah dengan ML Kit: Android

1. Pengantar

ML Kit adalah SDK seluler yang menghadirkan keahlian machine learning Google untuk aplikasi Android dan iOS dalam paket yang andal dan mudah digunakan. Baik sebagai pemula atau berpengalaman dalam machine learning, Anda dapat dengan mudah mengimplementasikan fungsi yang diperlukan hanya dalam beberapa baris kode. Anda tidak perlu memiliki pengetahuan mendalam tentang jaringan neural atau pengoptimalan model untuk memulai.

Jika Anda mengalami masalah (bug kode, kesalahan gramatikal, susunan kata yang tidak jelas, dll.) saat mengerjakan codelab ini, laporkan masalah tersebut melalui link Laporkan kesalahan di pojok kiri bawah codelab.

Bagaimana cara kerjanya?

ML Kit memudahkan penerapan teknik ML di aplikasi Anda dengan menyatukan teknologi ML Google, seperti Mobile Vision, dan TensorFlow Lite, semua dalam satu SDK. Baik Anda memerlukan kemampuan real-time model di perangkat Mobile Vision, atau fleksibilitas model TensorFlow Lite kustom, ML Kit siap membantu Anda.

Codelab ini akan memandu Anda membuat aplikasi Android Anda sendiri yang dapat mendeteksi teks dan fitur wajah secara otomatis dalam gambar.

Yang akan Anda buat

Dalam codelab ini, Anda akan mem-build aplikasi Android dengan ML Kit. Aplikasi Anda akan:

  • Menggunakan ML Kit Text Recognition API untuk mendeteksi teks dalam gambar
  • Menggunakan ML Kit Face Conour API untuk mengidentifikasi fitur wajah pada gambar

Yang akan Anda pelajari

  • Cara menggunakan ML Kit SDK untuk menambahkan kemampuan Machine Learning lanjutan dengan mudah seperti pengenalan teks dan deteksi fitur wajah

Yang Anda butuhkan

  • Versi terbaru Android Studio (v3.0+)
  • Emulator Android Studio atau perangkat Android fisik
  • Kode contoh
  • Pengetahuan dasar tentang pengembangan Android di Java
  • Pemahaman dasar tentang model machine learning

Codelab ini berfokus pada ML Kit. Konsep dan blok kode yang tidak relevan akan dibahas sekilas dan disediakan, jadi Anda cukup menyalin dan menempelkannya.

2. Mempersiapkan

Download Kode

Klik link berikut untuk mendownload semua kode untuk codelab ini:

Ekstrak file ZIP yang didownload. Tindakan ini akan mengekstrak folder root (mlkit-android-master) dengan semua resource yang Anda perlukan. Untuk codelab ini, Anda hanya memerlukan resource di subdirektori vision.

Subdirektori vision di repositori mlkit-android-master berisi dua direktori:

  • android_studio_folder.pngstarter—Kode awal yang Anda buat di codelab ini.
  • android_studio_folder.pngfinal—Kode lengkap untuk aplikasi contoh yang telah selesai.

3. Memeriksa dependensi untuk ML Kit

Memverifikasi dependensi untuk ML Kit

Baris berikut seharusnya sudah ditambahkan ke akhir file build.gradle di direktori app project Anda (periksa untuk mengonfirmasi):

build.gradle

dependencies {
  // Face features
  implementation 'com.google.mlkit:face-detection:16.0.0'

  // Text features
  implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}

Ini adalah dependensi ML Kit tertentu yang Anda perlukan untuk menerapkan fitur dalam codelab ini.

4. Menjalankan aplikasi awal

Setelah mengimpor project ke Android Studio dan memeriksa dependensi untuk ML Kit, Anda siap menjalankan aplikasi untuk pertama kalinya. Mulai emulator Android Studio, lalu klik Run ( execute.png) di toolbar Android Studio.

Aplikasi akan diluncurkan di emulator Anda. Pada tahap ini, Anda akan melihat tata letak dasar yang memiliki kolom drop-down yang memungkinkan Anda memilih di antara 3 gambar. Di bagian berikutnya, Anda akan menambahkan pengenalan teks ke aplikasi untuk mengidentifikasi teks dalam gambar.

5. Menambahkan pengenalan teks di perangkat

Pada langkah ini, kita akan menambahkan fungsi ke aplikasi Anda untuk mengenali teks dalam gambar.

Menyiapkan dan menjalankan pengenalan teks di perangkat pada gambar

Tambahkan kode berikut ke metode runTextRecognition class MainActivity:

MainActivity.java

private void runTextRecognition() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   TextRecognizer recognizer = TextRecognition.getClient();
   mTextButton.setEnabled(false);
   recognizer.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<Text>() {
                       @Override
                       public void onSuccess(Text texts) {
                           mTextButton.setEnabled(true);
                           processTextRecognitionResult(texts);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mTextButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });
}

Kode di atas mengonfigurasi detektor pengenalan teks dan memanggil fungsi processTextRecognitionResult dengan respons.

Memproses respons pengenalan teks

Tambahkan kode berikut ke processTextRecognitionResult di class MainActivity untuk mengurai hasil dan menampilkannya di aplikasi Anda.

MainActivity.java

private void processTextRecognitionResult(Text texts) {
   List<Text.TextBlock> blocks = texts.getTextBlocks();
   if (blocks.size() == 0) {
       showToast("No text found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < blocks.size(); i++) {
       List<Text.Line> lines = blocks.get(i).getLines();
       for (int j = 0; j < lines.size(); j++) {
           List<Text.Element> elements = lines.get(j).getElements();
           for (int k = 0; k < elements.size(); k++) {
               Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
               mGraphicOverlay.add(textGraphic);

           }
       }
   }
}

Menjalankan aplikasi di emulator

Sekarang klik Run ( execute.png) di toolbar Android Studio. Setelah aplikasi dimuat, pastikan Test Image 1(Text) dipilih di kolom drop-down lalu klik tombol FIND TEXT.

Aplikasi Anda sekarang akan terlihat seperti gambar di bawah, yang menampilkan hasil pengenalan teks dan kotak pembatas yang ditempatkan di atas gambar asli.

10b12d0e8822eaf5.pngS

Foto: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0

Selamat, Anda baru saja menambahkan pengenalan teks di perangkat ke aplikasi menggunakan ML Kit. Pengenalan teks di perangkat sangat cocok untuk banyak kasus penggunaan karena berfungsi meskipun aplikasi Anda tidak memiliki konektivitas internet dan cukup cepat untuk digunakan pada gambar diam serta frame video live.

6. Menambahkan deteksi kontur wajah di perangkat

Pada langkah ini, kita akan menambahkan fungsi ke aplikasi Anda untuk mengenali kontur wajah dalam gambar.

Menyiapkan dan menjalankan deteksi kontur wajah di perangkat pada gambar

Tambahkan kode berikut ke metode runFaceContourDetection dari class MainActivity:

MainActivity.java

private void runFaceContourDetection() {
   InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
   FaceDetectorOptions options =
           new FaceDetectorOptions.Builder()
                   .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
                   .setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
                   .build();

   mFaceButton.setEnabled(false);
   FaceDetector detector = FaceDetection.getClient(options);
   detector.process(image)
           .addOnSuccessListener(
                   new OnSuccessListener<List<Face>>() {
                       @Override
                       public void onSuccess(List<Face> faces) {
                           mFaceButton.setEnabled(true);
                           processFaceContourDetectionResult(faces);
                       }
                   })
           .addOnFailureListener(
                   new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           // Task failed with an exception
                           mFaceButton.setEnabled(true);
                           e.printStackTrace();
                       }
                   });

}

Kode di atas mengonfigurasi detektor kontur wajah dan memanggil fungsi processFaceContourDetectionResult dengan respons.

Memproses respons deteksi kontur wajah

Tambahkan kode berikut ke processFaceContourDetectionResult di class MainActivity untuk mengurai hasil dan menampilkannya di aplikasi Anda.

MainActivity.java

private void processFaceContourDetectionResult(List<Face> faces) {
   // Task completed successfully
   if (faces.size() == 0) {
       showToast("No face found");
       return;
   }
   mGraphicOverlay.clear();
   for (int i = 0; i < faces.size(); ++i) {
       Face face = faces.get(i);
       FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
       mGraphicOverlay.add(faceGraphic);
       faceGraphic.updateFace(face);
   }
}

Menjalankan aplikasi di emulator

Sekarang klik Run ( execute.png) di toolbar Android Studio. Setelah aplikasi dimuat, pastikan Test Image 2 (Face) dipilih di kolom drop-down, lalu klik tombol FIND FACE CONTOUR.

Aplikasi Anda sekarang akan terlihat seperti gambar di bawah, yang menampilkan hasil deteksi kontur wajah dan menampilkan kontur wajah sebagai titik yang ditempatkan di atas gambar asli.

f9ff2fcbf63f0f3b.png

Selamat, Anda baru saja menambahkan deteksi kontur wajah di perangkat ke aplikasi Anda menggunakan ML Kit! Deteksi kontur wajah di perangkat sangat cocok untuk banyak kasus penggunaan karena fitur ini berfungsi bahkan saat aplikasi tidak memiliki konektivitas internet dan cukup cepat untuk digunakan pada gambar diam serta frame video live.

7. Selamat!

Anda telah berhasil menggunakan ML Kit untuk menambahkan kemampuan machine learning lanjutan ke aplikasi dengan mudah.

Yang telah kita bahas

  • Cara menambahkan ML Kit ke aplikasi Android
  • Cara menggunakan pengenalan teks di perangkat pada ML Kit untuk menemukan teks dalam gambar
  • Cara menggunakan kontur wajah di perangkat dalam ML Kit untuk mengidentifikasi fitur wajah pada gambar

Langkah Berikutnya

  • Gunakan ML Kit di aplikasi Android Anda sendiri.

Pelajari Lebih Lanjut