Эта статья написана экспертом по видео WebRTC из Houseparty Густаво Гарсия Бернардо и экспертом по мобильным устройствам TokBox по WebRTC Роберто Пересом. Они использовали набор Google ML Kit для реализации простого обнаружения улыбки в вызовах WebRTC, принимая во внимание точность обнаружения, задержку и частоту обнаружения. Сбалансировано с использованием ЦП и т. д. ., фактические результаты показывают, что результаты обнаружения ML Kit удовлетворительны. LiveVideoStack перевел эту статью.
Автор: Роберто Перес, Густаво Гарсия
Перевод / слиток
Оригинал: https://webrtchacks.com/ml-kit-smile-detection/
Теперь, когда настройка видеовызова в большинстве случаев относительно проста, мы можем пойти дальше и сделать кое-что интересное с видеопотоком. Компьютерное зрение также становится проще благодаря новым достижениям в области машинного обучения (ML) и все большему количеству API и библиотек. Google ML Kit — это недавно предложенная новая библиотека на основе машинного обучения для быстрого доступа к результатам компьютерного зрения.
Чтобы показать, как новый ML KIT от Google можно использовать для обнаружения улыбки пользователя в прямом эфире WebRTC, я хотел бы поприветствовать Густаво Гарсию Бернардо, бывшего видеогуру Houseparty WebRTC. А пока добро пожаловать к Роберто Пересу, эксперту по мобильному WebRTC в TokBox. Они рассказывают об распознавании лиц, показывают несколько примеров кода, но, что более важно, делятся своими исследованиями по оптимальной конфигурации для реализации распознавания улыбки в приложении для связи в реальном времени (RTC).
вводить
Наиболее распространенным примером машинного обучения в коммуникациях в реальном времени (RTC) является компьютерное зрение.Однако мы не видели много практических применений этих алгоритмов, кроме использования распознавания лиц для распознавания, отслеживания и улучшения.К счастью, комментарий генерального директора Houseparty Бен Рубин две недели назад, что дало нам возможность изучить варианты использования искусственного зрения:
«Что, если бы кто-то мог сделать сторонний проект, который обнаруживает улыбающиеся лица, чтобы мы могли начать измерять улыбки и отображать их на панели инструментов? Я думаю, что это важно на многих разных уровнях».
Почти в то же время Google выпустила свой новый кроссплатформенный мобильный SDK для машинного обучения под названием ML Kit. Мы хотим проверить это сейчас. К счастью, все планеты позволяют опробовать это на реальном приложении, а именно: определение улыбки через ML нативно на iPhone в WebRTC-разговоре.
выбор кадра
Мы можем начать эту задачу с некоторых фреймворков и библиотек машинного обучения на устройстве. Вероятно, самой известной библиотекой для этого типа использования является OpenCV. OpenCV — это очень зрелое многоплатформенное решение с множеством функций, основанных на традиционных методах обработки изображений. В частности, для iOS в прошлом году Apple начала добавлять несколько новых API в этой области. Теперь у них есть высокоуровневый фреймворк Vision и низкоуровневый, но более гибкий CoreML. На стороне Android поддержка машинного обучения в основном обеспечивается Tensorflow Lite. Кроме того, как упоминалось ранее, Google недавно добавила новый фреймворк ML Kit.
ML Kit имеет некоторые преимущества. Во-первых, он мультиплатформенный, поддерживает как Android, так и iOS. Он также имеет несколько различных уровней абстракции (высокоуровневый и низкоуровневый API). Кроме того, он предлагает различные модели развертывания и выполнения, позволяющие выполнять обработку на устройстве и в облаке. Наконец, он также может оптимизировать и обновлять модели на устройстве в режиме реального времени.
выполнить
извлечь изображение из потока
Первое, что нам нужно сделать, это интегрировать ML Kit в наше приложение WebRTC, чтобы получить доступ к этим изображениям. Нам нужно получить локальные или удаленные кадры (в зависимости от нашего варианта использования) и преобразовать их в правильный формат, поддерживаемый ML Kit.
Направление изображения кадра вверх в эксперименте по обнаружению лиц с помощью ML Kit.
В iOS ML Kit поддерживает кадры, передаваемые в формате UIImage или CMSampleBufferRef. ПРИМЕЧАНИЕ. Убедитесь, что изображение повернуто так, что рамка изображения находится «вверху». В зависимости от используемого API WebRTC способ получения изображения может быть разным. Если вы используете официальный фреймворк WebRTC для iOS, вы можете подключить новый рендерер к локальному или удаленному RTCVideoTrack, чтобы получать видеокадры как экземпляры RTCVideoFrame. Получив доступ к буферу YUV, вы можете легко преобразовать его в UIImage.
Если вы используете API на такой платформе, как TokBox, то вы будете использовать специальный драйвер для доступа к необработанным локальным кадрам, а затем передавать их в WebRT и/или удаленные кадры после того, как они будут получены пользователем. Эти кадры будут получены в виде буферов CVPixelBuffer или YUV, которые также легко конвертируются в UIImage.
API распознавания лиц
Получив кадр UIImage, вы можете передать его детектору лиц ML Kit. Как мы увидим позже, в большинстве случаев вы будете передавать только процент кадров, чтобы уменьшить влияние на использование ЦП. Вот фрагмент кода, показывающий, как легко получить доступ к API ML Kit:
порог вероятности
Мы обнаружили, что использование 0,5 в качестве порога вероятности улыбки дает хорошие результаты для наших нужд. Вы можете взглянуть на полный код в примере приложения, которое мы создали для определения вероятности улыбки, используя видео, снятое с помощью OpenTok, и приведенный выше код.
оценка эффективности
Приложения RTC часто требуют больших ресурсов. К этому добавляется машинное обучение, поэтому потребление ресурсов является серьезной проблемой. Для машинного обучения часто приходится идти на компромисс между точностью и использованием ресурсов. В этом разделе мы оцениваем эти воздействия с разных точек зрения, предоставляя некоторые ожидания и рекомендации для принятия решения о том, как внедрить эти функции в приложение.
Примечание. Все результаты следующих тестов были получены с использованием бюджетного устройства iPhone 5 SE.
задерживать
Первый важный параметр, который следует учитывать, — это время, необходимое для выполнения обнаружения.
ML Kit имеет ряд настроек:
-
Режим обнаружения: ML Kit предлагает два варианта: Fast vs. Accurate (быстро vs. точно).
-
Маркировка: определить глаза, рот, нос и уши. Включение этой функции замедляет обнаружение, но мы получаем гораздо лучшие результаты.
-
Классификация: Нам нужна эта функция для обнаружения улыбки
-
Отслеживание лица: отслеживайте одно и то же лицо в разных кадрах. Включите его, чтобы ускорить обнаружение
Время обнаружения в миллисекундах (мс)
Разница между точным режимом и быстрым режимом не так уж велика (если только отслеживание не отключено). Точность, которую мы получаем в быстром режиме, очень хорошая, поэтому мы решили использовать следующую комбинацию: быстрый режим + маркер + отслеживание.
использование процессора
Далее мы оценим загрузку процессора. Мы делаем это со скоростью 25 кадров в секунду. В нашем варианте использования (и многих других) нам не обязательно обрабатывать каждый кадр. Экономия ресурсов процессора/батареи была для нас важнее, чем обнаружение каждой улыбки, поэтому мы провели несколько тестов, изменяя количество кадров в секунду, которые мы передавали в ML Kit для распознавания.
Как вы можете видеть на изображении ниже, дополнительное использование ЦП сверх базового уровня по умолчанию (захвачено только с камеры без какой-либо обработки ML) почти такое же, как количество кадров в секунду, передаваемых в API обнаружения лица и улыбки ML Kit, растет линейно.
Загрузка ЦП обработкой ML Kit с разной частотой кадров
В наших экспериментах загрузка ЦП была разумной при обработке кадра каждые 1 или 2 секунды.
размер приложения
Теперь давайте рассмотрим размер приложения. Наше приложение, как и любое приложение, нужно скачать и загрузить. Маленький всегда лучше. Размер приложения «просто» увеличивается с ML Suite примерно на 15 МБ. Размер примера приложения варьируется от 46,8 МБ только с OpenTok до 61,5 МБ с добавленным ML Kit.
Точность
Наконец, мы говорим о точности. Первое, что мы заметили, это то, насколько точным было распознавание лиц, даже когда ML Kit был настроен в быстром режиме. Наше тестирование проводилось в типичной мобильной/настольной системе видеоконференцсвязи, когда человек смотрел в камеру, и ничто не блокировало ее. В других случаях обнаружение более ненадежно и не очень полезно. ML Kit также поддерживает обнаружение нескольких лиц на изображении, но мы не проводили много испытаний, так как это редко используется в нашем приложении.
В наших тестах решения алгоритма всегда были очень близки к тому, что мог бы сказать человек (по крайней мере, на наш взгляд). Вы можете посмотреть видео ниже для справки или запустить пример приложения самостоятельно и посмотреть результаты.
в заключении
Несмотря на то, что этот вариант использования очень прост, он дает нам возможность оценить новые многообещающие фреймворки ML Kit. Это показывает нам ценность и простоту добавления новых возможностей компьютерного зрения в приложения. С нашей точки зрения, два самых интересных результата этой оценки: во-первых, точность этих моделей на удивление высока, и во-вторых, неспособность работать, как ожидается, в типичном мобильном устройстве сегодня при полной частоте кадров при запуске этих алгоритмов.
Также важно отметить, что некоторые из этих случаев использования обнаружения лиц могут быть решены с помощью более простых алгоритмов обработки изображений, а не с применением методов ML. В связи с этим некоторые API-интерфейсы, такие как Core Image от Apple, могут предложить лучший компромисс между ресурсами и точностью — по крайней мере, для распознавания лиц на платформе iOS.
Однако традиционные методы обработки изображений ограничены несколькими упрощенными сценариями для этих алгоритмических конструкций. Алгоритмы машинного обучения можно масштабировать и переобучать. Например, ML также может быть полезно использовать для определения других характеристик нестандартных людей, таких как пол, возраст и т. д. Этот уровень анализа выходит за рамки возможностей традиционных алгоритмов анализа изображений.
Следующий шаг
С технической точки зрения следующим шагом в этой оценке будет использование пользовательских моделей (возможно, с использованием CoreML) для реализации более сложных вариантов использования. Мы имеем в виду реконструкцию изображения на основе генеративно-состязательных сетей для передачи видео в неидеальных сетевых условиях. Это может быть совершенно новый способ улучшить качество видео.
Набор лекторов на LiveVideoStackCon 2018
LiveVideoStackCon 2018 — комплексная технологическая конференция в области аудио- и видеотехнологий, которая в этом году прошла в Пекине с 19 по 20 октября. Всего на конференции будет рассмотрено 18 специальных тем, ожидается приглашение более 80 технических экспертов. Если вы работаете в определенной области, вы можете подать заявку на участие в качестве лектора на LiveVideoStackCon 2018, чтобы ваш опыт мог помочь большему количеству людей, вы можете пройтиspeaker@livevideostack.comОтправьте информацию о речи. Чтобы узнать подробности о конференции, нажмите【читать оригинал] Посетите LiveVideoStackCon Официальный сайт 2018 года, зарегистрируйтесь сейчас, чтобы получить скидку 30%.