MediaPipe: тело, руки, лицо
Открытый плагин Torin Blankensmith и Dom Scott: модели MediaPipe в Chromium внутри TouchDesigner. Как подать картинку через виртуальную камеру, что приходит на выходе и как не дать точкам дрожать.
MediaPipe TouchDesigner — открытый плагин под MIT от Torin Blankensmith и Dom Scott: модели Google MediaPipe внутри TouchDesigner, на Windows и macOS, на видеокарте, без установки. Продукт не Derivative, но уроки по нему Derivative публикует у себя. Для интерактива — первая попытка.
| Задача | Что даёт |
|---|---|
| Pose | Точки тела |
| Hands | Точки кистей и жесты |
| Face Landmarks | Плотная сетка лица |
| Face Detection | Лица, в том числе несколько |
| Object Detection | Объекты |
| Image Segmentation | Маска фигуры, несколько моделей |
| Image Classification | Что в кадре |
Внутри — Web Render TOP, то есть Chromium: страница гоняет модели через WebAssembly и шлёт результат JSON по WebSocket. Модели встроены в компонент, интернет не нужен. Отсюда две особенности. Вход — системная веб-камера, а картинку из сети подают виртуальной камерой: Spout и SpoutCam на Windows, Syphon через OBS на macOS. И вход не больше 720p — трекингу хватает.
release.zip берут в Releases репозитория torinmb/mediapipe-touchdesigner,
MediaPipe TouchDesigner.toe в нём — готовый пример. В свой проект
переносят MediaPipe.tox из toxes и нужные разборщики для лица, рук,
позы, объектов, сегментации, классификации. При импорте — Enable External
.tox, иначе файл проекта раздувается. Камеру выбирают, лишние модели
выключают: каждая отнимает время.
На выходе TOP с видео и разметкой, DAT с результатами задач и CHOP
служебных цифр — detectTime, totalInToOutDelay и isRealTime, успевает
ли плагин.
Точки
Координаты нормализованы по кадру, дальше обычная цепочка:
mediapipe ──▶ select (нужные точки) ──▶ math (в координаты сцены)
──▶ lag / filter ──▶ null ──▶ инстансинг / параметры
Сглаживать обязательно: сырые точки дрожат даже на неподвижном человеке, Сглаживание. Мёртвая зона — иначе пустой зал шевелится. И заранее решить, что делает сцена, когда человека нет: замирает, уходит в покой или ждёт.
| Что | Как |
|---|---|
| Рука ведёт параметр | Кисть → Math CHOP → параметр, с фильтром |
| «Щипок» — кнопка | Большой и указательный ближе порога → Trigger CHOP |
| Частицы за человеком | Точки скелета → источники, Частицы |
| Силуэт — маска | Segmentation → композит |
| Лицо крутит объект | Точки лица → поворот геометрии |
Один человек — надёжно, толпа — нет: номер человека между кадрами может
смениться. Контровой, дым и строб ломают трекинг, зоне нужен свой ровный
свет. Задержка плагина ложится поверх задержки камеры и виртуальной
камеры — totalInToOutDelay в помощь.
Работает на разработчике за столом днём — разваливается в тёмном зале на человеке в чёрной куртке. Проверяют в условиях площадки до монтажа.
Скелет поверх видео радует разработчика, зрителя радует то, что происходит от поднятой руки, Зачем нейросети. Зона целиком — Интерактив с камерой.
Нашли в статье ошибку, устаревшее или непонятное место?