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

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

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

Совет

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

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

Аргументы name-value

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

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

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

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

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

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

Если вы не задаете начальное изображение, программное обеспечение использует случайное изображение с пикселями, чертившими от стандартного нормального распределения. См. также '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

Типы данных: логический

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

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

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

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

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

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

свернуть все

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

Алгоритмы

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

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

Ссылки

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

Введенный в R2017a