Нам нужны нестандартные подходы к борьбе с этим смертельным вирусом!

Мы столкнулись с 3-й волной смертельного вируса короны (COVID-19), который вызвал пандемическую ситуацию во всем мире, затронувшую более 200 стран и территорий. Вирус легко передается от человека к человеку или при прикосновении к зараженной поверхности. Основными симптомами инфекции Covid-19 являются лихорадка, сухой кашель, потеря вкуса/обоняния и одышка. В некоторых регионах до сих пор трудно и дорого выявить больного Covid-19 из-за отсутствия наборов для тестирования и огромной нагрузки на медицинские центры. В процессе тестирования образцы берутся из мазка из носа или задней части горла, затем лаборатория проверяет образец мазка на генетический материал вируса и через один-два дня узнает результат теста. Процесс болезненный, длительный и дорогостоящий.

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

Я разработал и обучил сверточную нейронную сеть на тысячах пораженных Covid-19, а также на обычных рентгеновских изображениях. Модель берет рентгеновское изображение подозреваемого пациента и обеспечивает бинарную классификацию для прогнозирования (положительный или нормальный Covid-19) . В статье представлена ​​пошаговая демонстрация вышеупомянутого проекта, реализованного с использованием Keras, которыйявляется высокоуровневой библиотекой нейронных сетей Python, работающей на верхнем уровне TensorFlow. .

Набор данных

Набор данных, используемый в этом проекте, был взят из двух разных источников Kaggle и Gituhub, создающих набор данных из 3500 изображений с распределением 70% поезда, 15% валидации, 15% теста и 50% распределения Covid-19 по сравнению с обычным рентгеном. картинки.

  • Тренировочный набор → 2450 изображений
  • Набор для проверки → 550 изображений
  • Тестовый набор → 550 изображений

Источник данных 1: Kaggle

Набор данных от kaggle состоит из рентгеновских (PA-CXR) изображений пациентов с Covid-19, бактериальной и вирусной пневмонией и нормальных людей без каких-либо заболеваний.

Источник данных 2: Гитхаб

Источником второго набора данных является репозиторий gituhub, который содержит открытый набор данных рентгенограмм грудной клетки и КТ пациентов с положительным результатом на COVID-19 или другие вирусные и бактериальные пневмонии.

Выполнение

TensorFlow — это библиотека с открытым исходным кодом для потоков данных и дифференцированного программирования для целого ряда задач, например приложений для машинного и глубокого обучения, таких как нейронные сети. Keras – это библиотека нейронных сетей с открытым исходным кодом, написанная на Python и способная работать поверх TensorFlow, Microsoft Cognitive Toolkit, R, Theano или PlaidML. Это мощная отраслевая структура, которую можно масштабировать до больших кластеров графических процессоров или всего модуля TPU. Она предназначена для быстрого экспериментирования с глубокими нейронными сетями. Здесь я использовал Keras для реализации двоичного классификатора, который будет классифицировать рентгеновское изображение как зараженное Covid-19 или нормальное.

‹/› → Приготовьтесь к глубокому погружению в код

Если вы планируете реализовать этот код, я предполагаю, что вы уже загрузили установку Keras и Tensorflow на свою рабочую станцию. →Нет? следуйте этому краткому руководству по Anaconda, Jupyter Notebook, TensorFlow и Keras для глубокого обучения и вернитесь сюда прямо сейчас

Если вы не хотите настраивать среду на своем локальном компьютере, альтернативный способ — использовать облачный сервис для машинного обучения, такой как Google Colab, который я также использую для этой демонстрации.

Импорт библиотек

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

Смонтируйте диск Google с помощью Google Colab

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

Извлечение и преобразование данных с помощью ImageDataGenerator

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

Определение меток классов и разбиение итераторов ImageDataGenerator на обучающие и тестовые наборы X, Y

Визуализируйте набор данных перед обучением модели

Установите некоторые важные параметры для передачи в модель

Преобразование на основе канала

Преобразование набора данных на основе формата данных, т. е.channels_first или channels_last, и преобразование числовых данных в числа с плавающей запятой

Модель

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

Расположение слоев

Сеть содержит 6 слоев, включающих

  • 2 слоя Conv2D с Relu в качестве функции активации, размером ядра (3,3) и 32 в качестве фильтра.
  • 1 слой MaxPooling2D с размером пула (2,2).
  • 1 Слой Flattern, чтобы свернуть пространственные измерения ввода в измерение канала.
  • 2 плотных слоя с Relu и softmax в качестве функций активации соответственно

Определение и компиляция модели

Оценка/Результаты

Подгонка и оценка модели на тестовом наборе

Визуализация результатов (фактический класс против прогнозируемого класса более 100 пациентов)

Результаты с точностью 81% были достигнуты в тестовом наборе после 16 эпох. Модель на основе нейронной сети успешно обнаруживает пациента с Covid-19 и классифицирует рентгеновское изображение как (Covid-19 или нормальное)

Вывод

У одной проблемы может быть множество решений, и каждый может сыграть свою роль, внося свой вклад в сообщество. В этой статье я продемонстрировал свою работу над решением на основе сверточной нейронной сети для обнаружения пациента с Covid-19. Разработан двоичный классификатор, который принимает рентгеновское изображение в качестве входных данных и выводит свой прогноз как Covid-19 или нормальный с точностью 81%.

P.S → Вы можете внести свой вклад в этот проект через мой github-репозиторий или поделиться своими предложениями/отзывами в разделе комментариев.

Хорошего дня!