Что такое Mediapipe?

Mediapipe - это платформа с открытым исходным кодом для «создания решений машинного обучения текстового класса» от Google, которая в настоящее время находится на стадии альфа-тестирования. Он находится в открытом доступе уже год, но, вероятно, находится в разработке гораздо дольше. Ключевым «коммерческим» преимуществом Mediapipe (это бесплатно) является то, что код написан на C ++, но его можно легко развернуть на любой платформе, от веб-сборки до Android и MacOS.

Когда он впервые был выпущен, у Mediapipe было всего несколько демонстраций, но теперь их страница GitHub может похвастаться почти дюжиной различных демонстраций от постоянного отслеживания объектов, окрашивания волос AR до отслеживания позы, которое может оставить OpenPose в пыли.

MediaPipe работает быстро

При поиске вариантов отслеживания рук у нашей команды было два варианта: OpenPose и MediaPipe. Первое, что выделялось между ними, - это абсолютная разница в скорости. На старом Mac MediaPipe показывал вялые 7 кадров в секунду, в то время как OpenPose был бы счастлив иметь 7 секунд на кадр.

MediaPipe может достичь своей скорости благодаря использованию ускорения графического процессора и многопоточности. Такие методы разработки, как правило, сложны, но MediaPipe берет на себя бразды правления и делает их за вас, если вы следуете хорошей практике построения графиков. Многопоточность и ускорение графического процессора позволяют новым телефонам «убегать» с кадрами, часто со слишком высокими FPS, чтобы их можно было увидеть человеческим глазом. Хотя, не ждите, что ваша Motorola 2015 года будет на уровне. Дело в том, что машинное обучение, безусловно, на одну или десять степеней сложнее с точки зрения вычислений, чем Flappy Bird.

Mediapipe является модульным и многоразовым

Использование Mediapipe графиков, подграфов и калькуляторов означает, что работу одного проекта можно легко перенести на работу другого. Объедините это с дополнительными пакетами, и вы действительно сможете настроить параметры каждого калькулятора для разных проектов.

Mediapipe уже оснащен множеством «примеров калькуляторов», которые вы можете свободно использовать, включая мультиплатформенные рендереры, мультиплатформенный TensorFlow Lite и уже созданные нейронные сети.

Mediapipe не заботится о вашей платформе развертывания

Многоплатформенная поддержка может стать отличной задачей для небольшой группы разработчиков, и это касается поддержки Windows, Mac и Ubuntu. Тем не менее, потратив всего несколько часов (минут, если у вас есть опыт), вы можете развернуть приложение не только на настольных компьютерах, но и на мобильных устройствах. MediaPipe также может похвастаться поддержкой веб-сборки, но наша команда не смогла протестировать эту функцию. Однако MediaPipe не поддерживает Windows, поэтому примите это во внимание для настольных приложений.

MediaPipe сбивает с толку

Из того, что говорится в остальной части статьи, читатель может подумать, что Google дал мне чек, чтобы я написал это (они этого не сделали). Дело в том, что я очень впечатлен фреймворком, тем более что его можно бесплатно использовать. Однако у него, конечно, есть свои недостатки. На самом деле требуется месяц или около того постоянной работы, чтобы понять, как делать то, что вы хотите делать с MediaPipe.

MediaPipe не слишком сложен для пользователя. Это, конечно, сложно, но это под капотом. Проблема с MediaPipe - отсутствие документации. «Документация» MediaPipe - это веб-сайт, на котором подробно рассказывается о своих концепциях и очень простой пример кода. Чтобы по-настоящему понять MediaPipe, разработчик должен погрузиться в исходный код примера MediaPipe. Наличие линтера C ++ в этом сценарии является обязательным.

Честно говоря, у MediaPipe есть комментарии, объясняющие, что происходит в сценарии в верхней части многих файлов .cc. Однако, когда этого нет, и вам нужно использовать эту функцию, это будет неприятный день. Примерно через год использования время от времени наша команда выпустила несколько учебных пособий по MediaPipe в Интернете и будет выпускать больше, но такого рода материалы должны были исходить от Google. Раньше существовала страница, похожая на викию, но с тех пор она была удалена в пользу документации, размещенной на www.mediapipe.dev.

MediaPipe находится в альфа-версии

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

Это приводит к основной проблеме: поскольку MediaPipe все еще находится на ранней стадии разработки, многие основные функции могут быть изменены. На странице GitHub написано, что «мы, возможно, все еще вносим критические изменения в API и рассчитываем получить стабильные API к версии 1.0». При работе с Mediapipe мне пришлось потратить полдня на обновление нашего кода, когда внезапно изменилось имя класса вместе со всеми его методами.

Mediapipe довольно хорош

Несмотря на свои альфа-недостатки, MediaPipe в настоящее время является лучшим решением для развертывания нейронных сетей на мобильных устройствах и подходит для развертывания нейронных сетей на настольных компьютерах. Что касается настольных компьютеров, мне потребовалась бы поддержка Windows, чтобы я был в команде MediaPipe, но имейте в виду, что WebAssembly - это вариант в этом случае. Тем не менее, пользователи должны иметь в виду, что пока MediaPipe находится в альфа-версии, документация отсутствует - и ваш рабочий процесс может быть внезапно прерван из-за изменений. Некоторые могут не видеть в этом недостатка, так как меньшее количество их конкурентов могут захотеть использовать MediaPipe в его текущем состоянии, что позволит им быть первыми на рынке и иметь огромное преимущество, когда MediaPipe выйдет с версией 1.0.

Используя MediaPipe, наша команда смогла первыми выйти на рынок с SigNN, нашим переводчиком алфавита американского жестового языка (ASL). В качестве примера того, что может делать Mediapipe, вы можете узнать больше о нашем проекте на GitHub: https://github.com/AriAlavi/SigNN и загрузить наше бесплатное приложение: https://play.google.com/store /apps/details?id=com.signn.mediapipe.apps.handtrackinggpu