Преамбула

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

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

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

В первой части я расскажу о проблеме неправильной диагностики малярии.

Используемое программное обеспечение

  1. Ядра Kaggle
  2. библиотека fastai, созданная как оболочка вокруг платформы Facebook Pytorch. Большое спасибо Джереми и Рэйчел за курс, на который я сейчас зачислен.

Визуализация клеток крови малярии

Малярия является одной из самых страшных болезней во всем мире. Малярию вызывают паразиты Plasmodium. Паразиты передаются людям через укусы инфицированных самок комаров Anopheles, называемых переносчиками малярии. Существует 5 видов паразитов, вызывающих малярию у человека, из них 2 вида — P. falciparum и P. vivax — представляют наибольшую угрозу.

  • В 2017 году П. falciparum приходится 99,7% оценочных случаев малярии в Африканском регионе ВОЗ, а также в большинстве случаев в регионах ВОЗ Юго-Восточной Азии (62,8%), Восточного Средиземноморья (69%) и Западная часть Тихого океана (71,9%).
  • П. vivax является преобладающим паразитом в Американском регионе ВОЗ, на долю которого приходится 74,1% случаев малярии.

На изображении ниже показан цикл заражения малярией:

Согласно отчету ВОЗ, только в 2017 году было зарегистрировано около 200 миллионов случаев малярии примерно в 90 странах, и от малярии погибло около 450 000 человек.

На этом изображении показано распространение малярии по всему миру:

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

В этом отчете NCBI написано и я цитирую:

“ Результаты показали, что частота ложноположительных диагнозов малярии составила 75,6%, а ложноотрицательных – 0,01%. Исследование выявило плохие навыки врачей общей практики и GM в диагностике малярии, поскольку 43% врачей общей практики и 44% GM не смогли поставить ни одного истинно положительного диагноза малярии»

Согласно веб-странице CDC, диагностика малярии может быть затруднена по следующим причинам:

  • Там, где малярия больше не является эндемичной (например, в Соединенных Штатах), медицинские работники могут быть не знакомы с этой болезнью. Клиницисты, наблюдающие больного малярией, могут забыть рассмотреть малярию среди потенциальных диагнозов и не назначить необходимые диагностические тесты. Лаборантам может не хватать опыта работы с малярией, и они не могут обнаружить паразитов при исследовании мазка крови под микроскопом.
  • В некоторых эндемичных по малярии районах передача малярии настолько интенсивна, что значительная часть населения заражается, но не заболевает паразитами. Такие носители выработали достаточный иммунитет, чтобы защитить их от малярийной болезни, но не от малярийной инфекции. В этой ситуации обнаружение малярийных паразитов у больного не обязательно означает, что заболевание вызвано паразитами.

Теперь мы увидим, может ли Deep Learning решить проблему неправильной диагностики малярии.

Данные, которые мы будем использовать, можно указать здесь. Набор данных содержит в общей сложности 27 558 изображений клеток с одинаковыми экземплярами зараженных и неинфицированных клеток. Чтобы собрать набор данных, в больнице Читтагонгского медицинского колледжа, Бангладеш, были собраны и сфотографированы окрашенные по Гимзе тонкие предметные стекла мазков крови от 150 инфицированных P. falciparum и 50 здоровых пациентов. Изображения были вручную прокомментированы специалистом по чтению слайдов в Исследовательском отделе тропической медицины Махидол-Оксфорд в Бангкоке, Таиланд.

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

Нижеприведенные коды подготовят, преобразуют и нормализуют данные:

np.random.seed(42)
tfms = get_transforms(flip_vert=True)
data = ImageDataBunch.from_folder(path, train=".", valid_pct=0.20, ds_tfms = tfms, bs=32, size=224,  num_workers=0).normalize(imagenet_stats)

Это два класса в наших данных:

print(data.classes)
['Parasitized', 'Uninfected']

Теперь давайте посмотрим, как выглядят оба типа изображений ячеек:

Давайте обучим нашу модель с помощью методов трансферного обучения — мы будем использовать ResNet50 (для всех вариантов использования), который обучается на наборе данных ImageNet, а затем использовать «fit_one_cycle» для обучения модели на нашем наборе данных.

learn = cnn_learner(data, models.resnet50, metrics = accuracy, model_dir="/tmp/model/")
learn.fit_one_cycle(4)

Это приводит к следующей точности %:

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

interp = ClassificationInterpretation.from_learner(learn)
losses, idxs = interp.top_losses()
len(data.valid_ds) == len(losses) == len(idxs)
interp.plot_top_losses(9, figsize=(12,12))

Давайте построим матрицу путаницы, которая расскажет нам об истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных результатах:

Теперь давайте разморозим модель и выясним диапазон лучших скоростей обучения, чтобы улучшить прогнозирующую способность модели. (В этой статье я объяснил причину «fit_one_cycle и важность скорости обучения)

learn.unfreeze()
learn.load('stage-1')
learn.lr_find()
learn.recorder.plot()

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

learn.unfreeze()
learn.fit_one_cycle(6, max_lr = slice(1e-6, 1e-4))

Точность прогноза 97,3%

Если мы сейчас увидим матрицу путаницы, мы увидим, что наши прогнозы улучшились:

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

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

Эта работа сохранена в моем ядре kaggle.