exponenta event banner

Компания Grad-CAM раскрывает причины принятия решений о глубоком обучении

В этом примере показано, как использовать метод градиентно-взвешенного сопоставления активации класса (Grad-CAM), чтобы понять, почему сеть глубокого обучения принимает решения по классификации. Grad-CAM, изобретенный Selvaraju и соавторами [1], использует градиент оценки классификации относительно сверточных признаков, определяемых сетью, чтобы понять, какие части изображения наиболее важны для классификации. В этом примере для изображений используется предварительно обученная сеть GoogLeNet.

Grad-CAM - это обобщение методики class activation mapping (CAM). Методы сопоставления активации для данных веб-камеры в режиме реального времени см. в разделе Исследование сетевых прогнозов с использованием сопоставления активации классов. Grad-CAM также может применяться к неклассификационным примерам, таким как регрессия или семантическая сегментация. Пример использования Grad-CAM для исследования прогнозов семантической сети сегментации см. в разделе Исследование семантической сети сегментации с помощью Grad-CAM.

Загрузить предварительно обученную сеть

Загрузите сеть GoogLeNet.

net = googlenet;

Классифицировать изображение

Прочтите размер изображения GoogLeNet.

inputSize = net.Layers(1).InputSize(1:2);

Груз sherlock.jpg., изображение золотистого ретривера, включенное в этот пример.

img = imread("sherlock.jpg");

Измените размер изображения в соответствии с размерами сетевого ввода.

img = imresize(img,inputSize);

Классифицируйте изображение и отображайте его вместе с его классификацией и оценкой классификации.

[classfn,score] = classify(net,img);
imshow(img);
title(sprintf("%s (%.2f)", classfn, score(classfn)));

GoogLeNet правильно классифицирует изображение как золотистый ретривер. Но почему? Какие характеристики изображения заставляют сеть выполнять эту классификацию?

Компания Grad-CAM объясняет, почему

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

gradCAM функция вычисляет карту важности, принимая производную выходного сигнала понижающего уровня для данного класса относительно сверточной карты признаков. Для задач классификации: gradCAM функция автоматически выбирает подходящие слои для вычисления карты важности. Можно также указать слои с помощью 'ReductionLayer' и 'FeatureLayer' аргументы «имя-значение».

Вычислите карту Grad-CAM.

map = gradCAM(net,img,classfn);

Отображение карты Grad-CAM поверх изображения с помощью 'AlphaData' значение 0,5. 'jet' цветовая карта имеет глубокий синий в качестве самого низкого значения и глубокий красный в качестве самого высокого.

imshow(img);
hold on;
imagesc(map,'AlphaData',0.5);
colormap jet
hold off;
title("Grad-CAM");

Очевидно, что наибольшее влияние на классификацию оказывают верхнее лицо и ухо собаки.

Другой подход к изучению причин глубоких классификаций сетей см. в разделе occlusionSensitivity и imageLIME.

Ссылки

[1] Селвараджу, Р. Р., М. Когсвелл, А. Дас, Р. Ведантам, Д. Парих и Д. Батра. «Grad-CAM: визуальные объяснения глубоких сетей с помощью локализации на основе градиента». В IEEE Международная конференция по компьютерному зрению (ICCV), 2017, стр. 618-626. Доступно по адресу Grad-CAM на сайте открытого доступа Фонда компьютерного зрения.

См. также

| |

Связанные темы