Давайте разберемся, что такое COVID-19.

Коронавирусная болезнь (COVID-19) - инфекционное заболевание, вызываемое новым вирусом. Заболевание вызывает респираторное заболевание (например, грипп) с такими симптомами, как кашель, лихорадка и, в более тяжелых случаях, затрудненное дыхание.

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

Что происходит с легкими человека, когда он заражается вирусом Covid-19?

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

- Профессор Джон Уилсон, избранный президент Королевского австралазийского колледжа врачей и врач-респиратор.

Легкие, наполненные воспалительным материалом, не могут получать достаточное количество кислорода в кровоток, что снижает способность организма поглощать кислород и избавляться от углекислого газа. Вот что ведет к смерти.

Как ML может помочь в этой ситуации?

Мы можем построить модель, которая найдет закономерности на этих рентгеновских снимках и попытается предсказать, инфицирован ли пациент «вирусом короны» или «нормален».

Это сократит время, необходимое для обнаружения и заключения, инфицирован пациент или нет.

Набор данных:

Давайте посмотрим, как выглядит набор данных:

Данные идеально сбалансированы: Corona-120 и Normal-124.

Давайте посмотрим на единственное изображение Короны:

Давайте посмотрим на один-единственный образ Нормального:

Структура папки:

По сути, это 3 папки, каждая по 2 подпапки:

Папки - это train, test и validation, и каждая основная папка состоит из подпапок с именами corona и normal.

Это все, что у нас есть.

Вы можете скачать данные из здесь. Эти данные собираются из источника и объединяются в ссылку на веб-сайте AIHUBProjects, пожалуйста, проверьте их, у них есть интересные материалы и проекты, а также множество блогов, которые можно прочитать, изучить и расширить свои знания. .

Подход глубокого обучения:

Мы будем использовать модель CNN, чтобы выяснить, какой узор присутствует в изображениях. Вы можете прочитать о CNN в здесь. Вы найдете большое количество информации о моделях CNN в справочном блоге.

Предварительная обработка данных:

Разделение данных

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

Зачем складывать в разные папки?

Чтобы мы могли научить нашу модель тому, какое изображение к какой категории относится.

Дополните данные

Как мы все знаем, изображения можно увеличивать, и мы можем искусственно увеличивать размер данных для модели, тогда почему бы и нет?

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

Я выполнил следующие аугментации:

  1. Изменить масштаб: создать новую версию изображения с другим размером.

2. Диапазон сдвига: выполняет полное преобразование изображения.

3. Диапазон масштабирования: масштабирование изображения.

3. Диапазон поворота: угол поворота изображения.

4. Диапазон сдвига ширины: сдвиг ширины относительно ширины.

5. Диапазон смещения высоты: смещение высоты относительно высоты.

6. Переворот по горизонтали: создание нового изображения, отраженного по горизонтали.

7. Вертикальное отражение: создайте новое изображение, перевернутое по вертикали.

Создание объекта ImageDataGenerator:

Мы будем использовать вышеупомянутое дополнение для объекта-генератора, а затем передадим каталог нашей основной папки, в которой есть изображения поездов (помните, что папка поезда уже состоит из 2 подпапок corona и normal). Эти папки помогут модели понять, какое изображение к какой категории относится.

Мы устанавливаем целевой размер 300 x 300, фактическое изображение имеет больший размер примерно 1400 x 1200, это может занять целую вечность, поэтому мы уменьшаем размер изображения.

Мы устанавливаем размер пакета 32, а режим класса - категориальный.

Мы также создаем входной размер изображения для нашей модели, а именно:

(300 x 300 x 3), где 3 - размер изображения RGB: 3

Модель Архитектура:

В качестве вывода мы использовали последовательную модель, которая состоит из слоев Conv2D, слоя BatchNorm, слоя MaxPooling, слоя Flatten, слоя Dropout и плотного слоя.

Выход будет 2 класса: Corona или Normal.

Существует 6 уровней Conv2D, каждый из которых имеет размер ядра (3x3), активацию как ReLU и с инициализатором ядра и регуляризатором ядра как L2.

Единицы активации слоев CNN колеблются от 2³ до 2⁶.

Слой MaxPooling имеет размер пула (2x2).

Слой Dropout отбрасывает 0,5% нейронов этого слоя.

Параметры компиляции модели:

Модель использует потерю «бинарной кроссэнтропии».

Метрика «двоичной точности».

Используемый оптимизатор - Adagrad со скоростью обучения 0,001 и спадом 0,9.

Обучите модель:

С эпохой 10 мы обучили модель, она дала нам потерю поезда 0,27 в конце, точность поезда 0,93, потерю теста 0,28 и точность теста 0,95. Что было прилично для простой модели.

Давайте посмотрим на некоторые результаты:

Изображения для тестирования используются из тестовой папки, которую Модель еще не видела.

Заключение :

  1. Модель работает нормально, но все еще нуждается в доработке, чтобы мы могли добиться более высокой точности.
  2. Если бы данных было больше, чем наша модель, она могла бы быть более сложной и иметь больше параметров для обучения и могла бы достичь лучших результатов.

Использованная литература:

Источник: https://www.theguardian.com/world/2020/mar/28/what-happens-to-peoples-lungs-when-they-get-coronavirus