Глубокое обучение

Использование машинного обучения для обнаружения COVID-19 на рентгенограммах грудной клетки

Информация от команды Kaggle, которая входит в 1,3% лучших по всему миру.

Автор: Юсеф Раби, инженер по машинному обучению в Max Kelsen.

Фон

В настоящее время COVID-19 можно диагностировать с помощью полимеразной цепной реакции (ПЦР), однако этот процесс идет медленно, для получения результатов требуются часы или даже дни. С другой стороны, рентгенограмму грудной клетки можно получить за считанные минуты.

Если модель машинного обучения сможет обнаруживать COVID-19 на рентгенограммах грудной клетки с помощью компьютерного зрения, это может значительно ускорить диагностику COVID-19.

Kaggle — это сообщество из более чем 168 000 специалистов по данным, в котором регулярно проводятся соревнования по решению задач в области науки о данных. Kaggle вместе с партнерами, включая SIIM, FISABIO и RSNA, недавно провела соревнование по выявлению и локализации аномалий COVID-19 на рентгенограммах грудной клетки, в котором моя команда заняла 17-е место из 1305 команд по всему миру (1,3% лучших). .

Из описания конкурса:

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

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

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

Данные

Нам предоставили 6054 исследования рентгенограмм органов грудной клетки. В каждом исследовании может быть одно или несколько изображений (например, рентгенограмм грудной клетки) одного и того же пациента. Всего было 6334 изображения.

В конкурсе использовались два источника данных: данные BIMCV-COVID19, опубликованные Банком данных медицинской визуализации региона Валенсия, и данные MIDRC-RICORD, опубликованные Архивом визуализации рака.

Изображения были предоставлены в формате DICOM. Изображения, принадлежащие исследованию, находились в подпапке этого исследования.

Для каждого изображения, если присутствовали помутнения легких, нам были предоставлены ограничивающие рамки для их местоположения. Помутнение легких может быть связано с COVID-19, другими инфекциями пневмонии или неопределенными источниками.

Для каждого исследования нам была предоставлена ​​метка уровня исследования. Это был один из [‘отрицательный результат на пневмонию’, ‘типичный для COVID-19’, ‘неопределенный для COVID-19’, ‘нетипичный для COVID-19’]. Ниже приведены два примера изображений из исследований, принадлежащих к типичному для COVID-19 и неопределенному для COVID-19 классам соответственно, а также аннотации ограничительной рамки вокруг затемнений легких.

Значение меток можно получить из отрывка из статьи, схема маркировки которой использовалась для аннотирования изображений. [1]

Задание

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

Из описания конкурса:

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

Представление должно было содержать прогнозы как классификации, так и обнаружения объектов, и использовалась единая метрика; средняя средняя точность (mAP).

Подход

Я отвечал за изучение классификационного компонента конкурса.

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

Я вел журнал идей, которые хотел попробовать, и продолжал переупорядочивать их с точки зрения приоритета и потенциальной отдачи, используя Notion.

Пример с моей страницы управления экспериментом Notion:

Первое, что я делаю после этапа исследования, — настраиваю надежную структуру перекрестной проверки (CV). Для этого конкурса я выбрал Стратифицированную группу K Fold, стратифицированную по идентификатору исследования и идентификатору этикетки.

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

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

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

После того, как чистый базовый уровень установлен, я записываю баллы CV и Leaderboard (LB). Я веду журнал всех оценок CV и LB с описаниями экспериментов. Это помогает мне оценить взаимосвязь между местным CV и LB, а также направляет подбор и выбор представления в дальнейшем.

Пример журнала эксперимента:

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

Ключевым моментом здесь является правильный уровень абстракции в конвейере, чтобы разблокировать необходимую скорость итерации.

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

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

Что сработало

Вначале я использовал Grad-CAM [2] для визуализации областей, влияющих на решение сети. Я заметил, что черные углы на рентгенограммах грудной клетки всегда в большей степени способствовали принятию решения, чем другие соответствующие области. Это видно из следующего полного рентгеновского изображения, показывающего активацию высокого градиента в левом нижнем углу изображения.

