Skip to content

Imperfect but Glorious Oppressive Robot. Sleep detection and facial expression recognition.

License

Notifications You must be signed in to change notification settings

OlgaKrylova/I.G.O.R

Repository files navigation

I.G.O.R.

Imperfect but Glorious Oppressive Robot bash

Система удаленного контроля и анализа поведения сотрудника на рабочем месте. Включает детекцию сна, детекцию эмоций, инструменты обратной связи, сбора статистики и визуализации. Это проект @ShakalTabaqui, @VAapero1, @OlgaKrylova, @datascientist73 в Elbrus coding bootcamp. Видеодемонстрация лежит тут.

Мы использовали библиотеку MediaPipe для детекции лица, позы человека и получения координат точек на лице и теле. На основе информациии о точках мы считали расстояния и углы на лице и теле для обучения классификаторов. Классификаторов всего три:спящего лица, спящей позы и эмоций. Все они работают на CatBoost. Классификатор спящей позы сам по себе не очень информативен: MediaPipe при построении сетки позы определяет только середину глаза одной точкой, поэтому непонятно открыты глаза или нет. Мы использовали его в случаях, когда человек находится в сложной позе и MediaPipe не строит сетку по лицу. Кроме того, мы дополнили его детектором статичности позы (что-то вроде MAE в течение определенного времени). Теперь если человек в странной позе и долго не шевелится - I.G.O.R. считает, что он спит.

Для классификации эмоций точки выбирали с использованием Facial action coding system (FACS) (WIKI). Слева - точки которые мы получаем после детекции Mediapipe, на двух других картинках - расстояния и углы, которые мы использовали для классификации эмоций:

bash bash bash

Для детекции сна по лицу использовали длину и высоту обоих глаз а также также разницу координат между глазами, щеками и губами. Для детекции сна по позе использовали расстояния от плеч до глаз, губ и щек, и покоординатные разницы между частью этих точек. Расстояния нормированы на размеры лица. Схема для лица лежит в папке images. Часть идей по отбору точек для классификации взята отсюда. Вот немного картинок, которые мы получали в процессе обучения моделей:

emo_pic mesh_pic

Музыку для будильника генерировали с помощью нейросети Jukebox от OpenAI, куда на вход в качестве праймера подавалась запись акустической гитары, а на выходе мы получали полноценный трек. Выбор пал на Lo-Fi звучание по тем причинам, что исследования нейроанатомов в области сна говорят, что человеку желательно просыпаться под спокойное музыкальное сопровождение, в котором присутствуют низкочастотные звуки, т.к они правильно воздействуют на ЦНС при пробуждении.

Инструкция по запуску

1. Запустить терминал и прописать команду
pip install -r 'requirements.txt'

Эта команда установит нужные для работы библиотеки

2. Открыть файл Streamlit.py, в терминале прописать команду
streamlit run streamlit.py

Эта команда запустит приложение

Описание дополнительных файлов

  • emotions_classifier.ipynb - обучение классификатора эмоций

  • camera_emotions.py - запускается также через терминал; в реальном времени строит на лице сетку и классифицирует эмоции (как на изображениях выше)

TODO

  • обучение классификатора сна

  • изменить цифры в статистике

  • несколько лиц

About

Imperfect but Glorious Oppressive Robot. Sleep detection and facial expression recognition.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published