# FAEyeTON
проект FAEyeTON - Библиотека открытого кода для оценки функционального состояния утомления оператора на основе динамической активности взгляда и головы. Проект Код-ИИ-2022.

Проект посвящен созданию открытой библиотеки, позволяющей на основе видеоряда сцены с динамическим маркером положения взгляда оператора оценить степень утомления оператора по численным характеристикам его взгляда и движениям головы. Будет использоваться следующий набор расчетных показателей: скорость перемещения взгляда, время его фиксаций, скорость движения головы, время между последовательными движениями, а также производные функции от этих показателей. К задачам проекта относится разработка и реализация алгоритмов вычисления и обработки вышеуказанных показателей их интерпретация средствами искусственного интеллекта и поиск корреляций с функциональным состоянием утомления. Предлагается использовать гибридные методы определения состояния утомления, как основанные на установленных фактологических зависимостях, так и на авторских нейросетевых моделях. Использование таких метрик оправдано прежде всего тем, что со стороны психической сферы при хроническом утомлении и особенно переутомлении наблюдается расстройство функции внимания – снижаются его устойчивость и скорость переключения, нарушается концентрация, сужается объем внимания. Также ухудшается функционирование оперативной памяти, замедляются мыслительные процессы, страдает функция прогнозирования, предвидения ситуации. Отмечается снижение волевых усилий, нарушаются выдержка, самоконтроль. Распознать утомление и отличить его от циркадианного процесса связанного с сонливостью и засыпанием, представляется затруднительным по внешним поведенческим проявлениям (частоте моргания и доли времени в течении которого глаза закрыты в единицу времени), так как утомление связано прежде всего с количеством нейромедиаторов в центральной нервной системе и соответственно отражается т.е. метриками ее состояния. Таким образом, анализ данных о степени утомления оператора может использоваться в критических областях, таких как (водители автомобилей, пилоты самолетов, диспетчера авиации и т.п.) и своевременного применения мер для предотвращения потенциальным необратимых последствий.


Программная нотация:
названия классов в формате ИмяКласса
функции имя_функции
переменные имяПеременной
аргументы имя_аргумента



# Внутренняя структура:


![Class Diagram-Страница 11 (2)](https://user-images.githubusercontent.com/45206030/213150957-f4c75221-6ce9-42eb-bc33-f1c9c9bfdcbb.png)

Рисунок 1. Концептуальная модель

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/10483323-6523-499b-ac33-6202a6b05198)

Рисунок 2. Диаграмма классов

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/b0620908-7633-4a31-ae04-e0446d014311)

Рисунок 3. Обработка запросов на считывание данных, а также расчета и вывода численных характеристик

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/67b3521b-54d7-4daa-94fc-e1b9c21e782b)

Рисунок 4. Отображение работы библиотеки для оценки утомления оператора

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/7112c9f2-5d29-41ca-963f-2b6dd45852be)

Рисунок 5. Отображение работы библиотеки для оценки утомления оператора на длительном временном отрезке.

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/10c24fab-6bda-425c-b45e-e0689a6e4f86)

Рисунок 6. Отображение работы библиотеки для выявления взаимосвязей и закономерностей между численными характеристиками стратегий глазных движений и движения головы и внешне замеряемыми данными


# Область применения 

Областью применения разработанной библиотеки являются профессии, связанные с операторской работой. А именно, в таких критических областях как:  
•	диспетчерская деятельность; 
•	управление различными транспортными средствами; 
•	управление воздушными и морскими судами; 
•	и др. 
Данные профессии требуют повышенной концентрации работников, выполняющих монотонную деятельность на протяжении длительного промежутка времени. Поэтому, своевременная детекция утомления способна предотвратить потенциальные последствия. 
Требования к ПК 

Для использования данной библиотеки требуется: 
•	процессор (CPU) с частотой не менее 1.5 ГГц (оптимально 3 ГГц); 
•	оперативная память (RAM) не менее 4 Гб (оптимально 8 Гб); 
•	свободное место на ПК не менее 50 Мб; 
•	операционная система Windows (64-bit) для использования UI (кроссплатформенно для бэкэнда); 
•	версия Python не ниже версии 3.12. 
 
 
# Установка 

Установка разработанной библиотеки осуществляется одним из нескольких способов: 
1.	скачать исходник с репозитория гитхаб, либо при помощи гита (гит запросы), либо через браузер; 
2.	скачать скомпилированный файл .exe для операционной системы MS Windows; 
3.	интегрировать в код на питоне командой pip install EyeTrackFatigue и использовать как другие библиотеки (например import EyeTrackFatigue as etf). 
Запуск программы 
Для запуска программы требуются проделать следующие шаги: 
 
# Инструкция по использованию  

Выход из программы 

Для выхода из программы необходимо нажать на “крестик” в правом верхнем углу окна.  

Главное меню программы выглядит следующим образом:  

 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/4cf469e3-b425-4d9d-a8b8-a12f12bfd46d)

Рисунок 7. Главное меню программы 

Главное окно включает в себя несколько разделов. 
1.	Загрузка данных глазодвигательной активности. В этом разделе происходит загрузка, расчет и сохранение данных, используемых для анализа. 
2.	Разбиение выборки на участки, где испытуемый был утомлен, а где был бодр. В данном разделе загруженные данные разбиваются на тренировочные и контрольные для дальнейшего обучения. 
3.	Выбор характеристик для анализа и формирования обучающей и тестовой выборок. В этом разделе находятся все доступные для анализа характеристики.  
4.	Нормализация и кроссвалидация данных. Данный раздел отвечает за подготовку данных к машинному обучению (нормализация) и оценку качества работы алгоритма (кроссвалидация). 
5.	Обучение модели на обучающей выборке. Этот раздел создан для использования алгоритмов машинного обучения, а также сохранения результатов. 
6.	Оценка полученной модели на тестовых данных. В этом разделе выводятся и сохраняются результаты работы алгоритма, включающие в себя точность и F-меру. 
В нижней части окна высвечиваются уведомления о завершении выполняемого процесса. 
 

 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/83bfa221-527e-49fd-ae19-4d734e3e4561)