Для диагностики COVID-19 нам нужны только легкие. Я решил построить детектор легких, чтобы мы могли передавать в нижестоящий классификатор только изображения легких. Я полагал, что это поможет двумя способами:

  1. Чтобы уменьшить потенциальный шум от областей, не связанных с легкими, которые сеть использует для сокращения
  2. Чтобы обеспечить более эффективное обучение, поскольку мы тренируемся только в областях, имеющих отношение к задаче (например, легкие)

Наличие детектора легких улучшило нашу модель классификации примерно на 4%. Мы придерживались его до конца соревнований.

Одним из ключевых моментов этого соревнования были вспомогательные потери.

Алгоритмы глубокого обучения учатся на обратной связи, обеспечиваемой функцией потерь, а именно путем обратного распространения градиентов потерь и использования их для обновления параметров сети.

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

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

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

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

Первый предназначен для сети, обученной на полных изображениях без дополнительных потерь, а второй — для той же сети, обученной на легких с дополнительными потерями. Потери при валидации примерно в 1,16 раза превышают потери при обучении в не вспомогательном случае, в то время как они примерно в 1,07 раз превышают потери при обучении во вспомогательном случае, при этом оценки mAP примерно на 10% выше во вспомогательном случае (не показано на графике). Локализация легких и вспомогательные потери упорядочиваются и улучшают обучение сети.

Для этого конкурса нам были предоставлены оба ярлыка уровня исследования («отрицательный результат для пневмонии», «типичный для COVID-19», «неопределенный для COVID-19» или «нетипичный для COVID-19»), а также аннотации ограничивающей рамки. для мест непрозрачности.

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

Использование вспомогательных потерь сегментации улучшило нашу модель классификации примерно на 5%. Однако это произошло в результате многих экспериментов, направленных на изучение того, как максимизировать преимущества вспомогательных потерь.

Сначала мы использовали соотношение 1:1 между классификационными потерями (кросс-энтропия) и вспомогательными потерями (бинарная кросс-энтропия). Я заметил, что использование более высокого соотношения потерь классификация:сегментация обеспечило улучшение, и мы остановились на использовании соотношения потерь классификация:сегментация 1:10.

Еще одно дополнительное преимущество связано с разрешением изображения, используемым для бинарной маски. Первоначально мы использовали карты объектов из предпоследнего блока в сети, передавая их в два сверточных слоя и вычисляя потери по бинарной маске непрозрачности с пониженной дискретизацией (32x32).

Я попытался использовать еще пару сверточных слоев и повышать частоту прогнозируемой маски непрозрачности в процессе, чтобы вычислить потери по сравнению с бинарной маской при разрешении входного изображения (448x448). Это улучшило результаты, и мы придерживались его до конца соревнований. Одна возможность состоит в том, что вспомогательные преимущества были более выражены при более высоком разрешении, потому что его было еще труднее перенастроить.

Мы начали с EfficientNet-B3, но позже перешли на EfficientNetV2_L.

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

Наша сетевая архитектура:

Дополнения, с которыми мы пошли, были:

Другие детали обучения:

  • SGD со скоростью обучения 1,0e-2, импульсом 0,9 и уменьшением веса 1,0e-5
  • Планировщик CosineAnnealingLR
  • Обучено 10 эпох каждой модели сгиба
  • 4-кратное увеличение времени тестирования
  • Обучение смешанной точности и логический вывод

Что не сработало

Для этого конкурса было много потенциально полезных внешних данных. Данные других соревнований по пневмонии и наборы данных COVID-19 с открытым исходным кодом, среди прочего.

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

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

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

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

Мы были предупреждены об этом гроссмейстером в нашей команде (CPMP), но было слишком поздно переобучать модели за 4 дня до конца, поскольку общий набор данных приближался к 50 000 образцов.

