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. Ваше приложение будет:
|
|
Что вы узнаете
- Как использовать SDK ML Kit для простого добавления расширенных возможностей машинного обучения, таких как распознавание текста и определение черт лица.
Что вам понадобится
- Последняя версия Android Studio (v3.0+)
- Эмулятор Android Studio или физическое устройство Android.
- Пример кода
- Базовые знания разработки под Android на Java.
- Базовое понимание моделей машинного обучения.
Данный практический урок посвящен ML Kit. Несущественные концепции и блоки кода опущены и предоставлены для простого копирования и вставки.
2. Настройка
Скачать код
Чтобы скачать весь код для этого практического занятия, перейдите по следующей ссылке:
Распакуйте загруженный zip-файл. В результате будет распакована корневая папка ( mlkit-android-master ) со всеми необходимыми ресурсами. Для этого практического занятия вам понадобятся только ресурсы из подкаталога vision .
Подкаталог vision в репозитории mlkit-android-master содержит два каталога:
Стартовый код — это начальный код, на основе которого вы будете строить дальнейшую работу в этом практическом занятии.
Завершенный код — код готового демонстрационного приложения.
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 и нажмите «Запустить» (
) на панели инструментов Android Studio.
Приложение должно запуститься на вашем эмуляторе. На этом этапе вы увидите базовый интерфейс с выпадающим списком, позволяющим выбрать одно из 3 изображений. В следующем разделе вы добавите в приложение функцию распознавания текста для идентификации текста на изображениях.
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);
}
}
}
}
Запустите приложение на эмуляторе.
Теперь нажмите « Выполнить » (
) в панели инструментов Android Studio. После загрузки приложения убедитесь, что в выпадающем списке выбран пункт Test Image 1(Text) , и нажмите кнопку FIND TEXT .
Теперь ваше приложение должно выглядеть как на изображении ниже, показывая результаты распознавания текста и ограничивающие рамки, наложенные поверх исходного изображения.

Фото: Кай Шрайбер / 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);
}
}
Запустите приложение на эмуляторе.
Теперь нажмите « Выполнить » (
) в панели инструментов Android Studio. После загрузки приложения убедитесь, что в выпадающем списке выбрано Test Image 2 (Face) , и нажмите кнопку FIND FACE CONTOUR .
Теперь ваше приложение должно выглядеть как на изображении ниже, отображая результаты обнаружения контуров лица и показывая контуры лица в виде точек, наложенных на исходное изображение.

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