ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»
Факультет информатики, математики и компьютерных наук
Программа подготовки магистров по направлению
01.04.02 «Прикладная математика и информатика»
Образовательная программа «Интеллектуальный анализ данных»
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
Тема работы:
Диагностика заболеваний по ЭКГ
с помощью сверточных нейронных сетей
электрокардиография аритмия сеть нейронный
Ляшук Александр Юрьевич
Нижний Новгород, 2020
Оглавление
Введение
1. Постановка задачи
1.1 Классификация исследовательских задач
1.2 Классификация используемых моделей глубокого обучения
2. Обзор литературы
3. Данные
3.1 Систематика наборов данных ЭКГ
3.2 MIT-BIH Arrhythmia Database
3.3 Предобработка данных
3.4 EDA
3.5 Тренировочная и валидационная выборки
4. Применение сверточных нейронных сетей к задаче классификации данных ЭКГ
4.1 Подготовка окружения
4.2 Эксперименты
4.3 2D CNN
4.4 1D CNN
4.5 Реализация нового решения EcgResNet
4.6 Выводы
5. Особенности выпускной квалификационной работы
6. Автоматический анализ электрокардиограммы
Заключение
Список литературы
Приложения
Введение
Согласно данным Всемирной Организации Здравоохранения (ВОЗ), сердечно-сосудистые заболевания являются основной причиной смерти людей - в 2016 году более 17 миллионов человек умерло, что составило около 31% всех смертей в мире. [1]. Аритмия - типичный тип сердечно-сосудистых заболеваний, который относится к любым изменениям нормальных ритмов сердца. Существуют различные типы аритмии, например, преждевременные сокращения предсердий или желудочков, мерцательная аритмия, инфаркт миокарда, сердечная недостаточность. Хотя одиночный удар сердца может и не оказать негативного влияния на организм человека, совокупность ударов может привести к необратимым последствиям или смерти. Поэтому, важно преждевременно определять наличие таких ударов для предотвращения сердечно-сосудистых заболеваний.
Рисунок 1. Основные причины смерти в мире (2016 г.)
Электрокардиография (ЭКГ) является самым распространенным неинвазивным методом регистрации физиологической активности сердца в течение определенного периода времени и представляет собой графическую запись разности электрических потенциалов, возникающих в результате сокращения сердечной мышцы.
С повседневным развитием носимой электроники, которая в режиме реального времени измеряет физические показатели - фитнес-трекеры, пульсометры, умные часы и т.д. разработка систем, способных автоматически регистрировать аномальную работу сердца является особенно актуальной в настоящее время.
В последние годы наблюдается развитие портативных мониторов ЭКГ в области медицины, таких как монитор Холтера [2], и носимых устройств в различных областях здравоохранения, таких как Apple Watch. В результате объем данных ЭКГ, требующих анализа, значительно вырос, а поскольку очень важно вовремя принять меры для нормализации работы сердца, необходимо автоматизировать процесс регистрации сердечных аномалий.
Именно поэтому разработка систем, способных автоматически анализировать, выявлять и вовремя информировать носителя о возможных проблемах функционирования сердца, является особенно актуальной и приоритетной в настоящее время. Кроме того, большой объем ЭКГ позволяет решать исследовательские и бизнес задачи в данной области, которые ранее не могли быть решены из-за отсутствия данных - например, биометрическая идентификация человека и анализ сна.
В выпускной квалификационной работе исследование фокусируется на изучении и сравнении основных сверточных архитектур глубокого обучения, используемых в решении задачи классификации ударов сердца. Кроме того, была реализована новая архитектура, которая показала наилучший результат на валидационном наборе данных. Все проделанные эксперименты воспроизводимы, и инструкция по их запуску доступна в публичном репозитории, в котором также реализована концепция непрерывной интеграции.
Главной особенностью настоящей работы является реализация прототипа работы алгоритма. Реализованная программа принимает ЭКГ данные в сыром виде (RAW) в формате WFDB и выдает информацию по каждому удару сердца в графическом виде в формате HTML таким образом, что любой человек на любом устройстве, на котором установлен браузер может посмотреть результаты своей ЭКГ.
1. Постановка задачи
1.1 Классификация исследовательских задач
· Обнаружение заболевания
· Разметка и локализация
· Анализ сна
· Биометрическая идентификация человека
· Уменьшение шумов
Рисунок 2. Классификация исследовательских задач [3]
1.2 Классификация используемых моделей глубокого обучения
· Сверточные нейронные сети (CNN)
· Рекуррентные нейронные сети (RNN)
· Комбинация CNN и RNN (CRNN)
· Автоэнкодеры (AE, VAE)
· Генеративные модели (GAN)
· Полно-связные сети (FC)
Рисунок 3. Классификация используемых моделей [3]
В выпускной квалификационной работе рассматривается задача выявления заболеваний сердца - классификация сердечного удара на нормальный и аномальный с использованием сверточных нейронных сетей.
Целью работы является анализ и сравнение существующих сверточных нейросетевых архитектур в решении задач, связанных с классификацией сердечных ритмов, а также создание новой архитектуры с использованием электрокардиограмм в качестве входных данных.
Результатом работы является программа, которая автоматически анализирует электрокардиограмму и представляет результаты в графическом виде в формате Web страницы.
Для достижения цели решены следующие задачи:
1. Обзор литературы
2. Обзор наборов данных ЭКГ
3. Подготовка и предобработка входных данных
4. Реализация существующих подходов и методов решения поставленной задачи
5. Разработка собственной архитектуры для решения задачи
6. Сравнение результатов
7. Реализация прототипа алгоритма, способного принимать на вход данные в сыром формате, а на выходе отдавать пользователю графическую информацию по ЭКГ
В качестве средств для решения задачи используется язык программирования Python 3 и все необходимые библиотеки (Приложение 8), в том числе фреймворк для автоматического дифференцирования - PyTorch.
2 Обзор литературы
Традиционно автоматический анализ ЭКГ основывался на двух-стадийных методах. Так, например, как показано на Рис.3., сначала специалист выделял «экспертные» признаки на основе необработанных данных, а затем эти признаки передавались в качестве входных данных в традиционные методы машинного обучения для получения финального результата. Признаки можно разделить на следующие категории [4]: статистические, частотные и временные. На практике экспертные признаки извлекаются автоматически, но, тем не менее, этого недостаточно, поскольку алгоритмы ограничены качеством и форматом входных данных.
Рисунок 3. Традиционные методы автоматической обработки ЭКГ [3]
С недавнего времени использование нейронных сетей является основным трендом анализа данных, поскольку они достигли многообещающих результатов во многих областях: в компьютерном зрении, распознавании речи, обработке естественного языка и др. Основное преимущество этих методов заключается в том, что они не требуют явного извлечения признаков, а формируют их автоматически неявно во время обучения. Также, некоторые исследования показали, что признаки, сгенерированные нейронной сетью, более информативны, чем экспертные признаки [5].
Эффективность методов глубокого обучения также превосходит традиционные методы машинного обучения для многих задач анализа ЭКГ, таких как обнаружение аритмий и анализ сна. Именно поэтому, в обзоре литературы основное внимание было уделено нейронным сетям.
Выявление аномалий в работе сердца не единственная задача, которую можно решить методами глубокого обучения [3]. Так, например, многие исследования были сфокусированы на автоматической разметке комплекса QRS, который критически важен для определения различных типов аритмий. Одним из используемых наборов данных является Lobachevsky University database (LUDB) [7].
В последние годы понимание паттернов сна является критическим аспектом в здравоохранении, т.к. здоровый сон - ключевой фактор долголетия. Нарушения сна могут значительно ухудшить качество жизни человека, снизить его работоспособность, стать причиной депрессивных состояний и привести к различным последствиям и осложнениям. В [8] авторы используют модель типа автоэнкодер для обнаружения апноэ во сне c использованием набора данных PhysioNet Challenge 2000.
Благодаря развитию носимой электроники, количеству гаджетов, которые в режиме реального времени измеряют активность, температуру, частоту сердечных сокращений и т.д., биометрическая идентификация человека по этим данным становится возможной. В статье [9] авторы создают биометрическую систему идентификации человека, используя сверточную нейронную сеть, и оценивают ее с использованием восьми наборов данных из PhysioNet (STDB, CEBSDB, AFDB, WECG, NSRDB, MITDB, VFDB и FANTASIA).
Процесс получения ЭКГ сигнала часто сопровождается большим количеством шума, что отрицательно влияет на точность диагностики. В [10], чтобы убрать шум, используется сверточная архитектура encoder-decoder. Сверточные сети также применяются для определения эмоций [11], состояния наркотического опьянения [12] и классификации уровня стресса водителя [13]. VAE [14] и GAN [15] архитектуры используются для генерации синтетических данных ЭКГ.
Однако, основная задача - определение и своевременное оповещение человека о возможных проблемах, связанных с работой сердца, и все перечисленные выше прикладные задачи в той или иной степени помогают в решении основной.
Рекуррентные нейронные сети - тип нейронных сетей, предназначенный для работы с последовательностями. В RNN выходные данные предыдущего шага используются в качестве входных данных для следующего, таким образом, путем итеративного обновления состояний они способны запоминать информацию в последовательном порядке. Благодаря такой возможности, RNN сети кроме временных рядов также применяются, например, в задаче обработки естественного языка, поскольку способны находить взаимосвязь между токенами и, таким образом, понимают контекст [16]. Данные ЭКГ, по своей сути являются числовыми последовательности, поэтому, выбор рекуррентных нейронных сетей является логическим и обоснованным как для нахождения временных зависимостей, так и для обработки входных данных различной длины. В [17] авторы используют небольшие сети долгой краткосрочной памяти, которые решают задачу классификации непрерывно в режиме реального времени на носимых устройствах. В [18] используется механизм внимания в двунаправленной рекуррентной нейронной сети для интерпретации результатов при помощи визуализации весов.
Наряду с рекуррентными нейронными сетями для анализа временных рядов также используются сверточные нейронные сети. CNN представляют собой класс нейронных сетей, которые отлично зарекомендовали себя в решении задач классификации изображений после того, как AlexNet [19] в 2012 году победила в соревновании ImageNet [22], что поспособствовало применению нейронных сетей вместо классических методов компьютерного зрения. Сверточная нейронная сеть состоит из нескольких сверточных слоев, слоев нормализации, нелинейности (ReLU), пулинга и полносвязного слоя в конце. Современное поколение популярного оборудования для глубокого обучения, в основном, выполняется на видеокартах Nvidia, которые, в свою очередь, используют CUDA ядра и оптимизированы для работы с параллельными вычислениями. В отличие от рекуррентных нейронных сетей, в которых вычисления происходят последовательно, CNN требуют меньших вычислительных затрат и намного быстрее обучаются за счет параллельности.
В задачах с данными ЭКГ также используются сверточные нейронные сети, как 1D, так и 2D CNN. Одномерные сверточные нейронные сети работают, применяя ядра по временным измерениям ЭКГ, в то время как двумерные сверточные сети работают с преобразованными двумерными данными ЭКГ, например, с 2D спектрограммами [20] либо с одноканальными изображениями [21]. В таком случае, предварительно обученные на наборе данных ImageNet сверточные нейронные сети, например ResNet [23], могут быть переучены на набор данных ЭКГ. Предварительно необученные нейронные сети также применяются в задачах классификации типа ударов сердца. Например, в [21] авторы предложили использовать 2D CNN, которая принимает на вход преобразованные в оттенках серого изображения каждого сердечного удара, а на выходе классифицирует удар сердца на 8 классов. Авторы сравнивают свою архитектуру с популярными архитектурами, как AlexNet [19] и VGG [24], которые уступают ей по качеству.
Однако основным недостатком двумерных сверточных нейронных сетей является предобработка одномерных входных данных в двумерные изображения. Кроме того, полученные 2D изображения больше чем на 75% состоят из белого цвета, т.е. тензоры содержат нули, но участвуют в обработке, и, тем самым, увеличивается количество операций с плавающей точкой (FLOPs). Такие сети могут быть улучшены за счет использования 1D сверток.
В одной из таких работ [25] авторы предложили 34-х слойную архитектуру одномерной сверточной нейронной сети, которая состоит из 16 модифицированных ResNet блоков [23]. Длина фильтра каждого слоя свертки - 16, и каждый слой имеет 64k фильтров, где k начинается с 1 и увеличивается каждый четвертый блок. Кроме того, каждый 2-й блок сжимает входные данные в 2 раза. В другой работе [26] используется значительно меньшая сверточная нейронная сеть, которая, благодаря своему размеру, может быть непосредственно внедрена на носимые устройства для мониторинга сердцебиения в режиме реального времени. Наконец, в [14] авторы используют одномерные свертки в VAE архитектуре для генерации синтетических данных ЭКГ.