Применение нейронных сетей для определения физического состояния человека
магистр Р. А. Сергеев, д.т.н. В. П. Бубнов Петербургский государственный университет путей сообщения Императора Александра I
Санкт-Петербург, Россия [email protected], bubnov [email protected]
Аннотация. Рассматривается разработанное мобильное приложение, которое представляет собою систему мониторинга физического состояния работников железной дороги. Работа этой системы заключается в том, что пользователь (работник на РЖД) надевает фитнес-браслет Mi band 2 и подключает его к android-смартфону по Bluetooth, а специально разработанное приложение автоматически замеряет пульс и отправляет его на сервер для обработки данных с целью получения результатов состояния работника.
Ключевые слова база данных, нейронная сеть, android-приложение, физическое состояние человека, фитнес-браслет, нейросетевое прогнозирование, разработка андроид-приложения.
Введение
В связи с повышенными нагрузками на физическое состояние работников РЖД, становится актуальной задача мониторинга и контроля физического состояния работника.
Целью данной работы является разработка мобильного приложения, контролирующего физическое состояние работников железной дороги, для операционной системы Android. Данное приложение снижает риск возникновения аварийных ситуаций и повышает безопасность пассажиров и сотрудников РЖД.
Анализ рынка
Проанализировав рынок на наличие аналогичных приложений мониторинга и контроля физического состояния работника, мы выявили несколько приложений, три из которых близки по смыслу к системе, описываемой в этой работе.
1. Mi HR with Smart Alarm — be fit Band (рис. 1, а). Отличное приложение, в котором имеется множество опций для различных тренировок, также позволяет на протяжении всей тренировки отслеживать пульс, а позже просматривать его в виде удобного графика. К сожалению, в нем нет необходимого функционала, а именно «анализа физического состояния и определения его статуса».
2. Master for Mi Band (рис. 1, б). Замечательное приложение для работы с умным браслетом Mi Band и умными весами Mi Scale имеет такие функции, как: шагомер, измеритель пульса, умный будильник. К сожалению, в нем нет необходимого функционала.
3. Mi Fit (рис. 1, в). Это официальное приложение от создателей данного фитнес-браслета. Mi Fit отслеживает ак- ^
тивность, анализирует качество сна и оценивает прогресс _
ваших тренировок, но, как и в предыдущих двух приложе- ^
ниях, в нем отсутствует необходимый функционал. -
Рис. 1. Andraid-приложения мониторинга и контроля физического состояния работника
Wmhaul limn: Û ггнп, Ьшг-id елки
МЬмй
№*№h*d 16d*r"4 giul
Littt n»ght'6 sleep 7 h л? ф
Q Hfljri iraïo в & BPM Q Welghî 58 7Qkg
Все эти приложения позволяют измерить пульс человека и просмотреть его историю, но ни в одном приложении нет функционала для предсказания физического состояния человека по его физиологическим параметрам и пульсу в конкретный момент времени, а также отсутствует веб-панель для отслеживания целой группы людей одним оператором. В связи с этим было решено разработать данное АМго1^приложение.
Проектирование мобильного приложения В данном разделе представлены UML-диаграммы взаимодействия разрабатываемого Android-приложения с сервером.
Моделирование операций Согласно правилам взаимодействия программ в сети, приложения должны обмениваться четко структурированными и согласованными пакетами данных [1]. В разработанной системе используется формат JSON для обмена данными между приложением и сервером.
При выполнении запросов от приложения к серверу неприемлемо блокирование потока работы Android-приложе-ния, поэтому все запросы к серверу приложение выполняет в отдельном потоке [2].
На рисунке 2 представлена диаграмма процесса регистрации пользователя в системе.
Рис. 2. Диаграмма последовательности процесса регистрации пользователя в системе
Рис. 3. Диаграмма процесса Рис 4. Диаграмма процесса подсчета пульса и отправки
авторизации пользователя в системе его значения на сервер для последующей обработки
Чтобы избежать потерь персональных данных пользователя, все пароли хешируются, приложение ведет взаимодействие с базой данных через специальное серверное API. Главным преимуществом данного API является способность принимать большие потоки данных, моментально их обрабатывать и выдерживать большие нагрузки.
На рисунке 3 представлена диаграмма процесса авторизации пользователя в системе.
При авторизации очень важно точно идентифицировать нужного пользователя по логину и паролю, чтобы избежать потери его персональных данных. Для этого используется специально разработанное серверное API.
На рисунке 4 представлена диаграмма процесса подсчета пульса пользователя и отправка его значения на сервер для последующей обработки.
На рисунке 5 представлена диаграмма процесса подключения фитнес-браслета к приложению.
На рисунке 6 представлена диаграмма получения истории пульса пользователя.
Рис. 5. Диаграмма процесса подключения фитнес-браслета к приложению
Для связи приложения с фитнес-браслетом используется беспроводная сеть Bluetooth.
Главной особенностью фитнес-браслета является то, что на браслете запущены все необходимые сервисы для получения информации о пульсе в виде сокетов. Благодаря этому разработанное приложение может получить токен для доступа к этим сокетам и получать данные о пульсе с фитнес-браслета. При таком способе взаимодействия браслет выступает в роли сервера, а приложение — в роли клиента.
Преимущества данного способа связи заключаются в экономии заряда батареи на обоих устройствах [3].
Рис. 6. Диаграмма получения истории пульса пользователя
На рисунке 7 показана диаграмма процесса заполнения подробных личных данных о пользователе.
Рис. 7. Диаграмма процесса заполнения подробных личных данных о пользователе.
Проектирование макета приложения
Для любого приложения главным является удобство и простота его использования, поэтому при создании макета приложения использовался стиль Material Design.
Material Design — это общий разработанный концепт дизайна всех приложений для Android версий 5+. Его главной чертой является четкость и выделение всех действий через анимацию [4]. Таким образом, пользователь всегда наглядно видит, что делает его приложение и не впадает в состояние «неведения».
Все важные элементы интерфейса выделяются с помощью теней и анимаций, реагирующих на действия пользователя [4].
При выборе этого дизайна следует придерживаться правилу «трех цветов», что означает, что в оформлении всего приложения будет использоваться всего 3 основных цвета и их оттенки. Обязательным условием Material Design является использование одного общего шрифта на все приложение [4].
Проектирование архитектуры базы данных
При проектировании базы данных для разрабатываемой системы была выбрана реляционная модель базы данных. В базе данных с такой моделью используются связи между таблицами типа «один ко многим».
Например, с одной записью из таблицы с пользователями соотносится сразу несколько записей из таблицы с данными об истории пульса для каждого пользователя.
Для того, чтобы корректно сохранить данные, написанные в кодировке CP1251 («Кириллица»), использовалась кодировка базы данных UTF8_bin («Многоязычная бинарная»). такой метод кодировки позволяет корректно сохранять любые данные в любой кодировке, но минусом этого метода является чрезмерное использование дискового пространства при хранении данных.
Проектирование структуры приложения
Для проектирования структуры данного мобильного приложения использовалась схема разделения данных приложений «Model-View-Controller» (MVC).
Плюсом этой схемы проектирования является удобство разработки и четкое структурирование кода, что положительно сказывается на скорости разработки приложения и простоте дальнейшей поддержки кода и его доработки.
Все элементы, отвечающие за визуальное отображение интерфейса приложения, создаются в специальных файлах формата .xml [2].
Все файлы, отвечающие за логику работы приложения, описываются в специальных файлах формата .java. Таким образом код не «перемешивается» и остается легко читаемым [2].
Также, чтобы избежать повторения одного и того же кода несколько раз в разных классах, было решено вынести повторяющийся код в отдельный класс и использовать его в остальных классах через наследование.
Проектирование базы данных веб-панели
Всего было создано две таблицы:
1) Users:
id - bigint(auto increment unique) name - string surname - string
age - byte weight - byte height - byte
sex - boolean(0 - жен. 1 - муж.) email - string(unique) password - string auth_token - varchar(40) created_at - date updated_at - date deleted_at - date;
2) Pulse_history:
id - bigint(auto increment unique)
user_id - bigint
pulse - integer
status - integer
created_at - date
updated_at - date
deleted_at - date.
Схема работы сервера:
1. Пользователь регистрирует учетную запись в приложении, и его данные записываются в таблицу «users».
2. Приложение автоматически замеряет пульс и отправляет его на сервер для сохранения в таблице «pulse_history».
3. Веб-панель, с помощью которой система наблюдает в режиме реального времени, проверяет историю пульса пользователя и, в случае выявления аномалии, оповещает оператора и пользователя о возможном приступе с рекомендациями о том, как этот приступ можно предотвратить.
Проектирование нейронной сети для нейросетевого прогнозирования
В данной системе используется библиотека TenserFlow.js. Данная библиотека была основана на DeepLearningjs. Для запуска и обучения нейронной сети на сервере используется программная платформа NodeJS [5].
Установка TensorFlow:
yarn add @tensorflow/tfjs
Подключение библиотеки в скрипт:
var tf = require('@tensorflow/tfjs');
Callback-функция для обучения нейронной сети:
async function doTraining(model) { const history = await model.fit(xs, ys, { epochs: 1000, callbacks: { onEpochEnd: async (epoch, logs) => { console.log(epoch, logs.loss);
}
}
});
}
Объявление модели нейронной сети: const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [5]})); model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
Подготовка данных для обучения нейронной сети: let arr = [
[(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 80) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 120) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 81) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 121) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 82) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 122) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 83) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 123) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 84) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 124) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 80) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 120) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 81) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 121) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 82) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 122) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 83) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 123) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 84) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 124) * 100], [(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 1, (1 / 150) * 100], [(1 / 171) * 100, (1 / 88) * 100, (1 / 32) * 100, 1 / 2, (1 / 150) * 100],
const xs = tf.fewsor2fi?(arr); const ys = tf.tensor2d(
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 2], [arr. length, 1]
);
Запуск обучения и прогнозирования:
doTraining(model).then(() => {
console.log(model.predict(tf.tensor2d([(1 / 186) * 100, (1 / 91) * 100, (1 / 24) * 100, 1 / 2, (1 / 85) * 100], [1,5])).print()); });
В данном примере была описана модель однослойного перцептрона с пятью нейронами. В качестве функции потерь использовалась «среднеквадратическая ошибка». В качестве функции оптимизатора использовался «Стохастический градиентный спуск». Для получения корректных и постоянных данных понадобилось 1000 эпох. Также была проведена нормализация данных с помощью деления единицы на входные значения и последующего умножения на 100.
Обозначения входных параметров в данном примере:
1) 186, 171 — рост пользователя в сантиметрах;
2) 91, 88 — вес пользователя в килограммах;
3) 24, 32 — возраст пользователя в годах;
4) 1 означает, что пользователь мужчина;
5) 2 означает, что пользователь женщина;
6) 80, 81, 82, 83, 84, 120, 121, 122, 123, 124 — пульс пользователя в определенный момент времени.
Обозначение результирующих параметров для обучения нейронной сети:
1) 0 — самочувствие пользователя «отлично»;
2) 1 — самочувствие пользователя «внимание»;
3) 2 — самочувствие пользователя «плохо».
На выходе нейронной сети рассчитывается вероятность статуса самочувствия пользователя в диапазоне [0, 1].
По результирующему коэффициенту можно отделить статус пользователя так:
1) до 0,35 => «отлично»
2) 0,35-0.7 => «внимание»
3) от 0,7 => «плохо»
Диапазон 0,35-0,7 немного больше других диапазонов, потому что для данной системы важнее найти «больного» пользователя, даже если пара лишних пользователей попадут в «зону риска».
Заключение
В рамках настоящей работы разработана система мониторинга физического состояния работников железной дороги. Дальнейшее развитие системы предполагает разработку прогнозирования возможных сердечно-сосудистых заболеваний, основываясь на физиологических данных работника.
Возможно масштабирование системы путем разработки новых сервисов для более качественного анализа физического состояния человека.
Литература
1. Машнин Т. С. Web-сервисы Java. — СПб.: БХВ-Пе-тербург, 2012. — 560 с. — (Профессиональное программирование: PRO).
2. Android. Разработка приложений = Android: Application Development / Р. Роджерс, Д. Ломбардо, З. Мед-ниекс, Б. Мейк. — М.: ЭКОМ Паблишерз, 2010. — 400 с.
3. Асмаков C. Интерфейс Bluetooth: разберемся с нюансами // Компьютер Пресс. 2013. № 3 (279). С. 34-36.
4. Васильева Е. В. Flat-Design и система интернационального стиля: графические принципы и визуальная форма / Е. В. Васильева, Ж. С. Гарифуллина (Аристова) // Знак: проблемное поле медиаобразования. 2018. № 3 (29). С. 43-49.
5. Джулли А. Библиотека Keras — инструмент глубокого обучения. Реализация нейронных сетей с помощью библиотек Theano и TensorFlow = Deep learning with Keras. Implement neural networks with Keras on Theano and Tensor-Flow / А. Джулли, С. Пал.; пер. с англ. А. А. Слинкин. — M.: ДМК-Пресс, 2018. — 294 с.
The Use of Neural Networks to Determine the Physical Condition of a Person
Master of Science R. A. Sergeev, Grand PhD V. P. Bubnov Emperor Alexander I Petersburg State Transport University Saint Petersburg, Russia [email protected], [email protected]
Abstract. The developed mobile application is a system for monitoring the physical condition of railway workers. The idea of this system is that a user (an employee on Russian Railways) puts on a Mi band 2 fitness bracelet and connects it to an android smartphone via Bluetooth, and a specially developed application automatically measures the pulse and sends it to the server for data processing in order to obtain status results employee.
Keywords: database, neural network, android application, physical condition of a person, fitness bracelet, neural network prediction, android application development.
References
1. Mashnin T. S. Java Web services [Web-servisy Java], St. Petersburg, BHV-Petersburg, 2012, 560 p.
2. Rogers R., Lombardo J., Mednieks Z., Meike B. Android: Application Development [Android. Razrabotka prilozheniy], Moscow, ECOM Publishers, 2010, 400 p.
3. Asmakov S. Bluetooth Interface: Let's Look at the Nuances [Interfeys Bluetooth: razberemsya s nyuansami],
Computer Press [Komp'yuter Press], 2013, No. 3 (279), Pp. 34-36.
4. Vasylieva E. V., Garifullina (Aristova) Zh. S. Flat-Design and the System of International Style: Graphic Principles and Visual Form [Flat-Design i sistema internatsional'nogo stilya: graficheskie printsipy i vizual'naya forma], SIGN: Problematic Field of Media Education [Znak: problemnoe pole mediaobrazovaniya.], 2018, No. 3 (29), Pp. 43-49.
5. Gulli A., Pal S. Deep learning with Keras. Implement neural networks with Keras on Theano and TensorFlow [Biblioteka Keras — instrument glubokogo obucheniya. Realizatsiya neyronnykh setey s pomoshch'yu bibliotek Theano i TensorFlow], Moscow, DMK-Press Publishers, 2018, 294 p.
HHmmneKmyanbHbie техноnогии Ha mpaHcnopme. 2020. № 2
70