По данным Всемирной организации здравоохранения (ВОЗ), на пневмонию приходится около 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.