Обнаружение лица и анализ эмоций в Flutter с помощью Google ML Kit

Обнаружение лица и анализ эмоций в Flutter с помощью Google ML Kit

FlutterPulse

Эта статья переведена специально для канала FlutterPulse. В этом канале вы найдёте много интересных вещей, связанных с Flutter. Не забывайте подписываться! 🚀

Распознавание лиц больше не является чем-то из области научной фантастики. От разблокировки смартфонов до измерения настроений клиентов в розничной торговле, обнаружение лиц выросло в один из основных функций современных приложений. С помощью Google ML Kit и Flutter вы можете принести эту магию в ваше приложение — быстро, офлайн и на устройстве.

Распознавание лиц больше не является чем-то из области научной фантастики. От разблокировки смартфонов до измерения настроений клиентов в розничной торговле, обнаружение лиц выросло в один из основных функций современных приложений. С помощью Google ML Kit и Flutter вы можете принести эту магию в ваше приложение — быстро, офлайн и на устройстве.

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

Почему обнаружение лиц?

Обнаружение лиц не только о том, чтобы распознавать лицо — оно может помочь вам:

  • Обнаруживать лица в прямом потоке камеры или фотографиях
  • Отслеживать несколько лиц одновременно
  • Определять ориентиры лица (глаза, нос, рот)
  • Анализировать вращение головы и вероятность улыбки
  • Создавать веселые фильтры, отслеживать фокус, приложения, осведомленные об эмоциях

️ Начало работы

Шаг 1: Добавление зависимостей

Обновите ваш pubspec.yaml следующим образом:

dependencies:
  google_mlkit_face_detection: ^0.10.0
  camera: ^0.10.5
  permission_handler: ^11.0.0

Выполните:

flutter pub get

Шаг 2: Настройка Android и iOS

Android

  • Установите minSdkVersion равным 21 или выше
  • Добавьте разрешение камеры в AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA"/>

iOS

Добавьте разрешение на использование камеры в Info.plist:

<key>NSCameraUsageDescription</key>
<string>Мы нуждаемся в доступе к камере для обнаружения лиц.</string>

Захват прямого потока

Используйте плагин camera для доступа и передачи потока камеры устройства.

Инициализируйте контроллер камеры и запустите поток изображений:

final controller = CameraController(camera, ResolutionPreset.medium);
await controller.initialize();
await controller.startImageStream(onImageAvailable);

Обнаружение лиц

Настройте обнаруживатель лиц ML Kit:

final options = FaceDetectorOptions(
  enableContours: true,
  enableClassification: true, // Включает вероятности улыбки и открытия глаза
  performanceMode: FaceDetectorMode.fast,
);

final faceDetector = FaceDetector(options: options);

Затем обработайте входящий поток изображений:

Future<void> onImageAvailable(CameraImage image) async {
  final inputImage = getInputImageFromCameraImage(image);
  final faces = await faceDetector.processImage(inputImage);

  for (Face face in faces) {
    final smileProb = face.smilingProbability;
    final leftEyeOpenProb = face.leftEyeOpenProbability;
    print("Улыбка: $smileProb, Левый глаз открыт: $leftEyeOpenProb");
  }
}

Используйте эти вероятности, чтобы сделать вывод о простых эмоциях, таких как:

  • Счастлив если smileProbability > 0.7
  • Сонный или моргает если leftEyeOpenProbability < 0.3

Обнаружение эмоций (базовое)

Хотя ML Kit не direkt标.labels эмоций, таких как "счастлив", "грустный" или "злой", вы можете вывести базовые эмоциональные состояния путем комбинации улыбки и данных о открытости глаз.

Например:

String analyzeEmotion(Face face) {
  if (face.smilingProbability!= null && face.smilingProbability! > 0.8) {
    return "Счастлив";
  } else if (face.leftEyeOpenProbability!= null && face.leftEyeOpenProbability! < 0.3) {
    return "Сонный";
  }
  return "Нейтральный";
}

Для более глубокого обнаружения эмоций рассмотрите возможность интеграции TensorFlow Lite с предварительно обученными моделями.

Реальные случаи использования

  • Фильтры для селфи в реальном времени
  • Приложения с разблокировкой по улыбке
  • Инструменты для отслеживания эмоций клиентов
  • Отслеживание посещаемости по присутствию лица
  • Системы безопасности и контроля доступа

️ Приватность и этика

Всегда информируйте пользователей при захвате лицевых данных. Поскольку ML Kit обрабатывает все на устройстве, вы получаете сильную приватность по дизайну — никакие данные не покидают телефон пользователя.

Но как лучшая практика:

  • Запросить явное согласие
  • Избегать хранения данных о лице, если это не необходимо
  • Быть прозрачным в своей политике конфиденциальности

Тестирование функции

Используйте реальные устройства для тестирования обнаружения лиц. Эмуляторы в целом не поддерживают потоки камеры, и обнаружение лиц может вести себя по-разному в зависимости от освещения, угла и качества камеры.

Что дальше?

Хотите пойти дальше?

  • Обнаруживать выражения лица с помощью пользовательских моделей ML
  • Создавать фильтры AR с помощью ориентиров лица
  • Объединять с речевым вводом для чат-ботов AI
  • Использовать TensorFlow Lite для более глубокого классификации эмоций

Подводя итоги

Обнаружение лиц в Flutter проще, чем когда-либо, благодаря Google ML Kit. Будете ли вы строить развлекательное приложение или инструмент для повышения производительности, функции лица и базовые инсайты эмоций могут сделать ваш интерфейс более интерактивным и интеллектуальным.

Пусть ваше приложение увидит что происходит — и отреагирует соответствующим образом.

Report Page