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
     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 функция. Для получения дополнительной информации предварительно обученные сети abouqt, смотрите Предварительно обученные Глубокие нейронные сети.

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' или 'bicubic', вычисленная карта сверхдискретизирована к размеру входных данных с помощью 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