Рисунок 8. Уведомление об обучении модели 

Типы данных 
По умолчанию на вход принимаются данные в формате csv. Файлы должны содержать информацию о координатах положения взгляда по осям x и y. Возможно также дополнительное включение информации о наклоне головы. Для реализации сценария обучения модели и оценки ее точности д 
анные должны быть предварительно размечены как “уставшие” и “бодрые” для загрузки в систему. Далее полученная модель может использоваться для определения степени утомления на неразмеченных данных. 
 
 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/6dd17e33-4ef6-442b-afed-92ff6f7b5203)

Рисунок 9. Окно загрузки данных 

Загрузка 
На этапе загрузки данных открывается окно проводника, в котором нужно выбрать все файлы, которые необходимо проанализировать (см. рисунок 9). 

![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/3905117b-9bb8-43ba-b4ef-8aeb8fca7458)
 
Рисунок 10. Выбор данных для загрузки 

После загрузки данных будут происходить расчеты, после которых можно сохранить результаты. Для этого необходимо нажать на кнопку “Сохранить посчитанные данные” (см. рисунок 10).  
 
![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/d6dcdeb5-013f-478f-ad1f-0711f2b40a25)

Рисунок 11. Окно сохранения результатов расчета данных 

В случае, если были сохранены рассчитанные данные и необходимо их использовать повторно, необходимо воспользоваться функцией “Загрузить рассчитанные данные”. Эта функция позволит загрузить в программу уже подготовленные ранее данные. 
Разбиение данных 
На данном этапе загруженные в систему данные разбиваются для обучения. Предустановленный формат разбиения разделяет данные для обучения в соотношении 80% и 20% для обучения и контроля соответственно. Кнопка “Разбить выборку для обучения” позволяет разбивать выборку случайным образом (рисунок 11). 
 
![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/5d053d39-596b-4836-8f33-7c7d8158202d)
 
Рисунок 12. Разбиение выборки для обучения 

Список характеристик 
Список характеристик состоит из 60 позиций, включающих в себя координаты, характеристики фиксаций, саккад, морганий и траектории. Кнопка “все” позволяет выбрать все возможные характеристики. Кнопка “стандарт” позволяет выбрать 7 лучших характеристик, выбранных на основе проведенного многоступенчатого анализа и экспертной оценки (см. раздел “Обучение нейросетей на собранных данных”). В окне справа можно выполнить поиск интересующей характеристики (см. рисунок 12). 
 
![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/9c757d3f-2c69-442d-9b4e-6e64da6a8da3)

Рисунок 13. Список доступных характеристик 
Виды алгоритмов 
В разработанной библиотеке реализовано несколько видов алгоритмов анализа данных: 
 
1.	Базовый алгоритм. Расчеты производятся на основе алгоритмической оценки характеристик. 
2.	Алгоритмы машинного обучения: 
•	Random Forest; 
•	Decision Tree; 
•	Нейросетевой классификатор Multilayered Perceptron (MLP).  
Для всех типов загружаемых данных (движений головы и движений глаз) возможны расчеты при помощи любого из представленных алгоритмов. 
 

 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/d0107e8f-d5c4-4588-ab58-29ee2089815d)

Рисунок 14. Алгоритмы анализа данных 

Обучение модели 

После выбора алгоритма необходимо запустить процесс обучения модели при помощи кнопки “Обучение”. Предварительно рекомендуется выбрать компоненты “Кроссвалидация” и “Нормализация” для подготовки данных и более качественной оценки будущих результатов. После завершения обучения полученную модель можно сохранить на ПК при помощи кнопки “Сохранить модель”. Для использования уже обученной модели необходимо загрузить ее в программу при помощи кнопки “Загрузить модель”. 
 
![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/a91adee1-7ada-4f70-9a76-1a4047928d8f)

 
Рисунок 15. Кнопки обучения, сохранения и загрузки модели 


Расчет точности 


После обучения модели автоматически будет выведена оценка точности работы алгоритма и F-мера.  
 

 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/423c2371-6aab-42e1-b4dc-0f51a2c5b406)

Рисунок 16. Окно оценки точности 
Сохранение результатов 
После проведения всех расчетов окно программы выглядит следующим образом (см. рисунок 16). 
 

 ![image](https://github.com/AI-group-72/FAEyeTON/assets/45206030/4b91b458-d379-49e9-8772-711273681d96)
 
Рисунок 17. Главное меню программы после выполнения всех расчетов 


# Авторы и контакты

Кашевник А.М.
Кузнецов В.В.
Брак И.В.
Мамонов А.А.
Коваленко С.Д.

Руководство по разработке


# Лицензия | LICENSE

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Lesser General Public License for more details.

Эта программа является свободным программным обеспечением: вы можете распространять ее и/или модифицировать в соответствии с условиями лицензии GNU Lesser General Public License, опубликованной Фондом свободного программного обеспечения, версии 2.1 Лицензии
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.
Более подробную информацию смотрите в GNU Lesser General Public License.

https://licenseit.ru/wiki/index.php/GNU_Lesser_General_Public_License_version_2.1#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5


