Бьюти-фильтры, коррекция взгляда и AR-эффекты – конвейер MediaPipe

Автор: Николай СапуновОбновлено: август 202618 мин чтения
Содержание статьи +

Кратко

Бьюти-фильтры, коррекция взгляда и эффекты дополненной реальности кажутся разными функциями, но работают на одной основе – карте лица, построенной в реальном времени по нескольким сотням отслеживаемых точек. Чаще всего её создаёт бесплатный MediaPipe Face Landmarker от Google. В этой статье мы разбираем эту общую карту, а затем показываем, как каждый эффект её использует: бьюти-фильтр сглаживает кожу и сдвигает точки лица, коррекция взгляда перерисовывает глаза так, чтобы они смотрели в камеру, а AR-эффект «приклеивает» 3D-объект к лицу – и где все три эффекта физически подключаются внутри WebRTC-звонка. Мы анализируем ключевой показатель производительности, от которого зависит, можно ли вообще использовать эти технологии (бюджет времени на кадр), выбор между «строить самому» и «покупать готовое» – MediaPipe против коммерческих SDK вроде Banuba, Snap Camera Kit и DeepAR, а также дилемму при выборе решения для коррекции взгляда: NVIDIA Maxine или встроенная функция Apple. В конце – регуляторная граница, которую нельзя переступать: по EU AI Act украшение лица разрешено, а распознавание его выражений для определения эмоций – уже под строгим контролем, а на работе и в школах это запрещено.

Почему это важно

Если ваш продукт показывает лицо человека на камере – видеоконференция, телемедицина, виртуальный класс, дейтинг-приложение, live-шопинг – пользователи теперь ждут тех же эффектов, что есть в Snapchat и TikTok: выгодного фильтра, глаз, смотрящих в камеру, виртуальной шляпы или очков, которые можно примерить. Эти функции кажутся «вишенкой на торте», но именно они решают, включит ли человек камеру вообще, – а это разница между живым звонком и сеткой чёрных квадратов. Эта статья для продакт-менеджера, основателя или техлида, которому нужно решить, строить ли эти эффекты, покупать или пропустить, и который должен говорить с инженерами о стоимости, производительности и юридическом риске, не теряясь в деталях. К концу вы поймёте единственную технологию под всеми тремя эффектами, где она работает в реальном звонке, во что обходится в миллисекундах и лицензионных платежах, и какая конкретно норма превращает безобидный бьюти-фильтр в проблему комплаенса в момент, когда он пытается считать настроение. О смежной задаче – замене фона за лицом – читайте в статьях про размытие фона и виртуальные фоны; эта статья – об эффектах на самом лице.

Одна карта, три задачи

Начнём с ключевой идеи, которая объединяет всё остальное, потому что она упрощает всё остальное. Бьюти-фильтр, корректор взгляда и эффект виртуальной шляпы – это не три независимые технологии. Каждый из них сначала отвечает на один и тот же вопрос – где именно находится это лицо и где сейчас каждая его часть – и только потом выполняет свою специфическую задачу. Создайте или приобретите качественное решение для этого общего вопроса, и все три эффекта станут вариациями одной темы, а не тремя отдельными проектами.

Этот ответ – набор отслеживаемых точек, которые называются ориентирами. Лицевой ориентир – это одна помеченная точка на лице (внутренний угол левого глаза, кончик носа, точка на челюсти), которую модель находит и отслеживает в каждом кадре видео. Соедините эти точки – и получите меш: тонкую сетку, натянутую на лицо, которая гнётся и поворачивается вслед за движениями настоящего лица. Этот меш и есть общая карта. Думайте о нём как о каркасе, который аниматор создаёт персонажу до добавления кожи: как только каркас следует за лицом, всё, что к нему прикреплено, движется вместе с ним.

Каждый эффект интерпретирует одну и ту же карту по-своему. Бьюти-фильтр по мешу определяет, какие пиксели – это кожа (их сглаживают), а какие точки образуют челюсть или нос (их сдвигают). Эффект коррекции взгляда по карте находит небольшой прямоугольник вокруг глаз и перерисовывает только этот участок. AR-эффект, используя 3D-форму карты и её ориентацию, размещает виртуальный объект так, чтобы он естественно сидел на лице под правильным углом. Одна карта – три задачи.

