Распознавайте текст и черты лица с помощью ML Kit: Android

1. Введение

ML Kit — это мобильный SDK, который объединяет опыт Google в области машинного обучения в приложениях Android и iOS в мощном, но простом в использовании пакете. Независимо от того, являетесь ли вы новичком или имеете опыт в области машинного обучения, вы можете легко реализовать нужные вам функции всего за несколько строк кода. Чтобы начать работу, не обязательно иметь глубокие знания в области нейронных сетей или оптимизации моделей.

Если при работе с этой лабораторией кода у вас возникнут какие-либо проблемы (ошибки в коде, грамматические ошибки, нечеткие формулировки и т. д.), сообщите об этом с помощью ссылки «Сообщить об ошибке» в левом нижнем углу лабораторий кода.

Как это работает?

ML Kit упрощает применение методов машинного обучения в ваших приложениях, объединяя технологии машинного обучения Google, такие как Mobile Vision и TensorFlow Lite , в одном SDK. Если вам нужны возможности работы в реальном времени моделей Mobile Vision на устройстве или гибкость пользовательских моделей TensorFlow Lite, ML Kit поможет вам.

В этой лаборатории вы узнаете, как создать собственное приложение для Android, которое сможет автоматически обнаруживать текст и черты лица на изображении.

Что вы построите

В этой лаборатории кода вы собираетесь создать приложение для Android с помощью ML Kit. Ваше приложение будет:

  • Используйте API распознавания текста ML Kit для обнаружения текста на изображениях.
  • Используйте API ML Kit Face Contour для определения черт лица на изображениях.

Что вы узнаете

  • Как использовать ML Kit SDK, чтобы легко добавлять расширенные возможности машинного обучения, такие как распознавание текста и определение черт лица.

Что вам понадобится

  • Последняя версия Android Studio (v3.0+).
  • Эмулятор Android Studio или физическое устройство Android
  • Пример кода
  • Базовые знания разработки Android на Java.
  • Базовое понимание моделей машинного обучения

Эта лаборатория ориентирована на ML Kit. Нерелевантные концепции и блоки кода замалчиваются и предоставляются для простого копирования и вставки.

2. Приступаем к настройке

Загрузите код

Щелкните следующую ссылку, чтобы загрузить весь код для этой лаборатории кода:

Распакуйте загруженный zip-файл. Это распакует корневую папку ( mlkit-android-master ) со всеми необходимыми вам ресурсами. Для этой лаборатории кода вам понадобятся только ресурсы из подкаталога vision .

Подкаталог vision в репозитории mlkit-android-master содержит два каталога:

  • android_studio_folder.png starter — Начальный код, на основе которого вы работаете в этой лаборатории кода.
  • android_studio_folder.png Final — Готовый код готового примера приложения.

3. Проверьте зависимости для ML Kit.

Проверьте зависимости для ML Kit.

Следующие строки уже должны быть добавлены в конец файла build.gradle в каталоге app вашего проекта (проверьте для подтверждения):

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'
}

Это конкретные зависимости ML Kit, необходимые для реализации функций этой лаборатории кода.

4. Запустите стартовое приложение.

Теперь, когда вы импортировали проект в Android Studio и проверили зависимости для ML Kit, вы готовы запустить приложение в первый раз. Запустите эмулятор Android Studio и нажмите «Выполнить» ( выполнить.png ) на панели инструментов Android Studio.

Приложение должно запуститься на вашем эмуляторе. На этом этапе вы должны увидеть базовый макет с раскрывающимся списком, позволяющим выбирать между тремя изображениями. В следующем разделе вы добавите распознавание текста в свое приложение для идентификации текста на изображениях.

5. Добавьте распознавание текста на устройстве.

На этом этапе мы добавим в ваше приложение функцию распознавания текста на изображениях.

Настройте и запустите распознавание текста на устройстве на изображении.

Добавьте следующее в метод runTextRecognition класса 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();
                       }
                   });
}

Приведенный выше код настраивает детектор распознавания текста и вызывает processTextRecognitionResult с ответом.

Обработка ответа распознавания текста

Добавьте следующий код в processTextRecognitionResult в классе MainActivity , чтобы проанализировать результаты и отобразить их в своем приложении.

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);

           }
       }
   }
}

Запустите приложение на эмуляторе

Теперь нажмите «Выполнить» ( выполнить.png ) на панели инструментов Android Studio. После загрузки приложения убедитесь, что в раскрывающемся поле выбрано Test Image 1(Text) , и нажмите кнопку FIND TEXT .

Теперь ваше приложение должно выглядеть, как на изображении ниже, показывая результаты распознавания текста и ограничивающие рамки, наложенные поверх исходного изображения.

10b12d0e8822eaf5.png

Фото: Кай Шрайбер / Wikimedia Commons / CC BY-SA 2.0

Поздравляем, вы только что добавили распознавание текста на устройстве в свое приложение с помощью ML Kit! Распознавание текста на устройстве отлично подходит для многих случаев использования, поскольку оно работает, даже если ваше приложение не имеет подключения к Интернету, и достаточно быстро, чтобы его можно было использовать как с неподвижными изображениями, так и с кадрами живого видео.

6. Добавьте распознавание контуров лица на устройство.

На этом этапе мы добавим в ваше приложение функцию распознавания контуров лиц на изображениях.

Настройте и запустите распознавание контуров лица на устройстве на изображении.

Добавьте следующее в метод runFaceContourDetection класса 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();
                       }
                   });

}

Приведенный выше код настраивает детектор контуров лица и вызывает processFaceContourDetectionResult с ответом.

Обработка ответа на обнаружение контура лица

Добавьте следующий код в processFaceContourDetectionResult в классе MainActivity , чтобы проанализировать результаты и отобразить их в своем приложении.

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);
   }
}

Запустите приложение на эмуляторе

Теперь нажмите «Выполнить» ( выполнить.png ) на панели инструментов Android Studio. После загрузки приложения убедитесь, что в раскрывающемся поле выбрано Test Image 2 (Face) , и нажмите кнопку FIND FACE CONTOUR .

Теперь ваше приложение должно выглядеть, как на изображении ниже, показывая результаты определения контура лица и отображая контуры лица в виде точек, наложенных поверх исходного изображения.

f9ff2fcbf63f0f3b.png

Поздравляем, вы только что добавили распознавание контуров лица на устройстве в свое приложение с помощью ML Kit! Обнаружение контура лица на устройстве отлично подходит для многих случаев использования, поскольку оно работает, даже если ваше приложение не имеет подключения к Интернету, и достаточно быстро, чтобы его можно было использовать как с неподвижными изображениями, так и с кадрами живого видео.

7. Поздравляем!

Вы успешно использовали ML Kit, чтобы легко добавить в свое приложение расширенные возможности машинного обучения.

Что мы рассмотрели

  • Как добавить ML Kit в приложение для Android
  • Как использовать распознавание текста на устройстве в ML Kit для поиска текста в изображениях
  • Как использовать контур лица на устройстве в ML Kit для определения черт лица на изображениях

Следующие шаги

  • Используйте ML Kit в своем собственном приложении для Android!

Узнать больше