Grad-CAM
Grad-CAM (Gradient-weighted Class Activation Mapping) — это метод визуализации решений свёрточных нейронных сетей, позволяющий определить, какие области входного изображения наиболее значимы для предсказания определённого класса. Он относится к классу методов объяснимого искусственного интеллекта (XAI) и используется для интерпретации работы моделей компьютерного зрения без необходимости изменения их архитектуры или повторного обучения.
История возникновения
Метод Grad-CAM был предложен в 2017 году группой исследователей из Университета Джорджии, Технологического института Виргинии и компании Microsoft Research. Основными авторами стали Рампрасад Селвараджу, Майкл Когсвелл, Арун Дас, Рамон Видал, Саймон Парк и Дэвид Баттист. Работа была представлена на Международной конференции по компьютерному зрению (ICCV) в 2017 году. Grad-CAM стал развитием более раннего метода CAM (Class Activation Mapping), который требовал замены полносвязных слоёв сети на глобальный средний пулинг и повторного обучения модели. Grad-CAM устранил эти ограничения, сделав метод применимым к любой свёрточной нейронной сети без модификации.
Принцип работы
Grad-CAM основан на анализе градиентов целевого класса по отношению к картам признаков последнего свёрточного слоя сети. Процесс включает несколько этапов:
- Прямой проход: изображение подаётся на вход обученной свёрточной нейронной сети, и для интересующего класса вычисляется значение функции активации (логит) до применения softmax.
- Вычисление градиентов: для каждого канала карты признаков последнего свёрточного слоя вычисляется градиент логита класса по отношению к активациям этого канала. Полученные градиенты усредняются по пространственным измерениям (ширине и высоте), что даёт веса важности для каждого канала.
- Взвешенное суммирование: карты признаков умножаются на соответствующие веса и суммируются по каналам, формируя грубую карту активации.
- Постобработка: к полученной карте применяется функция ReLU (отсечение отрицательных значений), после чего карта нормализуется и масштабируется до размеров исходного изображения. Использование ReLU обусловлено тем, что интерес представляют только положительные вклады в предсказание класса.
Результатом является тепловая карта, где области с высокими значениями (обычно отображаемые красным или жёлтым цветом) указывают на участки изображения, наиболее сильно повлиявшие на решение сети.
Отличия от других методов
Grad-CAM и CAM
- CAM требует замены полносвязных слоёв на глобальный средний пулинг и переобучения модели, что ограничивает его применимость.
- Grad-CAM работает с любой свёрточной сетью без модификации, используя градиенты для вычисления весов каналов.
Grad-CAM и методы возмущений (например, LIME, Occlusion Sensitivity)
- Методы возмущений требуют множественных прогонов сети с изменёнными версиями входного изображения, что вычислительно затратно.
- Grad-CAM выполняется за один прямой и один обратный проход, что делает его значительно быстрее.
Grad-CAM и методы на основе градиентов (например, Saliency Maps, Integrated Gradients)
- Saliency Maps (карты значимости) показывают градиенты по пикселям, что часто приводит к шумным и трудно интерпретируемым результатам.
- Grad-CAM даёт более гладкие и семантически осмысленные карты, так как работает на уровне карт признаков, а не пикселей.
Разновидности и модификации
Grad-CAM++
Предложен в 2018 году как улучшение Grad-CAM для лучшего выделения мелких объектов и нескольких экземпляров одного класса на изображении. Вместо простого усреднения градиентов используется взвешенное суммирование с учётом вторых производных (гессиана), что позволяет точнее локализовать объекты.
HiResCAM
Метод, разработанный для получения карт активации с более высоким разрешением. В отличие от Grad-CAM, который усредняет градиенты по пространственным координатам, HiResCAM сохраняет пространственную структуру градиентов, что даёт более детальные карты.
Score-CAM
Вариант, не использующий градиенты. Вместо этого веса каналов вычисляются путём маскирования карт признаков и измерения изменения выходного значения сети. Это устраняет проблемы, связанные с насыщением градиентов, и даёт более стабильные результаты.
Layer-CAM
Метод, комбинирующий подходы Grad-CAM и CAM для работы на разных слоях сети, что позволяет получать карты активации с различным уровнем детализации.
Применение
Интерпретация решений нейросетей
Grad-CAM широко используется для объяснения, почему модель приняла то или иное решение. Это особенно важно в областях, где требуется доверие к ИИ: медицина, автономное вождение, финансы.
Диагностика ошибок модели
Визуализация позволяет выявить случаи, когда сеть опирается на нерелевантные признаки (например, водяные знаки, фон или артефакты на изображении), что помогает диагностировать переобучение или проблемы с данными.
Обнаружение предвзятости
Grad-CAM может показать, что модель использует нежелательные признаки, такие как пол, раса или контекст сцены, для принятия решений. Это позволяет разработчикам корректировать модели для повышения справедливости.
Обучение и исследования
Студенты и исследователи используют Grad-CAM для понимания внутренней работы свёрточных сетей, изучения иерархии признаков и проверки гипотез о том, что именно «видит» сеть.
Промышленные приложения
- В медицине: для проверки, что модель диагностики заболеваний (например, рака кожи или пневмонии) смотрит на правильные области снимка.
- В автономном вождении: для верификации, что система распознаёт пешеходов, дорожные знаки и препятствия.
- В системах безопасности: для анализа, на какие признаки обращает внимание алгоритм обнаружения аномалий.
Ограничения и критика
Низкое пространственное разрешение
Карты Grad-CAM имеют грубое разрешение, определяемое размером карт признаков последнего свёрточного слоя. Для сетей с большим количеством пулинговых слоёв (например, VGG16) карты могут быть слишком размытыми для точной локализации мелких объектов.
Ограниченная применимость к не-свёрточным архитектурам
Grad-CAM изначально разработан для свёрточных нейронных сетей. Для трансформеров (Vision Transformer) и других архитектур требуются адаптации, такие как Grad-CAM для ViT, использующие карты внимания.
Чувствительность к выбору слоя
Результаты Grad-CAM сильно зависят от того, какой свёрточный слой выбран для анализа. Использование слишком раннего слоя даёт шумные карты, слишком позднего — слишком грубые.
Проблема множественных объектов
Grad-CAM может давать неточные результаты при наличии нескольких объектов одного класса на изображении, так как градиенты усредняются по всем экземплярам. Grad-CAM++ частично решает эту проблему.
Отсутствие каузальности
Grad-CAM показывает корреляцию между областями изображения и предсказанием, но не доказывает причинно-следственную связь. Область с высокой активацией может быть не причиной, а следствием других признаков.
Интересные факты
- Исходная статья Grad-CAM была процитирована более 10 тысяч раз (по данным Google Scholar на 2024 год), что делает её одной из самых влиятельных работ в области объяснимого ИИ.
- Метод лёг в основу многих библиотек для визуализации нейросетей, включая популярные инструменты в PyTorch и TensorFlow.
- Grad-CAM может быть использован не только для классификации, но и для задач сегментации, обнаружения объектов и генерации изображений, хотя с некоторыми модификациями.
- В 2020 году исследователи продемонстрировали, что Grad-CAM может быть использован для атак на нейросети: злоумышленник, зная карты активации, может подобрать такие возмущения, которые будут незаметны для человека, но приведут к ошибке классификации.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