Рисунок 1. Общий фундамент: одна карта ориентиров лица в реальном времени используется для бьюти-фильтров, коррекции взгляда и AR-эффектов.

Сама карта: MediaPipe Face Landmarker

Самый распространённый способ бесплатно создать такую карту – инструмент от Google под названием MediaPipe Face Landmarker. MediaPipe – это открытый набор готовых решений для машинного обучения, работающих прямо на устройстве и предназначенных для обработки видео; Face Landmarker – один из таких инструментов, который распознаёт и отслеживает лица. Он работает на смартфонах, в браузерах и на серверах и является стандартным выбором для команд, создающих эффекты на лице без оплаты лицензии вендору.

Face Landmarker выдаёт из каждого кадра три компонента, и понимание их позволяет точно определить, с какими данными работают ваши эффекты. Первый – меш: оценка положения 478 трёхмерных точек на лице. На этом числе стоит остановиться: 468 из них охватывают поверхность лица, а оставшиеся 10 расположены на глазах – по пять на каждый, отслеживая цветное кольцо, называемое радужкой (iris), от которого зависят эффекты, связанные со взглядом. Исходный меш из 468 точек появился в статье Google Research 2019 года, в которой было показано, что небольшая нейросеть способна в реальном времени на телефоне восстанавливать такую плотную модель лица; точки радужки были добавлены позже, доведя общее количество до 478.

Второй выход – набор из 52 коэффициентов blendshape. Blendshape – это значение от 0 до 1, показывающее степень проявления конкретного выражения: насколько открыт рот, насколько поднята левая бровь, насколько улыбается рот. Пятьдесят два таких параметра вместе описывают текущее выражение лица как набор «ручек». Именно этот выход управляет мультяшным аватаром, повторяющим ваше лицо, и, как мы увидим, именно он привлекает внимание регулятора.

Третий выход – матрица преобразования: компактный блок чисел, описывающий, как лицо расположено в пространстве – повёрнуто влево, наклонено вверх, склонилось к камере или от неё. AR-эффекту она нужна, чтобы правильно разместить виртуальный объект. Вместе эти три выхода – меш из 478 точек, 52 «ручки» выражения и матрица положения – составляют всё, что используют три эффекта.

Рисунок 2. Внутри MediaPipe Face Landmarker: детектор находит лицо, модель меша выдаёт 478 ориентиров, ещё два выхода дают коэффициенты выражения и положение головы.

Как на самом деле работает бьюти-фильтр

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

Сглаживание кожи – главный эффект, и для его достижения используется специальный инструмент под названием билатеральный фильтр (bilateral filter). Обычное размытие сглаживает всё подряд – оно стёрло бы ресницы и превратило лицо в бесформенную массу. Билатеральный фильтр – это «умное» размытие: он усредняет пиксель только с соседями похожей яркости, поэтому сглаживает ровные участки щеки, оставляя резкие границы – линию ресниц, контур губ – нетронутыми. Маска подсказывает фильтру, где находится кожа, поэтому он сглаживает щёки и лоб, но обходит глаза, рот и волосы. В результате детали сохраняются там, где глаз их ожидает, а смягчаются только плоские участки кожи.

Изменение формы – вторая операция, и это геометрия. Поскольку фильтр держит лицо как меш точек, он может немного сдвинуть выбранные точки, растягивая изображение вслед за ними. Чтобы сузить челюсть, он тянет точки линии челюсти внутрь; чтобы увеличить глаза – толкает точки вокруг каждого глаза наружу. Сдвиги небольшие, и именно в этой малости – всё мастерство. Допустим, лицо шириной 400 пикселей, и фильтр сужает челюсть на три процента этой ширины. Математика в одну строку:

сдвиг челюсти = 3% × 400 px
сдвиг челюсти = 0.03 × 400
сдвиг челюсти = 12 px внутрь с каждой стороны

Двенадцати пикселей достаточно, чтобы прочитать «уже», но при этом человек всё ещё остаётся узнаваемым. Увеличьте масштаб до тридцати процентов – и вы получите тот самый «поплывший», неестественный вид, на который часто жалуются. Хороший бьюти-фильтр работает именно в этой узкой полосе, и именно она превращает «деликатность» из вопроса вкуса в инженерную задачу.

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

