CAM градиента показывает почему позади решений глубокого обучения

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

CAM градиента является обобщением метода отображения активации класса (CAM). Для методов отображения активации на данных о веб-камере реального времени смотрите, Исследуют Сетевые Предсказания Используя Отображение Активации Класса. CAM градиента может также быть применен к примерам неклассификации, таким как регрессия или семантическая сегментация. Для примера, показывающего, как использовать CAM градиента, чтобы исследовать предсказания сети семантической сегментации, смотрите, Исследуют Сеть Семантической Сегментации Используя 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 правильно классифицирует изображение как золотистого ретривера. Но почему? Что характеристики изображения заставляют сеть делать этой классификацией?

CAM градиента объясняет почему

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

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

Вычислите карту CAM градиента.

map = gradCAM(net,img,classfn);

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

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

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

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

Ссылки

[1] Selvaraju, R. R. М. Когсвелл, A. Десять кубометров, Р. Ведэнтэм, Д. Пэрих и Д. Бэтра. "CAM градиента: Визуальные Объяснения от Глубоких Сетей через Основанную на градиенте Локализацию". На Международной конференции IEEE по вопросам Компьютерного зрения (ICCV), 2017, стр 618–626. Доступный в Grad-CAM на веб-сайте Открытого доступа Основы Компьютерного зрения.

Смотрите также

| | |

Похожие темы