Визуальная интерпретация сверточных сетей — сопоставление активации классов

обучение с подкреплением

Эта статья была впервые опубликована на:Уокер ИИ

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

1. Рабочий механизм Global Average Pooling

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

2. Что такое САМ?

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

Предположим, что в последнем слое есть n карт объектов, обозначенных какA1,A2,...AnA^1,A^2,...A^n, нейрон в слое классификации имеет n весов, и один нейрон соответствует классу, пусть первыйiiВес каждого нейронаw1,w2,...wnш ^ 1, ш ^ 2,... ш ^ пC класса генерируется в режиме CAM:

LCAMc=i=1nwicAi(Режим1)L_{CAM}^c = \sum_{i=1}^nw_i^cA^i (уравнение 1)

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

2.1. Почему этот расчет может получить область, связанную с категорией

Используя GAP для представления глобальной средней функции объединения, следуя приведенным выше обозначениям, классификационная оценка c-го класса равнаScS_c, вес GAPwicw_i^c, размер карты признаковc1*c2c_1*c_2, первоеiiкарта объектовkkрядjjЗначение пикселя столбцаAkjiA_{kj}^i, то есть:

Sc=i=1nwicGAP(Ai)S_c = \sum_{i=1}^n w_i^c GAP(A_i)
=i=1nwic1Zk=1c1j=1c2Akji= \sum_{i=1}^n w_i^c \frac 1Z \sum_{k=1}^{c_1} \sum_{j=1}^{c_2}A_{kj}^i
=1Zi=1nk=1c1j=1c2wicAkji(Режим2)= \frac 1Z \sum_{i=1}^n \sum_{k=1}^{c_1} \sum_{j=1}^{c_2} w_i^c A_{kj}^i (уравнение 2)

Пиксель на карте объектов соответствует области исходного изображения, а значение пикселя представляет собой объект, извлеченный из области, как видно из приведенной выше формулы.ScS_cРазмер определяется значением пикселя и весом на карте функции. Продукт значения пикселя и веса на карте объекта больше 0, что способствует классификации образцов в этот класс, то есть CNN считает, что CNN считает, что Эта область в исходном изображении имеет функции, связанные с классом. Уравнение 1 - это рассчитать, имеет ли каждое значение пикселя на карте функции, связанные с категором функции. Если это так, мы можем пособиться, чтобы увидеть, какую часть исходного изображения этот пиксель соответствует. Начальная точка зазора также такая же, то есть во время процесса обучения сеть учится определить, какая область в исходном изображении имеет функции, связанные с категором. Поскольку разрыв удаляет избыточные полностью подключенные слои и не вносит параметры, пробел может снизить риск переоценки. Результаты визуализации также показывают, что правильная классификация CNN действительно связана с тем, что правильная категория, связанные с категориями в исходном изображении.

2.2 Дефекты CAM

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

3. Grad-CAM

3.1 Структура Grad-CAM

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

ακc=1ZijycαAijk(Режим3)\alpha_\kappa^c = \frac 1Z \sum_i \sum_j \frac {y^c}{\alpha A_{ij}^k} (уравнение 3)

Среди них Z представляет количество пикселей на карте объектов,ycy^cпредставляет градиент оценки c-го класса,AijkA_{ij}^kозначает первыйkkКарта функции,(i,j)(i,j)Значение пикселя в этом месте. Затем получают веса соответствующих категорий всех карт объектов, а затем взвешивают и суммируют, чтобы можно было получить окончательную тепловую карту Формула суммирования выглядит следующим образом:

LGradCAMc=ReLU(kαkcAk)(Режим4)L_{Град-CAM}^c = ReLU(\sum_k \alpha_k^c A^k) (уравнение 4)

3.2 Эффект Grad-CAM

4. Вывод

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

5. Реализация кода

https://github.com/jacobgil/keras-cam

использованная литература

  • B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Object detectors emerge in deep scene cnns. International Conference on Learning Representations, 2015.

  • Computers - Computer Graphics; Investigators from Georgia Institute of Technology Have Reported New Data on Computer Graphics (Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization). 2020, :355-.


PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!