Коррекция взгляда: глаза, смотрящие в камеру

Коррекция взгляда решает проблему, присущую каждому видеозвонку: камера находится над экраном, а вы смотрите на лицо собеседника на экране, а не в объектив. Поэтому для партнёра по разговору вы всегда выглядите так, будто смотрите чуть вниз. За долгое общение это незаметно подтачивает ощущение контакта. Коррекция взгляда исправляет это, перерисовывая ваши глаза так, чтобы они казались направленными в камеру, пока вы продолжаете смотреть на экран.

Это проявляется в продукте двумя способами, и разница важна для того, что вы создаёте. Первый – облачная или серверная функция, и самый наглядный пример – NVIDIA Maxine Eye Contact. Она работает так: сначала с помощью отслеживания лица выделяются ориентиры глаз и угол головы, после чего вырезается небольшой прямоугольник вокруг глаз – так называемый «глазной патч» (eye patch). Затем нейросеть определяет, куда на самом деле направлены ваши глаза, генерирует версию, в которой вы смотрите в камеру, и встраивает этот патч обратно в кадр.

Приятная деталь подчёркивает продуманность решения: если взгляд уходит слишком далеко, эффект плавно возвращается к естественному положению глаз, а не «прыгает» – поэтому он никогда не выглядит как глюк. Maxine работает на видеокартах NVIDIA, то есть её можно либо установить на устройство пользователя с поддержкой NVIDIA, либо запустить на собственных серверах. Это снова ставит перед вами тот же выбор «строить или покупать», который мы разбираем в статье про Krisp, Maxine и Dolby.

Второй способ – телефон делает это за вас. На iPhone функция Apple под названием Eye Contact в FaceTime использует фронтальную камеру TrueDepth – тот же датчик глубины, что и в Face ID, – чтобы построить 3D-карту лица, определить положение глаз и скорректировать взгляд в реальном времени. Эта функция уже много лет включена по умолчанию на новых iPhone. Проблема для разработчика продукта в том, что она работает только внутри FaceTime и только на устройствах Apple; вызвать её из стороннего веб-приложения невозможно. Поэтому практическое правило простое: если ваши пользователи находятся в вебе или используют разные устройства, и вам нужна коррекция взгляда везде – применяйте модель вроде Maxine; если же они общаются через FaceTime на новом iPhone – Apple уже всё сделала, и вам ничего делать не нужно.

AR-Эффекты: Привязка объектов к лицу

Третий эффект – это то, что люди обычно имеют в виду под «фильтрами» в игривом смысле: виртуальные очки, шляпа, собачьи уши, примерка оттенка помады. В рамках стандартов W3C, управляющих веб-медиа, у всей этой категории есть очаровательное официальное название – кейс «Funny Hats» («смешные шляпы»). Инженерная суть заключается в привязке: нужно удержать виртуальный объект «приклеенным» к лицу, пока оно движется и поворачивается.

Здесь 3D-форма меша и матрица преобразования играют ключевую роль. Чтобы надеть виртуальные очки, эффект определяет точки-ориентиры на переносице и висках, считывает угол поворота головы из матрицы преобразования и отображает модель очков в этой позиции и под нужным наклоном. Когда вы поворачиваете голову, матрица обновляется, и очки следуют за вами – они привязаны к карте, а не нарисованы в фиксированной точке экрана. Blendshape добавляют реалистичности: если эффект заставляет рот аватара открываться, когда открывается ваш, он считывает коэффициент blendshape «рот открыт» и передаёт его рту аватара.

Отрисовка объекта – это графическая задача, и в вебе она реализуется с помощью технологии WebGPU – браузерного стандарта, который к 2026 году получил широкую поддержку в Chrome, Safari и Firefox. Эта технология позволяет веб-странице напрямую использовать видеокарту компьютера. Карта лица определяет где и под каким углом находится объект; WebGPU отображает его достаточно быстро, чтобы синхронизироваться с живым видео. Та же механика лежит в основе функций «виртуальной примерки» (virtual try-on) в e-commerce косметики и оптики – это AR-эффекты на лице в коммерческой обёртке.

Где всё это работает в WebRTC-звонке

