Дипломная работа: Диагностика заболеваний по ЭКГ с помощью сверточных нейронных сетей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

3 Данные

3.1 Систематика наборов данных ЭКГ

Большинство работ, связанных с обработкой ЭКГ сигналов, используют некоммерческие наборы данных в свободном доступе, что дает возможность воспроизвести, сравнить результаты и облегчает осуществление последующих исследований. Систематизируя наборы данных, можно выделить следующие их признаки:

· Источник данных - данные ЭКГ могут быть собраны как с медицинских устройств, так и с носимой электроники (Рис. 4). Основное различие в этих данных заключается в том, что, как правило, медицинские устройства имеют больше отведений, чем данные с носимых устройств, тем самым являясь информативнее. Также данные могут отличаться частотой дискретизации и точностью. Так, например, такие устройства мониторинга как смарт-часы или умные браслеты способны собирать данные ЭКГ, но количества помех при подобном сборе данных намного больше, чем с использованием медицинского оборудования.

· Рисунок 4. Сбор данных ЭКГ [3]

· Количество отведений - количество измеряемых разностей потенциалов. Чем больше отведений, тем больше отклонений можно наблюдать. Так, например, инфаркт миокарда может быть обнаружен только грудными отведениями (от V1 до V4). Электрокардиограмма, собранная при помощи медицинского оборудования (Рис.5.), обычно имеет 12 или 15 отведений, в то время как носимая электроника обычно собирает данные по одному отведению (Рис. 6), например, умный браслет собирает данные по отведению MLII, так как носится на руке. Тем не менее, суточные ЭКГ мониторы способны собирать данные и по 12 отведениям, но такие устройства невозможно отнести к потребительскому сектору и к категории носимой электроники как таковой.

Рисунок 5. ЭКГ (15 отведений), собранная при помощи медицинского оборудования

Рисунок 6. Пример ЭКГ, собранной с носимой электроники. PhysioNet Computing in Cardiology

Challenge 2017 [6]

· Длительность - бывают краткосрочные электрокардиограммы (30-60 секунд) и долгосрочные. Краткосрочных данных намного больше, поскольку их проще собирать, например, краткосрочная ЭКГ является основным диагностическим инструментом в амбулаторных отделениях, но даже на них могут быть обнаружены потенциальные заболевания. Однако, их может быть недостаточно для заболеваний сердца, которые нечасто проявляют себя, например, фибрилляция желудочков. -

· Разметка - разметка является ключевым фактором в использовании того или иного набора данных для решения задачи. Так, например, в электрокардиограмме могут быть размечены начальные, пиковые и конечные маркеры зубцов ЭКГ (P, PQ, QRS, ST, T, U), разметка самого сердечного удара (Normal, PVC, PAB, RBB, LBB, APB, AFW, VEB). Основной сложностью в разметке медицинских данных заключается в том, что их могут размечать только эксперты в своей области.

Таблица 1. Наиболее часто используемые наборы данных [3].

Shenda Hong at el. в обзоре работ, связанных с обработкой ЭКГ сигналов (Таблица 1.), приводят используемые в исследованиях наборы данных, наиболее частым из которых является MIT-BIH Arrhythmia Database.

Как показано в Таблице 1, не существует единых стандартов в процедуре сбора данных. В разных исследованиях использовалось различное количество отведений, длительностей, источников исходных данных и т.д., что затрудняет справедливое сравнение результатов между различными наборами данных. Кроме того, сложно получить качественные данные и аннотации, поэтому многие современные работы до сих пор используют базу данных аритмии MIT-BIH, которая была собрана более 40 лет назад.

Таким образом, основной особенностью MIT-BIH Arrhythmia Database является то, что ЭКГ записи длительные (30 минут) и размечены на большое количество классов, что дает возможность исследователям сосредоточиться на решении задач классификации конкретных типов аритмий. Кроме того, данный набор данных используется чаще по сравнению с остальными. В отличие от второго по популярности набора данных [6], в котором 30 секундные электрокардиограммы размечены на 4 класса, в наборе данных MIT-BIH размечен каждый удар. Именно поэтому, в выпускной квалификационной работе все исследования и эксперименты проводились на этом наборе данных.

