Рекуррентная нейронная сеть для поиска отклонений в дыхании человека
ROB-20358Рекуррентная нейронная сеть для поиска отклонений в дыхании человека. В наше время есть множество медицинских приборов для определения состояния организма. Многие из них доступны для домашнего использования. Например, температуру может измерить термометр. Давление может измерить тонометр. А состояние легких? Состояние легких дома никак не проверить. Однако, болезнь легких - четвертая по распространенности причина смерти в мире в 2016 году по версии World Health Organization. А в бедных странах она занимает первое место! В домашних условиях болезнь распознать трудно, нужно идти к врачу, чтобы он поставил диагноз. Но необходимо выявлять болезнь на ранних стадиях, тогда шанс вылечиться намного выше, а к врачам обычно обращаются, когда уже появляются осложнения. Именно поэтому перед нами встала задача поиска инструмента, с помощью которого можно распознать и классифицировать отклонения в дыхании человека. Так как классические инструменты не подходят для домашнего использования, было решено использовать нейронные сети и определять отклонения по звуку дыхания, как это делают врачи с помощью стетоскопа. Так как инструмент предназначен для частного пользования, он должен быть недорогим и простым в применении, при этом эффективным. Именно поэтому мы решили разработать бота в ВКонтакте. Вы отправляете голосовое сообщение, а он определяет вероятность отклонения в дыхании, его характер (хрипы и/или трески), к какому врачу необходимо обратиться и предполагаемые лекарства. К сожалению, качества записи микрофона, встроенного в телефон, недостаточно, чтобы с высокой точностью распознать отклонения в дыхании. Именно поэтому мы решили использовать электронный фонендоскоп. Предлагаю рассмотреть его устройство. Микрофон с высокой чувствительностью располагается внутри фонендоскопа. В следствие того, что между стенками фонендоскопа присутствует вакуум, внешние звуки практически не попадают на микрофон. Такая конструкция позволяет убрать практически все шумы, оставив только звуки дыхания. Для определения эффективности конструкции был взят медицинский фонендоскоп, в который был встроен такой же микрофон. Это позволило нам сравнить фонендоскопы. Благодаря тому, что фонендоскоп имеет одностороннюю головку, удалось убрать значительную часть шумов. Итак, на электронный фонендоскоп записывается голосовое сообщение, отправляется нашему боту прямо в ВКонтакте. Программа считывает аудиозапись, переводит его из формата mp3 в формат wav (данный формат позволяет удобнее работать с аудио). Затем аудиозапись проходит предобработку. Убираются явные шумы и нежелательные фоновые звуки (не звуки легких). Аудиозапись - набор параметров, которые и будут входными значениями нашей нейронной сети. Но так как у нейронной сети определенное количество входных параметров, а длина аудиозаписи может быть любой, мы разбиваем аудиозапись на фрагменты определенной длины (фреймы). Для того, чтобы фреймов было больше, было решено разбивать аудиозаписи с единичным смещением. Это позволило увеличить количество фреймов в несколько раз. Каждый фрейм передаем в нейронную сеть. Она анализирует их и выдает процент отклонений в дыхании, а так же характер отклонения (хрипы и/или трески). Результат нейронная сеть отправляет обратно пользователю в ВКонтакте. Вот как выглядит сам бот. Сначала пользователь нажимает кнопку "Начать", чтобы запустить бота. Пользователю доступны несколько действий: определение отклонений в дыхании, получение информации о болезнях легких, общение с чат-ботом. Чтобы определить вероятность и вид отклонений (хрипы и/или трески), достаточно отправить голосовое сообщение. Дополнительно бот вернет, к какому врачу стоит обратиться и какие лекарства могут выписать. Точность определения отклонений повышается благодаря использованию двух моделей нейросетей вместе. Чтобы получить больше информации о болезнях легких, профилактике, способах лечения, достаточно нажать на выбранную кнопку. Бот отправит всю необходимую информацию. Если пользователь захочет пообщаться, бот сможет ответить благодаря еще одной нейронной сети, которая позволяет найти отвечать на сообщения пользователя. У администраторов сообщества доступны дополнительные кнопки, которые позволяют запускать обучение нейронной сети и останавливать/запускать бота. Теперь поговорим подробнее про саму нейронную сеть. Для ее создания (как и для создания всей программы в целом) использовался язык Python, так как он имеет множество библиотек, которые позволяют проще строить нейронные сети. Для построения нейронной сети использовалась библиотека Keras. Она позволяет строить нейронные сети с более сложной архитектурой. Нейронной сети необходимо не только считать вероятность отклонений, но и вероятность того, что данный отрезок аудиозаписи - шум. Поэтому наша нейронная сеть как бы состоит из трех частей: 1) Определение того, что данный отрезок - шум 2) Приглушение шумов 3) Определение вероятности отклонений Чем больше шума в данном отрезке аудиозаписи, тем меньше будем опираться на него в определении отклонений в дыхании, как бы приглушая его. Для более гибкой настройки нейронной сети были придуманы 5 видов приглушения шумов, а так же поддержка большого числа видов нейронов. Все это реализовано в нашей библиотеке "medicai". В ней есть 3 основные функции: тренировка нейросети, определение отклонений и подключение бота в ВКонтакте. Весь код написан на русском языке, что позволяет начинающим разработчикам лучше понимать программу. Для обучения нейронной сети были найдены аудиозаписи, которые уже размечены на шум/не шум и наличие тресков и/или хрипов, а некоторые аудиозаписи мы записывали и размечали сами. Нам удалось повысить точность распознавания отклонений благодаря увеличению количества аудиозаписей. Для этого они немного редактировались (накладывались некоторые шумы) Всего удалось собрать около 972 аудиозаписей (134 пациента). Каждая аудиозапись длиной около 20 секунд. Используя встроенный микрофон, пользователю не нужно покупать дополнительные инструменты, следовательно определение отклонений в дыхании для него полностью бесплатно. Для более точных результатов следует приобрести электронный стетоскоп. Его производство недорогое, поэтому в розничной продаже его цена не будет превышать 400-500 рублей. Нейронная сеть хорошо справилась с поставленной задачей. Точность определения вида отклонения в дыхании близка к 60% (дыхание без отклонений, хрипы и/или трески) При этом определение наличия отклонений без распределения на виды более точное. А это важнее, ведь человек хочет знать именно наличие или отсутствие отклонений в дыхании, чтобы дальше пройти обследование у врачей. Данный инструмент для поиска отклонений в дыхании человека показывает высокую точность и уже может использоваться широким кругом лиц, благодаря небольшой цене и высокой эффективности. Использование электронного стетоскопа позволило уменьшить количество шумов и повысить точность распознавания отклонений. Рекуррентная нейронная сеть показала, что она способна работать с задачами такой природы.
Файлы
Добавлен 22.11.2024
Добавлен 22.11.2024
Добавлен 22.11.2024