Решить, какой эффект вы хотите – лёгкая часть. Встроить его в живой браузерный звонок – та, на которой команды спотыкаются. И сводится она к одной современной возможности браузера. WebRTC – технология, позволяющая браузерам напрямую обмениваться аудио и видео, – исторически передавала изображение с камеры напрямую в сеть, не оставляя вашему коду возможности повлиять на картинку. Решение – стандарт под названием Insertable Streams, описанный в документе W3C «MediaStreamTrack Insertable Media Processing using Streams».

У схемы три части, и понять её стоит даже на высоком уровне, потому что она определяет стоимость и качество. Часть под названием MediaStreamTrackProcessor берёт поток с камеры и выдаёт его как последовательность отдельных кадров, которые ваш код может обрабатывать – каждый из них является объектом VideoFrame, стандартным контейнером для одного изображения. Ваш код обрабатывает каждый кадр: запускает на нём Face Landmarker, затем сглаживает, перерисовывает или накладывает свой объект. Вторая часть, VideoTrackGenerator, берёт готовые кадры и снова объединяет их в обычный видеотрек, который WebRTC может передать. Камера поступает в виде кадров, ваш эффект применяется, кадры возвращаются обратно – и на удалённой стороне видят именно эффект, а не исходный видеопоток.

Одна из особенностей стандарта – тихое правило, определяющее, будет ли ваше приложение отзывчивым: обработка должна выполняться в воркере (worker) – фоновом потоке, отдельном от того, что отвечает за отображение кнопок и меню. Выполнение тяжёлых операций по обработке каждого кадра в главном потоке «замораживает» интерфейс, тогда как выполнение той же работы в воркере сохраняет приложение отзывчивым. Именно поэтому собственные примеры стандарта реализуют обработку именно в воркере. Более широкий набор таких браузерных ИИ-интерфейсов – Insertable Streams, Encoded Transform, WebGPU – описан в нашей статье про ИИ-интеграцию в WebRTC; здесь же речь идёт о слоте, в котором размещается ваш эффект на лице.

Рисунок 3. Где эффект на лице подключается в WebRTC: кадры вытягиваются через MediaStreamTrackProcessor, преобразуются в воркере и собираются обратно в отправляемый трек через VideoTrackGenerator.

Единственное число, решающее всё: бюджет на кадр

Каждый эффект на лице живёт или умирает на одном куске арифметики, и эту арифметику осилит даже нетехнический читатель. Живое видео идёт с частотой кадров – числом картинок в секунду, обычно пишут fps. На распространённых 30 кадрах в секунду каждый кадр на экране занимает фиксированный отрезок времени, и ваш эффект должен успеть выполнить всю работу за это время, иначе кадры накапливаются и видео начинает подёргиваться. Отрезок – в одну строку:

время на кадр = 1000 мс ÷ 30 fps
время на кадр = 33.3 мс

У вас всего около 33 миллисекунд – треть десятой доли секунды – чтобы прочитать кадр, распознать лицо, применить эффект и вернуть его обратно. Всё, что вы добавляете, отнимает время из этого ограниченного бюджета. Поиск ключевых точек – самая затратная операция, и здесь решающую роль играет выбор оборудования: если запустить Face Landmarker на центральном процессоре, браузер обычно справляется лишь с 10–15 кадрами в секунду, что полностью исчерпывает бюджет. Перенесите обработку на видеокарту – и система спокойно выдаёт 60 кадров в секунду с запасом. Исследование 2019 года, лежащее в основе технологии маскировки лица, сообщало о сотнях кадров в секунду на мобильных графических чипах для базовой модели, так что узким местом редко бывает сама модель; узким местом становится возможность использовать видеокарту.

Вот почему деталь про WebGPU выше – не сноска. Вычисление математики лица на видеокарте позволяет уложиться в бюджет в 33 миллисекунды с запасом на отрисовку и кодирование. Команда, запускающая landmarker на центральном процессоре «просто потому что проще», вызывает рывки в звонке; та же команда на видеокарте работает плавно. Полную картину того, как тратится каждая миллисекунда живого звонка, смотрите в статье про бюджет задержки до 100 миллисекунд – эффекты на лице – это одна из статей расходов в этом бюджете, и довольно прожорливая.

