GithubHelp home page GithubHelp logo

ai-group-72 / faeyeton Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 46.79 MB

demo repository for CODE-AI-2022 project. Contains pre-build and pre-release version of project code.

License: GNU Lesser General Public License v2.1

Python 93.99% Jupyter Notebook 6.01%
fatigue fatigue-detection machine-learning neural-network python

faeyeton's Introduction

FAEyeTON

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

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

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

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

Class Diagram-Страница 11 (2)

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

image

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

image

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

image

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

image

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

image

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

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

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

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

Установка

Установка разработанной библиотеки осуществляется одним из нескольких способов:

скачать исходный код библиотеки с репозитория гитхаб либо при помощи гита (для этого необходимо выполнить команду: $ git clone https://github.com/AI-group-72/FAEyeTON.git), либо через браузер (для скачивания библиотеки через браузер необходимо зайти на страницу репозитория https://github.com/AI-group-72/FAEyeTON, и в выпадающем меню кнопки <>Code выбрать опцию Download ZIP, для скачивания архива с файлами с исходным кодом);

Также, для автоматической установки необходимых библиотек после скачивания/распаковывания файлов библиотеки следует выполнить команду:

$ python -m pip install -r requirements.txt

скачать скомпилированный файл .exe для операционной системы MS Windows; Файл для обучения нейросетевых моделей и оценки утомления оператора; и файл для расчета численных характеристик по данным окулографа - расположены в папке “Executives” по ссылке https://disk.yandex.ru/d/KmdoodhhveGZng/Executives.

Файл dataGather.exe доступен отдельно и работает без предварительной установки.

Файл evalApp.exe запакован в архиве вместе с необходимыми файлами .dll и инструкцией по установке. Инструкция сопровождена видео-инструктажем.

интегрировать в код на питоне командой pip install EyeTrackFatigue и использовать как другие библиотеки (например import EyeTrackFatigue as etf).

Запуск программы

Для запуска программы требуются проделать следующие шаги:

Инструкция по использованию

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

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

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

image

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

Главное окно включает в себя несколько разделов.

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

image

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

Типы данных По умолчанию на вход принимаются данные в формате csv. Файлы должны содержать информацию о координатах положения взгляда по осям x и y. Возможно также дополнительное включение информации о наклоне головы. Для реализации сценария обучения модели и оценки ее точности данные должны быть предварительно размечены как “уставшие” и “бодрые” для загрузки в систему. Далее полученная модель может использоваться для определения степени утомления на неразмеченных данных.

image

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

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

image

Рисунок 10. Выбор данных для загрузки

После загрузки данных будут происходить расчеты, после которых можно сохранить результаты. Для этого необходимо нажать на кнопку “Сохранить посчитанные данные” (см. рисунок 11).

image

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

В случае, если были сохранены рассчитанные данные и необходимо их использовать повторно, необходимо воспользоваться функцией “Загрузить рассчитанные данные”. Эта функция позволит загрузить в программу уже подготовленные ранее данные. Разбиение данных На данном этапе загруженные в систему данные разбиваются для обучения. Предустановленный формат разбиения разделяет данные для обучения в соотношении 80% и 20% для обучения и контроля соответственно. Кнопка “Разбить выборку для обучения” позволяет разбивать выборку случайным образом (рисунок 12).

image

Рисунок 12. Разбиение выборки для обучения

Список характеристик Список характеристик состоит из 60 позиций, включающих в себя координаты, характеристики фиксаций, саккад, морганий и траектории. Кнопка “все” позволяет выбрать все возможные характеристики. Кнопка “стандарт” позволяет выбрать 7 лучших характеристик, выбранных на основе проведенного многоступенчатого анализа и экспертной оценки (см. раздел “Обучение нейросетей на собранных данных”). В окне справа можно выполнить поиск интересующей характеристики (см. рисунок 13).

image

Рисунок 13. Список доступных характеристик

Виды алгоритмов

В разработанной библиотеке реализовано несколько видов алгоритмов анализа данных:

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

image

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

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

После выбора алгоритма необходимо запустить процесс обучения модели при помощи кнопки “Обучение”. Предварительно рекомендуется выбрать компоненты “Кроссвалидация” и “Нормализация” для подготовки данных и более качественной оценки будущих результатов. После завершения обучения полученную модель можно сохранить на ПК при помощи кнопки “Сохранить модель”. Для использования уже обученной модели необходимо загрузить ее в программу при помощи кнопки “Загрузить модель”.

image

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

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

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

image

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

image

Рисунок 17. Главное меню программы после выполнения всех расчетов

Дополнительная утилита

Помимо основного приложения, демонстрирующего все основные этапы работы с библиотекой, было решено сохранить приложение для расчета численных характеристик. В структуре библиотеки оно представлено классом DataGather, в модуле UI. Для этого запуска из библиотеки необходимо в файле main.py убрать комментарий с команд ex = dg.Example() и import EyeTrackFatigue.UI.DataGather as dg, а также закомментировать команду ex = ea.EvalApp(). Или же запустить исполняемый файл, представленный на общем диске (https://disk.yandex.ru/d/KmdoodhhveGZng/Executives/dataGather.exe). Это приложение предоставляет доступ к ограниченному функционалу библиотеки, а именно - к расчету численных характеристик. Данное приложение открывает окно визуального интерфейса, выглядящего следующим образом (см. рисунок 18).

image

Рисунок 18 – Главное меню программы после выполнения всех расчетов

В левой части экрана представлен выбор между реализованными методами определения стратегий движения (фиксаций). В окне текстового ввода правее можно ввести нужный аргумент для выбранного метода определения стратегий движения. После выбора нужного метода и аргумента, при нажатии на кнопку «Выбрать файлы» открывается диалоговое окно выбора файлов, в котором необходимо выбрать файлы, полученные от окулографа. После этого будет произведён расчет численных характеристик, результаты которого будут выведены в файл «masterfile.csv». При необходимости, название файла вывода можно изменить в соответствующем текстовом окне.

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

Кнопка «Файлы pupillabs» инициирует вычисление численных характеристик на основе определения стратегий глазных движений путем проведения соответствия между данными, полученными от окулографа, и данными о выделенных фиксациях, полученными от сервиса Pupil Labs. При этом последовательно открывается два системных диалоговых окна для выбора файлов. В первом окне выбираются файлы с сырыми данными полученными от окулографа, во втором файлы с данными о выделенных фиксациях, рассчитанные в сервисе Pupil Cloud. В текстовом окне под данными кнопками указывается название файла выходных данных.

Кнопка «Выбрать файлы PPI» открывает окно для выбора файлов, содержащих информацию о преимпульсном ингибировании (сокращение от английского «prepulse inhibition», PPI) оператора. Эти файлы собираются с помощью стороннего приложения и специального оборудования в то же время, как и запись данных с окулографа (являются опциональным). Данные о PPI вставляются в общую таблицу данных автоматически, путем поиска соответствия в названии файлов.

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

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

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

Лицензия | 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

faeyeton's People

Contributors

glebkiselev avatar themumblingmammoth avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.