exponenta event banner

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)

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains 2 objects of type image.

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

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

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

свернуть все

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

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

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

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

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

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

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

Слой, используемый для вычисления изменения активации, заданный как вектор символов или скаляр строки. Определить layer как имя слоя в net для которого требуется вычислить изменения в активациях.

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

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

Если channel определяется как вектор, изменение суммарной активации для каждого указанного канала вычисляется независимо. В этом случае activationMap(:,:,i) соответствует карте окклюзии для i-й элемент в 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' - Замените окклюдированные пикселы средним канальным значением входных данных.

  • Скаляр (A scalar) - замена окклюдированных пикселов указанным значением.

  • Вектор (A vector) - замена окклюдированных пикселов значением, указанным для каждого канала. Вектор должен содержать то же количество элементов, что и количество выходных каналов слоя.

Пример: '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' - Использовать графический процессор.

Параметр GPU требует Toolbox™ параллельных вычислений. Чтобы использовать графический процессор для глубокого обучения, необходимо также иметь поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). При выборе 'ExecutionEnvironment','gpu' option и Parallel Computing Toolbox или подходящий графический процессор недоступны, то программное обеспечение возвращает ошибку.

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

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

свернуть все

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

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

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

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

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

Представлен в R2019b