Рисунок 4. Бюджет в 33 миллисекунды при 30 fps: поиск лица доминирует в стоимости, и перенос его на видеокарту – это то, что удерживает весь эффект внутри дедлайна.

Строить на MediaPipe или купить SDK?

Когда вы знаете, что эффекты используют одну карту, ключевой вопрос – кто создаёт эту карту и накладывает на неё эффекты: вы с помощью бесплатных инструментов или вендор за деньги. Оба варианта допустимы; правильный выбор зависит от степени кастомизации ваших эффектов и сроков выхода.

Строить на MediaPipe – значит получить карту ориентиров бесплатно и написать логику бьюти, взгляда или AR самому. Вы владеете результатом, не платите за каждого пользователя и держите всё видео на устройстве пользователя – это реальное преимущество приватности для телемедицины и подобных областей. Цена – инженерное время и отсутствие библиотеки контента: MediaPipe даёт карту, а не каталог готовых линз. Купить SDK у вендора вроде Banuba, Snap Camera Kit или DeepAR – значит получить карту плюс библиотеку готовых фильтров, инструмент для создания новых и кросс-платформенную поддержку в обмен на лицензионную плату и зависимость от этого вендора.

Вендоры отличаются важными деталями. Snap Camera Kit интегрирует в ваше приложение саму технологию линз Snapchat и его обширную экосистему авторов – но за это приходится платить процессом одобрения и меньшим контролем. Banuba ориентирована на быстрый коммерческий запуск с фиксированной стоимостью платформы, которая не зависит от числа пользователей. DeepAR предлагает модель оплаты по использованию, начиная с минимальных сумм. Коррекция взгляда стоит особняком: это не столько «фильтр», сколько специализированная модель – поэтому она обычно реализуется через NVIDIA Maxine или, бесплатно на устройствах Apple, встроенными возможностями самого телефона.

ВариантЧто получаетеВо что обходитсяКому подходитНа что смотреть
Строить на MediaPipe Face LandmarkerБесплатная карта из 478 точек; эффекты пишете самиИнженерное время; нет библиотеки фильтровПриватность на устройстве, кастомные эффекты, без платы за пользователяЛогику эффектов строите и поддерживаете сами
Snap Camera KitЛинзы Snapchat + редактор Lens StudioЛицензия; процесс одобренияПотребительские приложения, которым нужны проверенные вирусные линзыБарьер одобрения; меньше низкоуровневого контроля
Banuba Face AR SDKКарта + библиотека фильтров, кросс-платформаЛицензия за платформуБыстрый запуск на iOS/Android/WebСтоимость лицензии против бесплатного MediaPipe
DeepARКарта + фильтры лица/тела, веб + мобильныеОплата по использованиюНебольшие команды, начинающие с малогоОпределённость дорожной карты вендора
NVIDIA Maxine Eye ContactМодель коррекции взглядаGPU + лицензияКоррекция взгляда в вебе/на разных устройствахНужны видеокарты NVIDIA (клиент или сервер)
Apple FaceTime Eye ContactВстроенная коррекция взглядаБесплатно, встроеноНативный FaceTime на свежих iPhoneТолько FaceTime; вызвать нельзя

Читайте таблицу с учётом своих ограничений. Если эффекты кастомные и важна приватность – строить на MediaPipe – честный выбор по умолчанию. Если нужна библиотека линз для продакшена уже на следующей неделе – SDK оправдывает свою стоимость. Если требуется только коррекция взгляда – воспринимайте её как отдельное небольшое решение между Maxine и «телефон и так это делает».

Частая ошибка: обработка в главном потоке

Самый частый способ получить «сломанный» эффект на лице – не плохая модель, а запуск покадровой обработки не в том потоке. У браузера есть один главный поток, который одновременно рисует интерфейс приложения и, если вы позволите, запускает ваш эффект. Если вы свалите тяжёлое отслеживание лица и отрисовку на этот поток, у него не останется времени на перерисовку кнопок – и всё приложение начинает подёргиваться, клики тормозят, видео «дергается», хотя сама модель работает быстро.

