От идеи до смеха в коридоре
Ко Дню программиста в университете нужно было сделать интерактивный стенд — что-то весёлое, но с технологическим смыслом.
Квиз или чат-бот казались скучными, хотелось чего-то с человеческим лицом — буквально.
Я вспомнил о библиотеках, которые умеют распознавать эмоции по видео, и подумал: а что, если превратить это в игру?
Так появилась идея SmileFace — мини-игры, где человек перед камерой старается изобразить смайлик, показанный на экране, а система оценивает, насколько хорошо получилось.
На всё даётся минута и пять эмоций — радость, удивление, злость, страх и грусть. Экран показывает смайлик-цель и «градусник» совпадения. За точные эмоции начисляются очки, а в конце — финальный счёт.
Простая механика, но эффект оказался мгновенным: через десять минут возле стенда уже стояла очередь и слышался смех.
Когда играешь лицом
Мы запустили SmileFace сразу на двух компьютерах, чтобы можно было играть вдвоём. Оба видели одинаковый экран — с камерой, смайликами и счётчиком эмоций, так что участники могли соревноваться в реальном времени, кто точнее покажет эмоции.

Слева отображалось видео с камеры — игрок видит себя и следит за мимикой. Справа — смайлик, который нужно повторить, и «градусник», показывающий, насколько выражение совпадает с целевым. Стоило улыбнуться — температура начинала расти. Если эмоция угадывалась достаточно точно, звучал короткий сигнал и появлялся новый смайлик.
За минуту можно было успеть пройти серию эмоций: от радости до гнева, от удивления до грусти. В конце на экране появлялась галерея выражений лица — самый смешной момент игры, где участники рассматривали свои «эмоции в динамике».
В коридоре быстро собралась толпа: кто-то пробовал играть всерьёз, кто-то — с гримасами, а вокруг было много смеха, криков «ну это точно радость!» и попыток побить рекорд соседа.
Что скрывается за смайликом
Под капотом у SmileFace — минимум сложностей и максимум веселья. Браузер через камеру снимает видео и каждые пару сотен миллисекунд отправляет кадры на сервер.
Сервер написан на Python с помощью FastAPI и общается с браузером по WebSocket — так игра реагирует в реальном времени, без перезагрузок и задержек.
Главная «магия» происходит в библиотеке FER (Face Emotion Recognition). Она анализирует лицо и возвращает набор вероятностей вроде:
радость — 0.92, удивление — 0.05, злость — 0.03
Из этих чисел формируется «градусник» эмоции на экране — чем ближе выражение к целевому, тем выше столбик. Если совпадение достаточно сильное, игрок слышит звуковой сигнал — и на экране тут же появляется новый смайлик.
Вся логика умещается в несколько десятков строк кода, но эффект создаёт ощущение, будто компьютер в самом деле понимает человека.
На деле это всего лишь OpenCV, немного Python, да капля терпения — но вместе они превращаются в живой интерактив, который реагирует на улыбку.
Почему это сработало
Главный секрет успеха оказался прост: эмоции — универсальны. Не нужно объяснять правила, не нужно вводных инструкций. Улыбнись — и игра началась.
А ещё сама идея соревноваться с нейросетью вызывает улыбку. Даже когда она ошибается — это не раздражает, а наоборот, делает процесс забавнее.
Например, FER часто путал удивление со страхом, а серьёзное лицо с прищуром мог принять за злость. Поэтому победа зависела не только от модели, но и от артистизма игрока: кто убедительнее сыграет эмоцию, тот и набирает больше очков. Получился редкий случай, когда технология и человек не конкурируют, а играют вместе.
Маленькие сложности
Без неожиданностей, конечно, не обошлось.
Освещение оказалось критичным — стоило появиться тени, и «радость» превращалась в «грусть».
Очки сбивали модель с толку: отражения и бликующие линзы мешали детектору видеть глаза.
При слабом интернете видео начинало лагать, и игроку казалось, что «градусник» реагирует с задержкой.
Но эти мелочи только добавляли реализма. Нейросеть ошибалась по-человечески — и от этого казалась ближе. Когда игрок смеялся, а игра в ответ «путала» эмоции, создавалось ощущение диалога — как будто ИИ тоже немножко смущается.
Когда ИИ становится игрой
SmileFace начинался как университетский стенд к Дню программиста, но быстро превратился в способ показать, что ИИ может быть весёлым и человечным.
Он не просто распознаёт эмоции — он играет вместе с человеком, ошибается, «удивляется» и тем самым вызывает ответную реакцию.
Было интересно собрать такой стенд и увидеть, как студенты смеются, спорят с нейросетью и стараются «переиграть» её лицом.
Теперь делимся проектом — вдруг кому-то пригодится: можно доработать идею, улучшить модель или просто поставить у себя как готовый интерактив.