По данным Всемирной организации здравоохранения (ВОЗ), на пневмонию приходится около 14% смертей детей в возрасте до 5 лет. Чтобы помочь определить пневмонию, пациент должен пройти рентген грудной клетки, который позволяет врачам увидеть легкие, сердце и кровеносные сосуды и убедиться в наличии заболевания. Что, если машинное обучение поможет им лучше диагностировать? Была опубликована статья под названием CheXNet: Обнаружение пневмонии на уровне рентгенолога на рентгенограммах грудной клетки с помощью глубокого обучения, которая может помочь им достичь большей точности в ее определении. По словам автора:

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

Статью можно найти здесь: https://arxiv.org/abs/1711.05225

Архитектура модели

Алгоритм ChexNet представляет собой 121-слойную сверточную нейронную сеть, которая была обучена на наборе данных ChestX-ray14 (который в настоящее время является крупнейшим общедоступным набором данных рентгенографии грудной клетки: он содержит 112 120 рентгеновских изображений фронтальной проекции от 30 805 уникальных пациентов). Он основан на плотной сверточной сети (DenseNet-121), за исключением того, что последний полносвязный слой заменен на тот, который имеет один выход с сигмоидной активацией.

Следует отметить следующие моменты:

  • Веса сети инициализируются весами из модели, предварительно обученной в ImageNet;
  • Сеть обучается end-to-end с использованием Адама в качестве оптимизатора со стандартными параметрами (β1 = 0,9 иβ2= 0,999) и с использованием мини-пакетов размером 16; и
  • Начальная скорость обучения составляет 0,001 с коэффициентом затухания 10 каждый раз, когда потери проверки выходят на плато после эпохи.

Внедрение CheXNet

Модель CheXNet предварительно не включена в Keras. Но, к счастью, веса предоставлены brucechou1983 и доступны на github. Итак, мы можем пойти и реализовать их в нашем проекте.

Прежде чем использовать CheXNet для наших целей, нам нужны веса CheXNet. Итак, загрузите их снизу:

Веса CheXNet (доступны на github brucechou1983): скачать отсюда

После того, как мы загрузили веса, мы скопируем их в наш рабочий каталог, чтобы мы могли импортировать их позже.

Итак, давайте начнем сейчас.

  • Во-первых, импортируйте необходимые библиотеки (обратите внимание, что это только реализация, нам может понадобиться больше библиотек в зависимости от проекта):
  • Затем мы импортируем веса и назначим их некоторой переменной:
  • После этого мы создадим модель (обратите внимание, что нам может потребоваться изменить некоторые значения в зависимости от необходимости):

Если до сих пор все прошло успешно, мы получим вывод:

Затем мы можем пойти и скомпилировать модель:

Теперь наша модель обучена и скомпилирована и готова делать некоторые прогнозы с точностью, продемонстрированной моделью глубокого обучения CheXNet.

Авторы упомянули сравнение точности на своем сайте. Это показано ниже:

Для примера, показывающего полную реализацию CheXNet на образце Kaggle Dataset Chest X-ray Penumonia, ознакомьтесь с полным кодом на my github.

Или напишите моя записная книжка Google Colab.