occlusionSensitivity

Определите, как входные данные влияют на выходные активации путем закрытия входа

Описание

пример

scoreMap = occlusionSensitivity(net,X,label) вычисляет карту изменения в классификационной оценке для классов, заданных label когда части входных данных X закрываются с маской. Изменение в классификационной оценке относительно исходных данных без поглощения газов. Маска закрытия перемещена через входные данные, дав изменение в классификационной оценке для каждого местоположения маски. Используйте карту поглощения газов, чтобы идентифицировать части ваших входных данных что большая часть удара классификационная оценка. Области в карте с более высокими положительными значениями соответствуют областям входных данных, которые способствуют положительно заданной метке классификации. Сеть должна содержать softmaxLayer сопровождаемый classificationLayer.

activationMap = occlusionSensitivity(net,X,layer,channel) вычисляет карту изменения в общей активации для заданного слоя и канала когда части входных данных X закрываются с маской. Изменение в счете активации относительно исходных данных без поглощения газов. Области в карте с более высокими положительными значениями соответствуют областям входных данных, которые способствуют положительно заданной активации канала, полученной путем подведения итогов по всем пространственным размерностям для того канала.

___ = occlusionSensitivity(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, 'Stride',50 устанавливает шаг маски закрытия к 50 пикселям.

Примеры

свернуть все

Импортируйте предварительно обученную сеть GoogLeNet.

net = googlenet;

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

X = imread("sherlock.jpg");

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

Отобразите изображение.

imshow(X)

Классифицируйте изображение, чтобы получить метку класса.

label = classify(net,X)
label = categorical categorical
     golden retriever 

Используйте occlusionSensitivity определить, какие части изображения положительно влияют на результат классификации.

scoreMap = occlusionSensitivity(net,X,label);

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

figure
imshow(X)
hold on
imagesc(scoreMap,'AlphaData',0.5);
colormap jet

Красные части карты показывают области, которые имеют позитивный вклад к заданной метке. Левый глаз и ухо собаки строго влияют на предсказание сети golden retriever.

Можно получить подобные результаты с помощью активации класса градиента, сопоставляющей (CAM градиента) метод. CAM градиента использует градиент классификационной оценки относительно последнего сверточного слоя в сети для того, чтобы понять, какие части изображения являются самыми важными для классификации. Для примера смотрите, что CAM градиента Показывает Почему Позади Решений Глубокого обучения.

Входные параметры

свернуть все

Обучивший сеть в виде SeriesNetwork возразите или DAGNetwork объект. Можно получить обучивший сеть путем импорта предварительно обученной сети или по образованию собственная сеть с помощью trainNetwork функция. Для получения дополнительной информации о предварительно обученных сетях, смотрите Предварительно обученные Глубокие нейронные сети.

net должен содержать один входной слой. Входным слоем должен быть imageInputLayer.

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Метка Class раньше вычисляла изменение в классификационной оценке в виде категориального, символьного массива или массива строк.

Если label задан как вектор, изменение в классификационной оценке для каждой метки класса вычисляется независимо. В этом случае, scoreMap(:,:,i) соответствует карте поглощения газов для iэлемент th в label.

Типы данных: char | string | categorical

Слой раньше вычислял изменение в активации в виде вектора символов или строкового скаляра. Задайте layer как имя слоя в net для которого вы хотите вычислить изменение в активациях.

Типы данных: char | string

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

Если channel задан как вектор, изменение в общей активации для каждого заданного канала вычисляется независимо. В этом случае, activationMap(:,:,i) соответствует карте поглощения газов для iэлемент th в channel.

Функция вычисляет изменение в общей активации из-за поглощения газов. Общая активация вычисляется путем подведения итогов по всем пространственным размерностям активации того канала. Карта поглощения газов соответствует различию между общей активацией исходных данных без поглощения газов и общей активацией для закрытых данных. Области в карте с более высокими положительными значениями соответствуют областям входных данных, которые способствуют положительно заданной активации канала.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'MaskSize',75,'OutputUpsampling','nearest' использует маску закрытия с размером 75 пикселей вдоль каждой стороны и использует интерполяцию ближайшего соседа, чтобы сверхдискретизировать выход к тому же размеру как входные данные

Размер закрытия маски в виде разделенной запятой пары, состоящей из 'MaskSize' и одно из следующих.

  • 'auto' — Используйте размер маски 20% входного размера, округленного к самому близкому целому числу.

  • Вектор формы [h w]— Используйте прямоугольную маску с высотой h и ширина w.

  • Скаляр — Использование квадратная маска с высотой и шириной равняется заданному значению.

Пример: 'MaskSize',[50 60]

Размер шага для того, чтобы пересечь маску через входные данные в виде разделенной запятой пары, состоящей из 'Stride' и одно из следующих.

  • 'auto' — Используйте шаг 10% входного размера, округленного к самому близкому целому числу.

  • Вектор формы [a b]— Используйте вертикальный шаг a и горизонтальный шаг b.

  • Скаляр — Использование шаг заданного значения и в вертикальных и в горизонтальных направлениях.

Пример: 'Stride',30

Заменяющее значение закрытой области в виде разделенной запятой пары, состоящей из 'MaskValue' и одно из следующих.

  • 'auto' — Замените закрытые пиксели на мудрое каналом среднее значение входных данных.

  • Скаляр — Замена закрыла пиксели с заданным значением.

  • Вектор — Замена закрыла пиксели со значением, заданным для каждого канала. Вектор должен содержать то же число элементов как количество выходных каналов слоя.

Пример: 'MaskValue',0.5

Выведите метод повышающей дискретизации в виде разделенной запятой пары, состоящей из 'OutputUpsampling' и одно из следующих.

  • 'bicubic' — Используйте бикубическую интерполяцию, чтобы произвести сглаженную карту тот же размер как входные данные.

  • 'nearest' — Интерполяция использования ближайшего соседа расширяет карту до того же размера как входные данные. Карта указывает на разрешение расчета поглощения газов относительно размера входных данных.

  • 'none' — Не используйте повышающую дискретизацию. Карта может быть меньшей, чем входные данные.

Если 'OutputUpsampling' 'bicubic' или 'nearest', вычисленная карта сверхдискретизирована к размеру входных данных с помощью imresize функция.

Пример: 'OutputUpsampling','nearest'

Обработка ребра маски закрытия в виде разделенной запятой пары, состоящей из 'MaskClipping' и одно из следующих.

  • 'on' — Разместите центр первой маски в верхнем левом углу входных данных. Маски в ребрах данных не являются полным размером.

  • 'off' — Поместите верхний левый угол первой маски в верхнем левом углу входных данных. Маски всегда являются полным размером. Если значения MaskSize и Stride опции означают, что некоторые маски расширяют мимо контуров данных, те маски исключены.

Для входных данных неизображений можно гарантировать, что вы всегда закрываете ту же сумму входных данных с помощью опции 'MaskClipping','off'. Например, для объемлющих данных о слове, можно гарантировать, что то же количество слов закрывается в каждой точке.

Пример: 'MaskClipping','off'

Размер мини-пакета, чтобы использовать в каждой учебной итерации в виде разделенной запятой пары, состоящей из 'MiniBatchSize' и положительное целое число. Мини-пакет является подмножеством набора обучающих данных, который используется, чтобы оценить градиент функции потерь и обновить веса. Смотрите Стохастический Градиентный спуск.

Пример: 'MiniBatchSize',256

Аппаратный ресурс для того, чтобы обучить сеть в виде разделенной запятой пары, состоящей из 'ExecutionEnvironment' и одно из следующих.

  • 'auto' — Используйте графический процессор, если вы доступны. В противном случае используйте центральный процессор.

  • 'cpu' — Используйте центральный процессор.

  • 'gpu' — Используйте графический процессор.

Опция графического процессора требует Parallel Computing Toolbox™. Чтобы использовать графический процессор в глубоком обучении, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Если вы выбираете 'ExecutionEnvironment','gpu' опция и Parallel Computing Toolbox или подходящий графический процессор не доступны, затем программное обеспечение возвращает ошибку.

Пример: 'ExecutionEnvironment','gpu'

Выходные аргументы

свернуть все

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

Если label задан как вектор, изменение в классификационной оценке для каждой метки класса вычисляется независимо. В этом случае, scoreMap(:,:,i) соответствует карте поглощения газов для iэлемент th в label.

Карта изменения общей активации, возвращенной как числовая матрица или числовой массив.

Функция вычисляет изменение в общей активации из-за поглощения газов. Общая активация вычисляется путем подведения итогов по всем пространственным размерностям активации того канала. Карта поглощения газов соответствует различию между общей активацией исходных данных без поглощения газов и общей активацией для закрытых данных. Области в карте с более высокими положительными значениями соответствуют областям входных данных, которые способствуют положительно заданной активации канала.

Если channels задан как вектор, изменение в общей активации для каждого заданного канала вычисляется независимо. В этом случае, activationMap(:,:,i) соответствует карте поглощения газов для iэлемент th в channel.

Введенный в R2019b