Выражение лица играет важную роль в невербальном общении, особенно в передаче таких эмоций, как счастье, удивление, шок, печаль, безразличие и т. д. Для визуального усиления этих выражений использовались эффекты селфи. MediaPose имеет две модели глубокого обучения, нацеленные на лицо: детектор лица и решение для построения сетки лица. Эти две нейронные сети можно использовать для создания нашего веб-приложения, чтобы добавить эффекты лица, чтобы сделать селфи более увлекательными и интерактивными. Чтобы процитировать определение MediaPipe модели лицевой сетки с их официального сайта:

«Решение по геометрии лица, которое оценивает 468 3D-ориентиров лица в режиме реального времени даже на мобильных устройствах. Он использует машинное обучение (ML) для определения трехмерной геометрии поверхности, требуя только одной камеры без необходимости использования специального датчика глубины».

Это решение поставляется с двумя разными нейронными сетями, которые гармонично работают вместе:

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

Приложения в дополненной реальности

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

Что касается решения Face Mesh, оно более сложное, потому что вам нужно учитывать 468 ориентиров, которые создают 3D-поверхность лица человека. MediaPipe поделилась канонической 3D-моделью лица, которую можно загрузить и отредактировать с помощью программного обеспечения для 3D. Вы можете создавать маски для лица или добавлять модные аксессуары, такие как шляпы или очки, для создания виртуальных примерочных продуктов, используя 3D-модель в качестве ориентира для размещения объектов. В этом случае вам потребуется использовать 3D-библиотеку, например ThreeJS или BabylonJS, для рендеринга 3D-графики. Используйте результаты модели сетки лица для отслеживания и позиционирования 3D-графики.

Конфигурация проекта

Перед интеграцией решений для лица вам необходимо установить необходимые зависимости из репозитория MediaPose npm.

npm I -s @mediapipe/face_detection @mediapipe/face_mesh

Наконец, вам нужно убедиться, что необходимые файлы, необходимые для запуска моделей лица, могут быть предоставлены с вашего локального сервера разработки или в рабочей среде. Для локальной доступности обновите JSON-файл вашего пакета в разделах скриптов следующим образом:

“scripts”: {
...
“start”: “npm run copy:all && ng serve”,
    “copy:all”: “npm run copy:face_mesh && npm run copy:face_detector && npm run copy:selfie_segmentation”,
    “copy:selfie_segmentation”: “cp -R node_modules/@mediapip/selfie_segmentation src/assets”,
    "copy:face_detector": "cp -R node_modules/@mediapipe/face_detection src/assets",
    "copy:face_mesh": "cp -R node_modules/@mediapipe/face_mesh src/assets",
}

Что касается производственных сборок, измените файл конфигурации angular JSON в цели сборки, как показано ниже.

"assets”: [
    …
    { 
         "glob": "**/*",
         "input": "./node_modules/@mediapipe/face_detection",
         "output": "./assets/face_detection"
    },
    {
         "glob": "**/*", 
         "input": "./node_modules/@mediapipe/face_mesh",
         "output": "./assets/face_mesh"
    }
]

Внедрение распознавания лиц

Помните сервис ML, который мы создали в предыдущем разделе? Откройте его и импортируйте детектор лиц следующим образом:

import { FaceDetection } from "@mediapipe/face_detection";

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

Затем измените определение класса в службе:

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

Реализация Face Mesh

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

import {} from “@mediapipe/face_mesh

Наконец, добавьте в класс службы следующую функциональность:

  • Инициализируйте и настройте модель сетки лица, проверьте параметры конфигурации в документации.
  • Отправьте видеокадры моделям для вывода.
  • Постобработайте результаты модели.

Заключение

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

Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.