Визуальные объяснения из глубоких сетей

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

Grad-CAM может использоваться для локализации со слабым контролем, т.е. определения местоположения конкретных объектов с использованием модели, которая была обучена только меткам всего изображения, а не явным аннотациям местоположения.

Grad-CAM также может использоваться для сегментации со слабым контролем, при которой модель предсказывает все пиксели, принадлежащие определенным объектам, без необходимости использования меток на уровне пикселей для обучения:

Наконец, Grad-CAM можно использовать для лучшего понимания модели, например, путем предоставления информации о режимах отказа модели:

Основная ссылка на этот пост - это расширенная версия статьи Grad-CAM: Selvaraju et al. «Grad-CAM: визуальные объяснения из глубоких сетей с помощью градиентной локализации. Международный журнал компьютерного зрения, 2019 г. »

Предыдущая версия статьи Grad-CAM была опубликована на Международной конференции по компьютерному зрению (ICCV) 2017.

Grad-CAM как постфактум

Grad-CAM - это форма апостериорного внимания, означающая, что это метод создания тепловых карт, который применяется к уже обученной нейронной сети после завершения обучения и фиксированных параметров. Это отличается от обучаемого внимания, которое включает в себя обучение тому, как создавать карты внимания (тепловые карты) во время обучения путем изучения определенных параметров. Для более глубокого обсуждения post-hoc и внимания, которое можно обучить, см. Этот пост.

Grad-CAM как обобщение CAM

Grad-CAM не требует определенной архитектуры CNN. Grad-CAM - это обобщение CAM (сопоставление активации классов), метода, который требует использования определенной архитектуры.

CAM требует архитектуры, которая применяет глобальный средний пул (GAP) к окончательным сверточным картам функций, за которым следует один полностью связанный слой, который производит прогнозы:

На приведенном выше эскизе квадраты A1 (красный), A2 (зеленый) и A3 (синий) представляют карты характеристик, созданные последним сверточным слоем CNN. Чтобы использовать метод CAM, на котором основан Grad-CAM, мы сначала берем среднее значение каждой карты функций для получения единственного числа для каждой карты. В этом примере у нас есть 3 карты характеристик и, следовательно, 3 числа; 3 числа показаны на эскизе в виде крошечных цветных квадратов. Затем мы применяем полносвязный слой к этим трем числам, чтобы получить решения по классификации. Для выходного класса «кошка» прогноз будет основан на 3 весах (w1, w2 и w3). Чтобы создать тепловую карту CAM для «кошки», мы вычисляем взвешенную сумму карт функций, используя веса «кошки» последнего полностью подключенного слоя:

Обратите внимание, что количество карт объектов необязательно должно быть три - это может быть произвольное k. Более подробное объяснение того, как работает CAM, можно найти в этом посте. Понимание CAM важно для понимания Grad-CAM, поскольку эти два метода тесно связаны.

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

Обзор Grad-CAM

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

Подобно CAM, Grad-CAM использует карты характеристик, созданные последним сверточным слоем CNN. Авторы Grad-CAM утверждают, что «мы можем ожидать, что последние сверточные слои будут иметь лучший компромисс между семантикой высокого уровня и подробной пространственной информацией».

Вот эскиз, показывающий части модели нейронной сети, относящиеся к Grad-CAM:

CNN состоит из нескольких сверточных слоев (обозначенных на схеме как «conv»). Карты характеристик, созданные последним сверточным слоем, показаны как A1, A2 и A3, как и в эскизе CAM.

На этом этапе для CAM нам нужно будет сделать глобальный средний пул с последующим полностью подключенным уровнем. Для Grad-CAM мы можем делать все, что угодно - например, несколько полносвязных слоев - что показано на скетче как «любые слои нейронной сети». Единственное требование - слои, которые мы вставляем после A1, A2 и A3, должны быть дифференцируемыми, чтобы мы могли получить градиент. Наконец, у нас есть результаты нашей классификации для самолетов, собак, кошек, людей и т. Д.

Разница между CAM и Grad-CAM заключается в том, как взвешиваются карты функций A1, A2 и A3 для создания окончательной тепловой карты. В CAM мы взвешиваем эти карты функций, используя веса, взятые из последнего полностью подключенного уровня сети. В Grad-CAM мы взвешиваем карты функций, используя «альфа-значения», которые вычисляются на основе градиентов. Следовательно, Grad-CAM не требует определенной архитектуры, потому что мы можем вычислять градиенты через любой слой нейронной сети, какой захотим. «Град» в Grad-CAM означает «градиент».

Результатом Grad-CAM является «классовая карта локализации», т.е. тепловая карта, где горячая часть соответствует определенному классу:

Если существует 10 возможных выходных классов, то для конкретного входного изображения вы можете создать 10 различных тепловых карт Grad-CAM, по одной тепловой карте для каждого класса.

Подробная информация о Grad-CAM

Сначала немного обозначений:

Другими словами, y ^ c - это исходный результат нейронной сети для класса c до применения softmax для преобразования исходной оценки в вероятность.

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

Grad-CAM состоит из трех этапов:

Шаг 1. Вычислить градиент

Конкретное значение градиента, вычисляемое на этом этапе, зависит от выбранного входного изображения, поскольку входное изображение определяет карты функций A ^ k, а также конечный результат класса y ^ c, который создается.

Для входного двумерного изображения этот градиент является трехмерным и имеет ту же форму, что и карты функций. Существует k карт объектов, каждая из которых имеет высоту v и ширину u, т.е. вместе карты объектов имеют форму [ k, v, u]. Это означает, что градиенты, вычисленные на шаге 1, также будут иметь форму [k, v, u].