По этой причине большинство наших экспериментов с внешними данными потерпели неудачу.

В итоге

Что помогло нам, когда дело дошло до классификации исследований:

  • Идеи GradCAM привели к созданию детектора легких для минимизации шума и повышения эффективности тренировок.
  • Вспомогательные потери для регуляризации (в нашем ансамбле в качестве вспомогательных потерь использовались модели с BCE и потерями в кости)
  • Более мощный декодер для вспомогательной задачи и использование исходного размера изображения вместо карты признаков с пониженной дискретизацией для расчета вспомогательных потерь.
  • EfficientNetV2 вместо EfficientNet
  • Сглаживание меток

Некоторые из вещей, которые не сработали:

  • Использование внешних данных (вручную или псевдоразмеченных)
  • Различные функции потерь (фокусная, умеренная softmax, Lovasz для вспомогательной)
  • SwinTransformer [3]
  • Взвешивание потери каждого изображения обратной частотой изображений в исследовании
  • Просто тренируйся дважды [4]
  • Смешение [5]
  • Катмикс [6]
  • Случайное стирание [7]

Я хотел бы поблагодарить своих товарищей по команде, Рохита Сингха, Джайдипа Валани, Иоанниса Мейнтаниса и Жана-Франсуа Пьюже. Я многому научился из наших дискуссий.

Рекомендации

[1] Литманович Д.Е., Чанг М., Киркбрайд Р.Р., Кицка Г., Канне Дж.П. Обзор результатов рентгенографии грудной клетки при пневмонии, вызванной COVID-19, и предлагаемый язык отчета. Журнал торакальной визуализации. 2020 14 ноября; 35 (6): 354–60.

[2] Selvaraju, R.R., Das, A., Vedantam, R., Cogswell, M., Parikh, D. and Batra, D., 2016. Grad-CAM: Почему ты так сказал? препринт arXiv arXiv:1611.07450.

[3] Лю, З., Линь, Ю., Цао, Ю., Ху, Х., Вэй, Ю., Чжан, З., Линь, С. и Го, Б., 2021. Преобразователь Swin: Иерархический преобразователь зрения с помощью сдвинутых окон. препринт arXiv arXiv:2103.14030.

[4] Лю, Э.З., Хагу, Б., Чен, А.С., Рагунатан, А., Кох, П.В., Сагава, С., Лян, П. и Финн, К., 2021 г., июль. Просто тренируйтесь дважды: повышение устойчивости группы без информации о группе обучения. В Международной конференции по машинному обучению (стр. 6781–6792). ПМЛР.

[5] Чжан, Х., Сиссе, М., Дофин, Ю.Н. и Лопес-Пас, Д., 2017. Путаница: Помимо минимизации эмпирического риска. препринт arXiv arXiv:1710.09412.

[6] Юн, С., Хан, Д., О, С.Дж., Чун, С., Чоу, Дж. и Ю, Ю., 2019. Cutmix: стратегия регуляризации для обучения сильных классификаторов с локализуемыми функциями. В Материалы Международной конференции IEEE/CVF по компьютерному зрению (стр. 6023–6032).

[7] Чжун З., Чжэн Л., Канг Г., Ли С. и Ян Ю., 2020 г., апрель. Случайное стирание данных. В Материалы конференции AAAI по искусственному интеллекту (Том 34, №07, стр. 13001–13008).

[8] Де ла Иглесиа Вайя, М., Саборит, Дж. М., Монтелл, Дж. А., Пертуса, А., Бустос, А., Касорла, М., Галант, Дж. и Барбер, X., Д. Ороско -Бельтран, Ф. Гарка-а-Гарка, М. Капаррас, Г. Гонсалес, Дж. М. Салинас, Bimcv covid-19+: большой аннотированный набор данных рентгеновских и компьютерных томографов пациентов с covid-19 (2020 г.). препринт arXiv arXiv:2006.01174.