SmileFace. Когда нейросеть улыбается тебе в ответ. fastapi.. fastapi. opencv.. fastapi. opencv. python.. fastapi. opencv. python. компьютерное зрение.. fastapi. opencv. python. компьютерное зрение. нейросеть.. fastapi. opencv. python. компьютерное зрение. нейросеть. распознавание лиц.. fastapi. opencv. python. компьютерное зрение. нейросеть. распознавание лиц. эмоции.

Исходники открыты на GitHub: github.com/konstantinkozhin/SmileFace

От идеи до смеха в коридоре

Ко Дню программиста в университете нужно было сделать интерактивный стенд — что-то весёлое, но с технологическим смыслом.
Квиз или чат-бот казались скучными, хотелось чего-то с человеческим лицом — буквально.

Я вспомнил о библиотеках, которые умеют распознавать эмоции по видео, и подумал: а что, если превратить это в игру?

Так появилась идея SmileFace — мини-игры, где человек перед камерой старается изобразить смайлик, показанный на экране, а система оценивает, насколько хорошо получилось.

На всё даётся минута и пять эмоций — радость, удивление, злость, страх и грусть. Экран показывает смайлик-цель и «градусник» совпадения. За точные эмоции начисляются очки, а в конце — финальный счёт.

Простая механика, но эффект оказался мгновенным: через десять минут возле стенда уже стояла очередь и слышался смех.

Когда играешь лицом

Мы запустили SmileFace на двух компьютерах.На одном — основное окно игры: камера, счётчик эмоций и панель результатов. Игрок видит себя, рядом — смайлик, который нужно повторить. Внизу — «температура» совпадения, показывающая, насколько эмоция похожа на целевую.

Интерфейс веб-приложения

Интерфейс веб-приложения

Справа — экран для зрителей: счёт, текущая эмоция и прогресс. Стоило игроку улыбнуться — градусник начинал расти. Если улыбка становилась достаточно «убедительной», появлялся звуковой сигнал и игра моментально переключала эмоцию.

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

На стенде было шумно — люди смеялись, комментировали результаты, спорили с компьютером («ну это же точно радость, как ты не понял?!») и пытались побить рекорд соседей.

Что скрывается за смайликом

Под капотом у SmileFace — минимум сложностей и максимум веселья. Браузер через камеру снимает видео и каждые пару сотен миллисекунд отправляет кадры на сервер.

Сервер написан на Python с помощью FastAPI и общается с браузером по WebSocket — так игра реагирует в реальном времени, без перезагрузок и задержек.

Главная «магия» происходит в библиотеке FER (Face Emotion Recognition). Она анализирует лицо и возвращает набор вероятностей вроде:

радость — 0.92, удивление — 0.05, злость — 0.03

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

Вся логика умещается в несколько десятков строк кода, но эффект создаёт ощущение, будто компьютер в самом деле понимает человека.

На деле это всего лишь OpenCV, немного Python, да капля терпения — но вместе они превращаются в живой интерактив, который реагирует на улыбку.

Почему это сработало

Главный секрет успеха оказался прост: эмоции — универсальны. Не нужно объяснять правила, не нужно вводных инструкций. Улыбнись — и игра началась.

А ещё сама идея соревноваться с нейросетью вызывает улыбку. Даже когда она ошибается — это не раздражает, а наоборот, делает процесс забавнее.

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

Маленькие сложности

Без неожиданностей, конечно, не обошлось.

  • Освещение оказалось критичным — стоило появиться тени, и «радость» превращалась в «грусть».

  • Очки сбивали модель с толку: отражения и бликующие линзы мешали детектору видеть глаза.

  • При слабом интернете видео начинало лагать, и игроку казалось, что «градусник» реагирует с задержкой.

Но эти мелочи только добавляли реализма. Нейросеть ошибалась по-человечески — и от этого казалась ближе. Когда игрок смеялся, а игра в ответ «путала» эмоции, создавалось ощущение диалога — как будто ИИ тоже немножко смущается.

Когда ИИ становится игрой

SmileFace начинался как университетский стенд к Дню программиста, но быстро превратился в способ показать, что ИИ может быть весёлым и человечным.
Он не просто распознаёт эмоции — он играет вместе с человеком, ошибается, «удивляется» и тем самым вызывает ответную реакцию.

Было интересно собрать такой стенд и увидеть, как студенты смеются, спорят с нейросетью и стараются «переиграть» её лицом.
Теперь делимся проектом — вдруг кому-то пригодится: можно доработать идею, улучшить модель или просто поставить у себя как готовый интерактив.

Исходники открыты на GitHub: github.com/konstantinkozhin/SmileFace

Автор: konstantin_kozhin

Источник

Rambler's Top100