В приведенном ниже эскизе k = 3, поэтому есть три карты объектов u x v и три карты u x v градиенты:

Шаг 2. Рассчитайте альфу путем усреднения градиентов.

На этом этапе мы вычисляем альфа-значения. Значение альфа для класса c и карты функций k будет использоваться на следующем этапе в качестве веса, применяемого к карте функций A ^ k. (В CAM вес, примененный к карте характеристик A ^ k, является весом w_k в последнем полностью связанном слое.)

Напомним, что наши градиенты имеют форму [k, v, u]. Мы выполняем объединение по высоте v и ширине u, так что мы получаем что-то формы [k, 1, 1] или для упрощения , всего [k]. Это наши альфа-значения k.

Шаг 3. Рассчитайте окончательную тепловую карту Grad-CAM

Теперь, когда у нас есть альфа-значения, мы используем каждое альфа-значение в качестве веса соответствующей карты функций и вычисляем взвешенную сумму карт функций в качестве окончательной тепловой карты Grad-CAM. Затем мы применяем операцию ReLU, чтобы выделить только положительные значения и превратить все отрицательные значения в 0.

Разве тепловая карта Grad-CAM не будет слишком маленькой?

Тепловая карта Grad-CAM имеет размер u x v, который является размером окончательной сверточной карты функций:

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

Оказывается, это нормально, если тепловая карта Grad-CAM u x v намного меньше исходного размера входного изображения. Все, что нам нужно сделать, это обновить крошечную тепловую карту u x v, чтобы она соответствовала размеру исходного изображения, прежде чем мы сделаем окончательную визуализацию.

Например, вот небольшая тепловая карта размером 12 x 12:

Теперь вот та же тепловая карта, увеличенная до 420 x 420 с использованием пакета Python cv2:

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

import cv2 
import matplotlib 
import matplotlib.pyplot as plt 
small_heatmap = CalculateGradCAM(class='cat') 
plt.imshow(small_heatmap, cmap='rainbow') 
#Upsample the small_heatmap into a big_heatmap with cv2: 
big_heatmap = cv2.resize(small_heatmap, dsize=(420, 420), 
                         interpolation=cv2.INTER_CUBIC) 
plt.imshow(big_heatmap, cmap='rainbow')

Реализация Grad-CAM

Реализация Grad-CAM в Pytorch доступна здесь.

Еще примеры Grad-CAM

Grad-CAM применяется во многих областях исследований и особенно популярен в медицинских изображениях. Вот несколько примеров:

Предостережение: объяснимость - это не интерпретируемость. Любой механизм пост-фокального внимания не может быть оптимальным для принятия решений с высокими ставками

«Объяснимость» - это не то же самое, что «интерпретируемость».

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

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

Grad-CAM - это метод «объяснимости», означающий, что он предназначен для объяснения того, что сделал обученный CNN. Grad-CAM не делает модель «интерпретируемой». Хотя тепловые карты Grad-CAM часто имеют смысл, они не обязательны, чтобы иметь смысл, и их нужно использовать осторожно - особенно для чувствительных приложений, таких как интерпретация медицинских изображений, область, в которой Grad-CAM особенно подходит. популярный.

Если вы работаете со слабо контролируемой локализацией или слабо контролируемой сегментацией, Grad-CAM определенно будет полезным методом. Если вы заинтересованы в отладке модели и более глубоком понимании того, почему модель допускает определенные ошибки, Grad-CAM также может быть полезен. Если вы работаете над приложением с конфиденциальными данными, используемыми для реальных решений с высокими ставками, любой механизм постфактум (т.е. любой метод создания тепловых карт, который прикрепляется после того, как сеть был обучен), включая Grad-CAM, потенциально неуместен, в зависимости от того, как он будет использоваться. Если вас интересуют интерпретируемые модели машинного обучения, я рекомендую эту отличную статью: Синтия Рудин« Прекратите объяснять модели машинного обучения черного ящика для принятия сложных решений, и вместо этого используйте интерпретируемые модели

Предупреждение: используйте Vanilla Grad-CAM, а не Guided Grad-CAM

В качестве еще одного предостережения, о котором следует помнить, в документе Grad-CAM упоминается вариант Grad-CAM под названием Guided Grad-CAM, который объединяет Grad-CAM с другой техникой визуализации тепловой карты CNN, называемой управляемое обратное распространение. Я обсуждаю управляемое обратное распространение в этом посте и этом посте. Краткое изложение - это недавняя работа Adebayo et al. и Nie et al. предполагает, что управляемое обратное распространение выполняет частичное восстановление изображения и действует как детектор границ, а не обеспечивает понимание обученной модели. Поэтому лучше не использовать управляемое обратное распространение.

Хорошая новость заключается в том, что ванильный метод Grad-CAM, обсуждаемый в этом посте (т.е. Grad-CAM без управляемого обратного распространения), проходит проверку на работоспособность Адебайо и др. И является отличный вариант для использования.

Резюме

  • Grad-CAM - это популярный метод создания тепловой карты для конкретного класса на основе определенного входного изображения, обученной CNN и выбранного интересующего класса.
  • Grad-CAM тесно связан с CAM.
  • Grad-CAM совместим с любой архитектурой CNN, если уровни дифференцируемы.
  • Grad-CAM можно использовать для понимания предсказаний модели, локализации со слабым контролем или сегментации со слабым контролем.
  • Grad-CAM - это метод объяснимости, а не интерпретируемости, поэтому его следует использовать с осторожностью в любой чувствительной области.
  • Vanilla Grad-CAM - лучший выбор, чем Guided Grad-CAM.

Первоначально опубликовано на http://glassboxmedicine.com 29 мая 2020 г.