Симптом характерный и его легко неверно истолковать. Эффект «работает» в быстром тесте на мощном ноутбуке, потом разваливается на обычной машине пользователя, и команда винит модель и идёт искать более быструю. Настоящее лекарство структурное: перенести обработку в воркер – фоновый поток, который стандарт Insertable Streams и ожидает использовать. Модели не нужно быть быстрее; работе нужно уйти с потока, который рисует экран. Команды, выучившие это однажды, больше не забывают, а те, кто это пропускает, выпускают функцию, которая хорошо смотрится в демо и проваливается в реальном мире.

Регуляторная черта, которую нельзя переходить

Есть место, где эффект на лице перестаёт быть косметической функцией и становится регулируемым – перейти его случайно – реальный риск. AI Act Европейского союза – всеобъемлющий закон ЕС об ИИ, формально Регламент (ЕС) 2024/1689 – проводит чёткую границу между изменением внешнего вида лица и считыванием его эмоций.

Украшение, коррекция взгляда и виртуальная шляпа на лице не считаются рискованным ИИ – они лишь меняют внешний вид и не делают выводов о человеке. Но стоит системе использовать 52 коэффициента blendshape – «ручки», измеряющие, насколько лицо улыбается, хмурится или поднимает бровь, – чтобы определить эмоциональное состояние, как она сразу попадает под определение системы распознавания эмоций по закону, а эта категория регулируется жёстко. Применение таких систем на рабочих местах и в школах прямо запрещено с февраля 2025 года, за исключением узкого круга случаев. Даже там, где использование разрешено, с августа 2026 года всех, кто подвергается воздействию такой системы, необходимо заранее уведомить – до её запуска.

Практический вывод – это граница, на которую ориентируются при проектировании, а не повод отказываться от технологии. Анализируйте лицо, чтобы его перерисовать, – и вы остаётесь в безопасной зоне. Анализируйте лицо, чтобы оценить эмоции человека – например, вовлечённость в e-learnig-продукте или настроение на собеседовании, – и вы попадаете в самую строгую категорию по AI Act. О сопутствующих правилах детекции и распознавания лиц мы подробно писали в статье распознавание лиц под EU AI Act, где разбираем «личностную» сторону этого закона. Ничто из изложенного не является юридическим советом – это карта, по которой стоит направить своего юриста, прежде чем выпускать эффект, затрагивающий выражение лица.

Где Здесь Фора Софт

Мы создаём продукты с живым видео, где эти эффекты применяются на практике – в платформах видеоконференций, телемедицинских консультациях, онлайн-обучении, приложениях для знакомств и социальных сетей, а также в AR/VR-опытах. Мы рассматриваем бьюти-эффекты, коррекцию взгляда и AR как одну способность с тремя гранями, а не как три отдельные функции.

Паттерн, который мы используем, описан в этой статье: построить карту ориентиров один раз, выполнять покадровую обработку в воркере на видеокарте, чтобы видеосвязь оставалась плавной, и выбирать стратегию «разработать или купить» для каждого продукта. Используем бесплатный MediaPipe, когда эффекты должны быть кастомными и важна приватность, и вендорский SDK, если нужна готовая библиотека линз уже на следующей неделе.

По коррекции взгляда принимаем решение в зависимости от платформы: доверяем устройству там, где оно уже справляется, и применяем серверную модель – когда пользователи работают в вебе.

А границу распознавания эмоций проводим заранее, потому что в телемедицине и онлайн-обучении соблазн «измерить вовлечённость» – именно там полезная функция может превратиться в регулируемую.

Ключевые выводы

  • Бьюти-фильтры, коррекция взгляда и AR-эффекты работают на основе общей карты ориентиров лица.
  • MediaPipe Face Landmarker предоставляет эту карту бесплатно: 478 точек, 52 коэффициента выражения, матрица положения.
  • Бьюти-фильтр – это сглаживание кожи с сохранением границ плюс незначительное, аккуратное изменение точек лица.
  • В WebRTC эффекты подключаются через Insertable Streams и должны выполняться в воркере на видеокарте.
  • Жёсткий лимит – бюджет на кадр: около 33 мс при 30 кадрах в секунду; уложиться в него помогает именно видеокарта.
  • Согласно EU AI Act, изменение лица разрешено; распознавание эмоций регулируется, а на рабочем месте и в школах – запрещено.

Что Почитать Дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.