deepDreamImage

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

Синтаксис

I = deepDreamImage(net,layer,channels)
I = deepDreamImage(net,layer,channels,Name,Value)

Описание

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

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

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

Совет

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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','linear'

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Алгоритмы

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

Все функции для обучения глубокому обучению, прогноза и валидации в Deep Learning Toolbox™ выполняют вычисления с помощью арифметики с плавающей точкой, с одинарной точностью. Функции для глубокого обучения включают trainNetwork, predict, classify и activations. Программное обеспечение использует арифметику с одинарной точностью, когда вы обучаете нейронные сети с помощью и центральных процессоров и графических процессоров.

Ссылки

[1] DeepDreaming с TensorFlow. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb

Введенный в R2017a