Imperfect but Glorious Oppressive Robot
Система удаленного контроля и анализа поведения сотрудника на рабочем месте. Включает детекцию сна, детекцию эмоций, инструменты обратной связи, сбора статистики и визуализации. Это проект @ShakalTabaqui, @VAapero1, @OlgaKrylova, @datascientist73 в Elbrus coding bootcamp. Видеодемонстрация лежит тут.
Мы использовали библиотеку MediaPipe для детекции лица, позы человека и получения координат точек на лице и теле. На основе информациии о точках мы считали расстояния и углы на лице и теле для обучения классификаторов. Классификаторов всего три:спящего лица, спящей позы и эмоций. Все они работают на CatBoost. Классификатор спящей позы сам по себе не очень информативен: MediaPipe при построении сетки позы определяет только середину глаза одной точкой, поэтому непонятно открыты глаза или нет. Мы использовали его в случаях, когда человек находится в сложной позе и MediaPipe не строит сетку по лицу. Кроме того, мы дополнили его детектором статичности позы (что-то вроде MAE в течение определенного времени). Теперь если человек в странной позе и долго не шевелится - I.G.O.R. считает, что он спит.
Для классификации эмоций точки выбирали с использованием Facial action coding system (FACS) (WIKI). Слева - точки которые мы получаем после детекции Mediapipe, на двух других картинках - расстояния и углы, которые мы использовали для классификации эмоций:Для детекции сна по лицу использовали длину и высоту обоих глаз а также также разницу координат между глазами, щеками и губами. Для детекции сна по позе использовали расстояния от плеч до глаз, губ и щек, и покоординатные разницы между частью этих точек. Расстояния нормированы на размеры лица. Схема для лица лежит в папке images. Часть идей по отбору точек для классификации взята отсюда. Вот немного картинок, которые мы получали в процессе обучения моделей:
Музыку для будильника генерировали с помощью нейросети Jukebox от OpenAI, куда на вход в качестве праймера подавалась запись акустической гитары, а на выходе мы получали полноценный трек. Выбор пал на Lo-Fi звучание по тем причинам, что исследования нейроанатомов в области сна говорят, что человеку желательно просыпаться под спокойное музыкальное сопровождение, в котором присутствуют низкочастотные звуки, т.к они правильно воздействуют на ЦНС при пробуждении.
1. Запустить терминал и прописать командуpip install -r 'requirements.txt'
Эта команда установит нужные для работы библиотеки
2. Открыть файл Streamlit.py, в терминале прописать командуstreamlit run streamlit.py
Эта команда запустит приложение
-
emotions_classifier.ipynb - обучение классификатора эмоций
-
camera_emotions.py - запускается также через терминал; в реальном времени строит на лице сетку и классифицирует эмоции (как на изображениях выше)
-
обучение классификатора сна
-
изменить цифры в статистике
-
несколько лиц