deepDreamImage

Визуализация функций сети с помощью глубокой мечты

Описание

I = deepDreamImage(net,layer,channels) возвращает массив изображений, которые сильно активируют каналы channels в пределах сетевого net слоя с числовым индексом или именем, заданным layer. Эти изображения подсвечивают функции, выученные сетью.

пример

I = deepDreamImage(net,layer,channels,Name,Value) возвращает изображение с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Загрузка предварительно обученной сети AlexNet.

net = alexnet;

Визуализируйте первые 25 функции, выученных первым сверточным слоем ('conv1') использование deepDreamImage. Задайте 'PyramidLevels' равным 1, чтобы изображения не масштабировались.

layer = 'conv1';
channels = 1:25;

I = deepDreamImage(net,layer,channels, ...
    'PyramidLevels',1, ...
    'Verbose',0);

figure
for i = 1:25
    subplot(5,5,i)
    imshow(I(:,:,:,i))
end

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

свернуть все

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

deepDreamImage поддерживает только сети с входным слоем изображений.

Слой для визуализации, заданный как положительное целое число, вектор символов или строковый скаляр. Если net является DAGNetwork объект, задайте layer только как вектор символов или строковый скаляр. Задайте layer как индекс или имя слоя, для которого необходимо визуализировать активации. Чтобы визуализировать функции слоя классификации, выберите последний полностью соединенный слой перед слоем классификации.

Совет

Выбор ReLU или выпадающих слоев для визуализации может не дать полезных изображений из-за эффекта, который эти слои оказывают на градиенты сети.

Запрашиваемые каналы, заданные как скаляр или вектор индексов канала. Если channels является вектором, активации слоя для каждого канала оптимизированы независимо. Область возможных элементов для выбора для channels зависят от выбранного слоя. Для сверточных слоев NumFilters свойство задает количество выхода каналов. Для полносвязных слоев, OutputSize свойство задает количество выхода каналов.

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

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

Пример: deepDreamImage(net,layer,channels,'NumItetations',100,'ExecutionEnvironment','gpu') генерирует изображения с использованием 100 итераций на уровень пирамиды и использует графический процессор.

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

  • Для слоев к концу сети исходное изображение должно быть, по меньшей мере, такой же высотой и шириной, как вход слой изображения.

  • Для слоев к началу сети высота и ширина исходного изображения могут быть меньше, чем входной слой изображения. Однако он должен быть достаточно большим, чтобы получить скаляр выход на выбранном слое.

  • Количество каналов начального изображения должно совпадать с количеством каналов во входном слое изображений сети.

Если вы не задаете начальное изображение, программа использует случайное изображение с пикселями, полученными из стандартного нормального распределения. См. также 'PyramidLevels'.

Количество уровней пирамиды изображений с мультиразрешениями, используемых для генерации выходного изображения, заданное в виде положительного целого числа. Увеличьте количество уровней пирамиды, чтобы получить большие выходные изображения за счет дополнительных расчетов. Чтобы создать изображение того же размера, что и начальное изображение, установите количество уровней равным 1.

Пример: 'PyramidLevels',3

Шкала между каждым уровнем пирамиды, заданная как скаляр со значением > 1. Уменьшите шкалу пирамиды, чтобы включить мелкозернистые детали в выходное изображение. Настройка шкалы пирамиды может помочь сгенерировать более информативные изображения для слоев в начале сети.

Пример: 'PyramidScale',1.4

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

Пример: 'NumIterations',10

Тип масштабирования для применения к выходному изображению, заданный как разделенная разделенными запятой парами, состоящая из 'OutputScaling' и одно из следующих:

ЗначениеОписание
'linear'Масштабируйте выходы пикселя в интервале [0,1]. Выходное изображение, соответствующее каждому слою каналу, I(:,:,:,channel), масштабируется независимо.
'none'Отключите выход.

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

Пример: 'OutputScaling','linear'

Индикатор для отображения информации о прогрессе в командном окне, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и либо 1 (true) или 0 (false). Отображаемая информация включает уровень пирамиды, итерацию и силу активации.

Пример: 'Verbose',0

Типы данных: logical

Аппаратный ресурс, заданный как разделенная разделенными запятой парами, состоящая из 'ExecutionEnvironment' и одно из следующих:

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

  • 'gpu' - Использовать графический процессор. Для использования графический процессор требуется Parallel Computing Toolbox™ и поддерживаемый графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку GPU by Release (Parallel Computing Toolbox). Если Parallel Computing Toolbox или подходящий графический процессор недоступен, то программное обеспечение возвращает ошибку.

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

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

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

свернуть все

Выходное изображение, заданное последовательностью изображений в полутоновом или truecolor (RGB), сохраненных в 4-D массиве. Изображения сгруппированы по четвертой размерности I таким образом изображение, которое максимизирует выход channels(k) является I(:,:,:,k). Вы можете отобразить выходное изображение, используя imshow (Image Processing Toolbox).

Алгоритмы

Эта функция реализует версию глубокого сна, которая использует пирамиду с мультиразрешением изображением и нормализацию градиента Лаплакиана для генерации изображений с высоким разрешением. Для получения дополнительной информации о нормализации Laplacian Pyramid Gradient, смотрите этот пост в блоге: DeepDreaming с TensorFlow.

Когда вы обучаете сеть, используя trainNetwork function, или когда вы используете функции предсказания или валидации с DAGNetwork и SeriesNetwork объекты, программное обеспечение выполняет эти расчеты с помощью арифметики с одной точностью и плавающей точкой. Функции для обучения, предсказания и валидации включают trainNetwork, predict, classify, и activations. Программа использует арифметику с одной точностью, когда вы обучаете сети, используя как центральные процессоры, так и графические процессоры.

Ссылки

[1] DeepDreaming с TensorFlow. https://github.com/tensorflow/docs/blob/master/site/en/tutorials/generative/deepdream.ipynb

Введенный в R2017a