Давайте разберемся, что такое COVID-19.
Коронавирусная болезнь (COVID-19) - инфекционное заболевание, вызываемое новым вирусом. Заболевание вызывает респираторное заболевание (например, грипп) с такими симптомами, как кашель, лихорадка и, в более тяжелых случаях, затрудненное дыхание.
Большинство людей, инфицированных вирусом COVID-19, будут испытывать респираторное заболевание от легкой до средней степени тяжести и выздоравливать без специального лечения. Пожилые люди и люди с сопутствующими заболеваниями, такими как сердечно-сосудистые заболевания, диабет, хронические респираторные заболевания и рак, более склонны к развитию серьезных заболеваний.
Что происходит с легкими человека, когда он заражается вирусом Covid-19?
По словам врачей и экспертов: «Повреждается подкладка дыхательного дерева, вызывая воспаление. Это, в свою очередь, раздражает нервы, выстилающие дыхательные пути. Просто пылинка может вызвать кашель ».
- Профессор Джон Уилсон, избранный президент Королевского австралазийского колледжа врачей и врач-респиратор.
Легкие, наполненные воспалительным материалом, не могут получать достаточное количество кислорода в кровоток, что снижает способность организма поглощать кислород и избавляться от углекислого газа. Вот что ведет к смерти.
Как ML может помочь в этой ситуации?
Мы можем построить модель, которая найдет закономерности на этих рентгеновских снимках и попытается предсказать, инфицирован ли пациент «вирусом короны» или «нормален».
Это сократит время, необходимое для обнаружения и заключения, инфицирован пациент или нет.
Набор данных:
Давайте посмотрим, как выглядит набор данных:
Данные идеально сбалансированы: Corona-120 и Normal-124.
Давайте посмотрим на единственное изображение Короны:
Давайте посмотрим на один-единственный образ Нормального:
Структура папки:
По сути, это 3 папки, каждая по 2 подпапки:
Папки - это train, test и validation, и каждая основная папка состоит из подпапок с именами corona и normal.
Это все, что у нас есть.
Вы можете скачать данные из здесь. Эти данные собираются из источника и объединяются в ссылку на веб-сайте AIHUBProjects, пожалуйста, проверьте их, у них есть интересные материалы и проекты, а также множество блогов, которые можно прочитать, изучить и расширить свои знания. .
Подход глубокого обучения:
Мы будем использовать модель CNN, чтобы выяснить, какой узор присутствует в изображениях. Вы можете прочитать о CNN в здесь. Вы найдете большое количество информации о моделях CNN в справочном блоге.
Предварительная обработка данных:
Разделение данных
Когда у нас есть данные, мы можем создавать классы и помещать их в отдельные папки для каждого класса, например: изображения короны должны находиться внутри папки короны, а обычные изображения должны находиться внутри обычной папки. Но о том, чтобы не беспокоиться об этом, уже позаботились ребята, накапливавшие данные.
Зачем складывать в разные папки?
Чтобы мы могли научить нашу модель тому, какое изображение к какой категории относится.
Дополните данные
Как мы все знаем, изображения можно увеличивать, и мы можем искусственно увеличивать размер данных для модели, тогда почему бы и нет?
Вы можете прочитать об увеличении изображений здесь. Он состоит из различных типов дополнений, легко объяснимых с помощью кода и изображений.
Я выполнил следующие аугментации:
- Изменить масштаб: создать новую версию изображения с другим размером.
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. Что было прилично для простой модели.
Давайте посмотрим на некоторые результаты:
Изображения для тестирования используются из тестовой папки, которую Модель еще не видела.
Заключение :
- Модель работает нормально, но все еще нуждается в доработке, чтобы мы могли добиться более высокой точности.
- Если бы данных было больше, чем наша модель, она могла бы быть более сложной и иметь больше параметров для обучения и могла бы достичь лучших результатов.