3.2 MIT-BIH Arrhythmia Database

Набор данных состоит из 48 получасовых записей ЭКГ от 47 пациентов медицинского учреждения Beth Israel Deaconess. Каждая последовательность данных имеет разрешение 11 бит с частотой дискретизации 360 Гц и с разметкой каждого сердечного удара. Отведения - MLII для каждой последовательности, а также V4 или V5. Исходные данные представлены в WFDB формате и находятся в отрытом доступе.

3.3 Предобработка данных

Рисунок 7. Пример чтения исходных данных

Рисунок 8. Пример чтения разметки

Из рисунков выше видно, что ЭКГ данные представлены следующим образом:

· 30 минутная последовательность в отведениях MLII и V4/V5

· Метка (класс) каждого удара в соответствии с Q - пиком. Т.е. тип аритмии помечается во время пика зубца Q каждого импульса ЭКГ.

Стоит отметить, что данные представлены в сыром виде, и в таком формате не могут быть обработаны нейронной сетью, так как на одной электрокардиограмме представлены разные типы сердечных сокращений - нормальные и аномальные, размеченные соответствующим образом. Поэтому исходные данные необходимо обработать для будущих исследований. В выпускной квалификационной работе рассматриваются различные варианты сверточных нейронных сетей - 1D и 2D. До этого уже упоминалось, что поскольку не существует единых стандартов сбора и интерпретации ЭКГ данных, предобработка данных является важным фактором для справедливой оценки полученных результатов. Таким образом, данные были обработаны в соответствии с тем, как это описано в научных работах.

Так, например, в [21] для генерации 2D изображений, используя набор данных MIT-BIH, авторы используют следующий подход:

Таким образом, входное изображения генерируется путем исключения 20 сигналов ЭКГ из предыдущего и следующего от центральных пиковых сигналов Q-волны.

В выпускной квалификационной работе этот подход был реализован (Приложение 1.) при помощи таких библиотек, как matplotlib и OpenCV, в результате применения которого были получены изображения в оттенках серого размера 128x128. Примеры полученных изображений представлены на Рис. 9.

Рисунок 9. Пример сгенерированных изображений в оттенках серого. Класс - A. Тип - I.

Как видно из рисунка, пик не всегда находится в середине изображения, поэтому для экспериментов был реализован еще один подход, в котором данные генерируются только на основании центрального пика и N значений до и после него.

Рисунок 10. Пример сгенерированных данных изображений в оттенках серого. Класс - A. Тип - II.

На Рис. 10 представлено применение генерации данных относительно пика.

Помимо генерации двумерных данных, написанный код сохраняет данные в одномерном виде - в формате .npy (Numpy). Универсальность кода также достигается за счет того, что можно осуществить выбор типа генерируемых данных (I или II) и, более того, переиспользовать (изменить размер изображения, длину, количество ЭКГ сигналов до и после, либо количество ЭКГ сигналов от центра ), изменив несколько строчек кода (Приложение 1), что дает возможность исследователям как воспроизвести, так и переделать под себя процесс генерации данных.

1. # Choose from peak to peak or centered

2. # mode = [20, 20]

3. mode = 128

4.  

5. image_size = 128

6. output_dir = '../data'

7.   

8. # fig size / image size

9. figsize = (image_size / dpi, image_size / dpi)

10. image_size = (image_size, image_size)

Кроме того, в ВКР реализована мультипоточная версия, при помощи которой достигается значительное уменьшение временных затрат, требуемых на создание набора данных (Приложение 2).

3.4 EDA

EDA - exploratory data analysis - представляет собой анализ данных, нахождение закономерностей и аномалий, а также использование инструментов визуализации.

Рисунок 11. Таблица извлеченных данных

