Коронавирус SARS-CoV-2 в настоящее время является одним из самых опасных заболеваний. Заболевание, возникшее в 2019 г., быстро распространилось по всему миру. Всемирная организация здравоохранения (ВОЗ) объявила продолжающуюся пандемию COVID-19 чрезвычайной ситуацией в области общественного здравоохранения.
Для ускорения процесса постановки диагноза могут быть использованы методы глубокого обучения сверточной нейронной сети (CNN) на основе набора изображений компьютерных томографов / рентгеновских снимков легких инфицированных коронавирусом и здоровых легких. Обученная модель в дальнейшем сможет классифицировать любое новое изображение как положительное или отрицательное с большей скоростью.
Основной целью исследования является использование нейронных сетей при анализе изображений компьютерных томографов и рентгеновских снимков. Проводимое исследование направлено на реализацию / разработку приложения для эффективного и быстрого выявления заболевания по медицинским изображениям.
Материалы и методы исследования
Для определения методов исследования был проведен обзор научных публикаций, посвященных применению сверточных нейронных сетей для анализа медицинских снимков. Проведенный обзор позволил определить перспективы исследования, такие как улучшение точности систем машинного обучения и уменьшение количества неправильных диагнозов.
Для разработки сверточной нейронной сети использовались следующие библиотеки языка программирования Python:
- TensorFlow – открытый Python-фреймворк машинного обучения, объединяющий множество моделей и алгоритмов глубокого обучения;
- Fastai – это библиотека глубокого изучения Python, предоставляющая API высокого уровня для различных распространенных приложений глубокого обучения и типов данных.
- Keras – это высокоуровневое API для построения и тренировки моделей глубокого обучения.
Также использовались модули:
- shutil – содержит набор функций для обработки и работы с файлами и папками, позволяющих копировать, перемещать и удалять их;
- os – предоставляет функции для работы с операционной системой, такие как выполнение системных команд, получение доступа к директориям.
Для написания и редактирования исходного кода разрабатываемой нейронной сети был выбран Google Colab – бесплатный облачный сервис, основанный на Jupyter Notebook. Он содержит в себе все необходимое для машинного обучения, а также предоставляет бесплатный доступ к быстрым GPU и TPU.
Описание используемых наборов данных
Для обучения нейронной сети необходим подготовленный набор данных, содержащий в себе большое число изображений тех классов, которые сеть должна научиться различать. В данном случае использовались два набора данных (рентгеновские и КТ снимки) открытого источника сайта kaggle.com. В наборе рентгеновских снимков также содержались изображения с зараженными пневмонией легкими (без подтверждения COVID), данные снимки не использовались в обучении сети.
Первый набор данных состоял из 2433 изображений рентгеновских снимков легких высокого разрешения, из них 980 с зараженными COVID-19 легкими и 1453 с легкими, не подверженными заражению [1]. Для валидационной выборки было определено 20 % датасета, для тестовой – 10 % (общий объем датасета 1700 изображений в обучающей выборке, 488 – в валидационной и 245 в тестовой выборках).
Второй набор данных состоял из 14486 снимков компьютерной томографии легких, из них 7593 с зараженными COVID-19 легкими и 6893 здоровых [2]. С учетом разбиения на выборки 10140 изображений вошли в обучающую выборку, 2898 – в валидационную и 1448 изображений – в тестовую.
Для генерации отдельных выборок для обоих датасетов использовался метод ImageDataGenerator из библиотеки Keras, работа которого заключается в создании набора данных на основе имеющихся изображений, а также в его аугментации.
Более подробно остановимся на анализе данных первого набора.
Результаты исследования и их обсуждение
Использование нейронных сетей при анализе изображений компьютерных томографов и рентгеновских снимков является в настоящее время актуальной темой исследований.
Исследователями Mojtaba Mohammadpoor, Mehran Sheikhi karizaki, Mina Sheikhi karizaki предложена модель на основе сверточной нейронной сети в качестве альтернативного метода быстрого обследования, который можно использовать для выявления случаев COVID-19 путем анализа компьютерной томографии. В качестве набора данных применялись более 15 тыс. изображений компьютерной томографии 95 больных пациентов и более 48 тыс. изображений 282 здоровых пациентов [3]. Ученым было исследовано влияние корректировок параметров изображений на производительность предложенной модели. Следует отметить, что даже при случайном выборе обучающих и тестовых изображений общая точность достигалась порядка 95 % (без проведения предварительной обработки изображений).
В работе Shigao Huang, Yang Jie, Simon Fong, Qi Zhao рассматривается применение глубокого машинного обучения в диагностике COVID-19, включая клинические характеристики, электронные медицинские записи, медицинские изображения (КТ, рентгеновские снимки, ультразвуковые изображения и пр.). На рис. 1 представлены методы диагностики COVID-19.
Рис. 1. Методы диагностики COVID-19 [4]
Рис. 2. Архитектура CNN [5]
Рис. 3. Архитектура предложенной CNN [6]
Рис. 4. Диаграмма использования CNN архитектур [7]
Sneha Kugunavar, C.J. Prabhakar представили применение сверточных нейронных сетей для диагностики и прогноза COVID-19 с использованием рентгеновских снимков и изображений компьютерной томографии (КТ) пациентов. Используемые в исследовании модели CNN в основном были разработаны для обнаружения, классификации и сегментации изображений с COVID-19 [5]. Архитектура разработанной сети представлена на рис. 2. Авторы достигают точности в 93 % и доказывают эффективность CNN в задаче диагностики и прогноза COVID-19.
Исследователи R.M. Tharsanee, R.S. Soun- dariya, A. Saran Kumar, M. Karthiga, S. Sountharrajan в качестве инициативы по борьбе с глобальной вспышкой определяют подходящую классификационную модель глубокого обучения для идентификации коронавируса посредством обработки данных [6].
Авторами приведено описание обучения модели, представлена сравнительная таблица производительности моделей.
Исследователи Mustafa Ghaderzadeh, Farkhondeh Asadi представили обзор текущего состояния моделей для обнаружения и диагностики COVID-19 с помощью радиологических методов диагностирования и их обработки на основе глубокого обучения, графически представили частоту использования различных CNN архитектур для анализа радиологических изображений с COVID-19 [7].
Ученые пришли к выводу, что применение глубокого обучения в области обработки радиологических изображений COVID-19 снижает количество ложных диагнозов при обнаружении и диагностике заболевания и предлагает возможность предоставлять пациентам быстрые, дешевые и безопасные диагностические услуги.
Ученые Yazeed Zoabi, Shira Deri-Rozov, Noam Shomron предложили модель нейронной сети, обученной на 51 831 записи протестированных пациентов (из которых у 4769 подтверждено наличие COVID-19). Исследователями были проведены тесты модели при различных заданных характеристиках датасета, из них выявлены наиболее важные для прогнозирования заболевания [8].
Прогнозы были произведены с использованием модели с градиентным бустингом, построенной с использованием деревьев решений. Полученная модель предсказала результаты теста COVID-19 с высокой точностью, используя восемь бинарных характеристик: пол пациента, возраст ≥ 60 лет, известный контакт с инфицированным, появление пяти начальных клинических симптомов (кашель, жар, боль в горле, усложнение дыхания, головная боль).
Представленные исследования показали, что нейронные сети доказали свою эффективность в задаче диагностирования COVID-19. Наилучшие результаты при этом достигаются с использованием сверточных нейронных сетей. Наиболее часто обучение проводится на КТ снимках и рентгеновских снимках. Большинство авторов в своих работах предлагают использовать от шести слоев при моделировании сверточных нейронных сетей. Основной проблемой исследований в данном направлении является поиск адекватного датасета для обучения сети. Сотрудничество с медицинскими учреждениями, несомненно, может помочь в составлении и проверке набора данных.
Реализация и обучение сверточной нейронной сети
Рис. 5. Архитектура нейронной сети
Рис. 6. График точности нейронной сети
Для разработки сверточной нейронной сети была применена библиотека TensorFlow языка программирования Python, использовалась модель последовательного типа, позволяющая легко добавлять новые слои при помощи метода add. Схема смоделированной сверточной нейронной сети, отражающая в себе каждый имеющийся слой, представлена на рис. 5.
Слой Conv2D – это сверточный слой, содержащий 16 фильтров, матрицу фильтров размера 5х5, функцию активации ReLU, заданную форму для входного изображения (с 3 каналами rgb) input_shape = (256, 256, 3), где 256 х 256 – размерность изображения.
Слой MaxPooling2D – слой подвыборки (максимального пулинга), с уплотнением группы пикселей размерности 2 х 2 до одного пикселя.
Далее следует Dropout – процесс выборочного отключения нейронов в процессе обучения. Это один из способов, помогающих избежать переобучения. При выборочном отключении во время обучения одних нейронов, другие нейроны задействуются намного активней, что положительно сказывается на общем качестве обучения. При тренировке сети таким образом она становится более устойчива и может полагаться на все свои нейроны для выполнения задачи. При этом указывается вероятность исключения каждого из нейронов на любой обучающей итерации.
Следующие блоки модели содержат аналогичные слои, имеющие различие лишь в сверточных слоях, содержащих 32 фильтра, а затем 64. Между сверточными слоями и полносвязным слоем находится Flatten – слой выравнивания, преобразующий получаемые данные в вектор. Далее следуют полносвязный слой Dense со 128 нейронами и функцией активации relu, слой Dropout, финальный слой Dense, состоящий из количества нейронов, равного количеству классов. При помощи функции активации softmax он сводит получившуюся сумму к единице, чтобы интерпретировать полученный результат как ряд возможных исходов.
Максимальная полученная точность на тестовых данных для первого датасета составила порядка 95 %.
Заключение
Применение глубокого машинного обучения в области обработки медицинских изображений помогает снижать количество ошибок при обнаружении и диагностике заболевания и предлагает возможность предоставлять пациентам быстрые и безопасные диагностические услуги.
Представленная модель сверточной нейронной сети, обученная на рентгеновских снимках, показала достаточно высокую точность. Следует обратить внимание, что для получения хорошей точности нейронной сети, обученной на оптимальных параметрах на КТ и рентгеновских снимках, важно определить качественный и объемный датасет (с возможной предварительной обработкой изображений).
Смоделированная и обученная сверточная нейронная сеть может быть использована в программном приложении, позволяющем по загружаемым рентгеновским и КТ снимкам определять, имеется или отсутствует заболевание с определенной процентной вероятностью его наличия.
Библиографическая ссылка
Зеленина Л.И., Хаймина Л.Э., Деменкова Е.А., Деменков М.Е., Хаймин Е.С., Хрипунов Д.Д. СВЕРТОЧНЫЕ НЕЙРОННЫЕ СЕТИ В ЗАДАЧЕ КЛАССИФИКАЦИИ МЕДИЦИНСКИХ ИЗОБРАЖЕНИЙ // Современные наукоемкие технологии. – 2021. – № 9. – С. 68-73;URL: https://top-technologies.ru/ru/article/view?id=38818 (дата обращения: 21.11.2024).