Комплект Firebase ML был представлен на Google I/O ’18. Это мобильный SDK, который предоставляет расширенные возможности машинного обучения в таких приложениях, как определение позы, распознавание лиц и маркировка изображений.

Ключевые возможности

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

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

Разработчики всегда могут использовать свои существующие модели TensorFlow Lite.

Основные характеристики

Распознавание лица

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

Обнаружение позы

Сервис обнаружения поз ML Kit распознает все тело человека на изображении или видео. Он обнаруживает тело с 32 точками на теле, такими как верхнее правое плечо, верхнее левое плечо, начало левой талии и начало правой талии. Кроме того, благодаря сервису BodyPix, разработанному на основе определения позы ML Kit, тело, определенное с помощью определения позы, делится на 24 различных области с использованием 32 различных точек.

Дальнейшее чтение

BodyPix — Сегментация тела

BodyPix — это модель машинного обучения с открытым исходным кодом, которая позволяет сегментировать части тела в браузере с помощью TensorFlow.js. BodyPix может классифицировать пиксели изображения по двум категориям; пиксели, представляющие человека, и пиксели, представляющие фон. Он может дополнительно классифицировать пиксели, представляющие человека, по любой из двадцати четырех частей тела.

Реализация BodyPix с Tensorflow

Импортируйте и инициализируйте для Tensorflow и BodyPix. Загрузите предварительно обученные модели для сегментации. В этом случае можно использовать MobileNets. MobileNets — это небольшие модели с малой задержкой и низким энергопотреблением, параметризованные для соответствия ограничениям ресурсов различных вариантов использования мобильных устройств с TensorFlow Lite.

import * as tf from "@tensorflow/tfjs";
import * as bodyPix from "@tensorflow-models/body-pix";
import { Camera } from "expo-camera";
import { cameraWithTensors } from "@tensorflow/tfjs-react-native";

await tf.ready();
const net = await bodyPix.load({ architecture: 'MobileNetV1' });
const TensorCamera = cameraWithTensors(Camera);

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

const handleCameraStream = async (images) => {
    const loop = async () => {
        const nextImageTensor = images.next().value;

        if (nextImageTensor) {
            const partSegmentation = await net.segmentPersonParts(nextImageTensor);

            console.log(partSegmentation);
            tf.dispose([nextImageTensor]);

            requestAnimationFrame(loop);
        }
    }
    loop();
}

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

<TensorCamera
  // Standard Camera props
  type={Camera.Constants.Type.front}
  // Tensor related props
  cameraTextureHeight={1920}
  cameraTextureWidth={1080}
  resizeHeight={300}
  resizeWidth={200}
  resizeDepth={3}
  onReady={handleCameraStream}
  autorender={true}
  ratio={"16:9"}
/>

Спасибо за чтение.

Ресурсы

  1. А. О. Серт, Э. К. Шешен ве О. Гюмюш, «Санал Денеме Одаси ве Беден Олчюсю Тахминлеме Дестекли Мобил Алишвериш Уйгуламаси», Билишим Текнолоджилери Дергиси, ок. 15, сайы. 3, сс. 339–347, Тем. 2022 г., doi:10.17671/gazibtd.1039017
  2. ML Kit для Firebase, https://firebase.google.com/docs/ml-kit, 18.11.2022
  3. [Обновлено] BodyPix: сегментация людей в браузере в реальном времени с помощью TensorFlow.js — блог TensorFlow, https://blog.tensorflow.org/2019/11/updated-bodypix-2.html, 19.11.2022
  4. tensorflow, https://github.com/tensorflow, 19.11.2022

Подписывайтесь на меня