Итак, после извлечения данных из исходного набора их можно объединить в единый Pandas DataFrame. Как видно на Рис. 11, получены следующие поля: идентификатор пациента, тип отведения, класс, имя файла (.npy/.png) и путь.

Поскольку каждая ЭКГ запись имеет отведение MLII, было решено использовать именно его. Кроме того, отведение MLII - электрод, расположенный на руке, что оправдывает использование данных этого отведения, поскольку носимые устройства, как правило, тоже находятся на руке. Кроме того, для справедливой оценки результатов были выбраны те же классы, которые использовали Tae Joon Jun et al в своей работе [21], а именно:

1. N - Normal

2. V - PVC (Premature ventricular contraction)

3. \ - PAB (Paced beat)

4. R - RBB (Right bundle branch)

5. L - LBB (Left bundle branch)

6. A - APB (Atrial premature beat)

7. ! - AFW (Ventricular flutter wave)

8. E - VEB (Ventricular escape beat)

Рисунок 12. Фильтрация набора данных по отведению и набором классов

Таким образом, отфильтрованный набор данных содержит больше 100 000 экземпляров, а именно:

N - 74780, L - 8074, R - 7258, V - 7123, \ - 3620, A - 2546, ! - 472, E - 106

Стоит отметить, что данные ЭКГ сильно несбалансированные, что неудивительно, поскольку большинство ударов не являются аномальными, и большинство заболеваний встречаются редко и только в специальных условиях (сердечной нагрузке и т.д.).

Рисунок 13. Распределение классов

3.5 Тренировочная и валидационная выборки

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

Рисунок 14. Распределение тренировочного и валидационного набора данных

Полный код генерации файлов разметки в формате .json указан в Приложении 3.

4 Применение сверточных нейронных сетей к задаче классификации данных ЭКГ

4.1 Подготовка окружения

Решая задачу, используя машинное или глубокое обучение, исследователи настраивают модель, т.к. выбранный метод обычно зависит от гиперпараметров и используемых данных. Общий подход заключается в реализации решения и оценки его качества. Затем цель состоит в том, чтобы превзойти это решение, изменяя параметры, такие как тип модели, оптимизаторы, функции потерь, размер батча, входные данные и т.д. Часто, после проведения нескольких экспериментов без логирования определение гиперпараметров наилучшего решения становится невозможным. Многие исследователи, например Andrew Ng, используют электронные таблицы для регистрации своих экспериментов. К сожалению, не все изменения вносятся в список, поскольку многие из них могут быть незначительными, и, более того, необходимо быть самодисциплинированным. Таким образом, в решении задачи было решено придерживаться следующих правил:

· Использование конфигурационных файлов

· Python скрипты вместо Jupyter ноутбуков

· Система контроля версий, в которой каждая ветка является отдельным экспериментом

· Визуализация с использованием TensorBoard

· Google таблицы с условным форматированием для систематизации результатов

· Принцип training / inference / pipeline

· CI для возможности воспроизведения тренировок

Все необходимые зависимости описаны в Приложении 8. Их можно установить, используя pip3, входящий в Python 3.

4.2 Эксперименты

В общей сложности был выполнен 31 эксперимент и реализованы сверточные нейронные сети из следующих публикаций:

· Pranav Rajpurkar et al. [25]

· XUEXIANG XU et al. [26]

· V. V. Kuznetsov V. A. Moskalenko N. Yu. Zolotykh [14]

· Tae Joon Jun et al. [21]

А также были использованы следующие архитектуры (готовая реализация):

· AlexNet

· VGG

· ResNet

· EfficientNet

· MobileNetV2

· ShuffleNet

Во всех экспериментах используется фреймворк автоматического дифференцирования - PyTorch. Также были приняты попытки в реализации нового решения в задаче классификации сердечных ударов. В качестве метрики используется доля правильных ответов - accuracy. В качестве функции потерь используется кросс-энтропия:

Исходный код чтения данных доступен в Приложении 6.

4.3 2D CNN

Первым подходом к решению задача была имплементация архитектуры сети, предложенной в [21].