unitGenerator

Создайте неконтролируемую сеть генератора преобразования изображений в изображения (UNIT)

Описание

пример

net = unitGenerator(inputSizeSource) создает сеть генератора UNIT, net, для входов размера inputSizeSource. Для получения дополнительной информации об архитектуре сети смотрите UNIT Generator Network. Сеть имеет два входа и четыре выхода:

  • Двумя сетевыми входами являются изображения в исходных и целевых областях. По умолчанию целевой размер изображения совпадает с размером исходного изображения. Вы можете изменить количество каналов в целевом изображении, задав 'NumTargetInputChannels'имя-значение аргумента.

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

Эта функция требует Deep Learning Toolbox™.

пример

net = unitGenerator(inputSizeSource,Name,Value) изменяет аспекты сети генератора UNIT с помощью аргументов имя-значение.

Примеры

свернуть все

Укажите размер сетевого входа для изображений RGB размера 128 на 128.

inputSize = [128 128 3];

Создайте генератор UNIT, который генерирует изображения RGB размера входа.

net = unitGenerator(inputSize)
net = 
  dlnetwork with properties:

         Layers: [9x1 nnet.cnn.layer.Layer]
    Connections: [8x2 table]
     Learnables: [168x3 table]
          State: [0x3 table]
     InputNames: {'inputSource'  'inputTarget'}
    OutputNames: {1x4 cell}
    Initialized: 1

Отображение сети.

analyzeNetwork(net)

Укажите размер сетевого входа для изображений RGB размера 128 на 128.

inputSize = [128 128 3];

Создайте генератор UNIT с пятью остаточными блоками, три из которых являются общими между модулями энкодера и декодера.

net = unitGenerator(inputSize,"NumResidualBlocks",5, ...
    "NumSharedBlocks",3)
net = 
  dlnetwork with properties:

         Layers: [9x1 nnet.cnn.layer.Layer]
    Connections: [8x2 table]
     Learnables: [152x3 table]
          State: [0x3 table]
     InputNames: {'inputSource'  'inputTarget'}
    OutputNames: {1x4 cell}
    Initialized: 1

Отображение сети.

analyzeNetwork(net)

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

свернуть все

Вход сигнала исходного изображения, заданный как 3-элементный вектор положительных целых чисел. inputSizeSource имеет вид [H W C], где H - высота, W - ширина, а C - количество каналов. Длина каждой размерности должна быть равномерно разделена на 2 ^ NumDownsamplingBlocks.

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

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

Пример: 'NumDownsamplingBlocks',3 создает сеть с 3 блоками понижающей дискретизации

Количество блоков понижающей дискретизации в подсетях исходного энкодера и целевого энкодера в виде положительного целого числа. В целом модуль энкодера понижает значение входного и целевого входных параметров в 2 ^ NumDownsamplingBlocks. Исходный декодер и подсеть целевого декодера имеют одинаковое количество блоков повышающей дискретизации.

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

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

Количество каналов в целевом изображении, заданное как положительное целое число. По умолчанию 'NumTargetChannels'совпадает с количеством каналов в исходном изображении, inputSizeSource.

Количество фильтров в первом слое свертки, заданное как положительное четное целое число.

Размер фильтра в первом и последнем слоях свертки сети, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Когда вы задаете размер фильтра как скаляр, фильтр имеет равные высоту и ширину.

Размер фильтра в промежуточных слоях, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Промежуточные слои свертки являются слоями свертки, исключающими первый и последний слой свертки. Когда вы задаете размер фильтра как скаляр, фильтр имеет одинаковые высоту и ширину.

Стиль заполнения, используемый в сети, задается как одно из следующих значений.

PaddingValueОписаниеПример
Числовой скалярПанель с заданным числовым значением

[314159265][2222222222222222314222215922222652222222222222222]

'symmetric-include-edge'Заполните используя зеркальные значения входов, включая значения ребер

[314159265][5115995133144113314415115995622655662265565115995]

'symmetric-exclude-edge'Заполните используя зеркальные значения входов, исключая значения ребер

[314159265][5626562951595141314139515951562656295159514131413]

'replicate'Заполните с использованием повторяющихся элементов границы входов

[314159265][3331444333144433314441115999222655522265552226555]

Метод, используемый для увеличения активации, заданный как одно из следующих значений:

  • "transposedConv" - Использовать transposedConv2dLayer (Deep Learning Toolbox) с шагом [2 2].

  • "bilinearResize" - Использование convolution2dLayer (Deep Learning Toolbox) с шагом [1 1], за которым следует resize2dLayer со шкалой [2 2].

  • "pixelShuffle" - Использование convolution2dLayer (Deep Learning Toolbox) с шагом [1 1], за которым следует depthToSpace2dLayer с размером блока [2 2].

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

Инициализация веса, используемая в слоях свертки, задается как "glorot", "he", "narrow-normal", или указатель на функцию. Для получения дополнительной информации смотрите Задать Пользовательскую Функцию Инициализации Веса (Deep Learning Toolbox).

Функция активации для использования в сети за исключением первого и последнего слоев свертки, заданных в качестве одного из следующих значений. unitGenerator функция автоматически добавляет утечку слоя ReLU после первого слоя свертки. Для получения дополнительной информации и списка доступных слоев смотрите Слои активации (Deep Learning Toolbox).

  • "relu" - Использование reluLayer (Deep Learning Toolbox)

  • "leakyRelu" - Использование leakyReluLayer (Deep Learning Toolbox) с масштабным коэффициентом 0,2

  • "elu" - Использование eluLayer (Deep Learning Toolbox)

  • Объект слоя

Функция активации после последнего слоя свертки в исходном декодере, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Выходные слои (Deep Learning Toolbox).

  • "tanh" - Использование tanhLayer (Deep Learning Toolbox)

  • "sigmoid" - Использование sigmoidLayer (Deep Learning Toolbox)

  • "softmax" - Использование softmaxLayer (Deep Learning Toolbox)

  • "none" - Не используйте слой окончательной активации

  • Объект слоя

Функция активации после последнего слоя свертки в целевом декодере, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Выходные слои (Deep Learning Toolbox).

  • "tanh" - Использование tanhLayer (Deep Learning Toolbox)

  • "sigmoid" - Использование sigmoidLayer (Deep Learning Toolbox)

  • "softmax" - Использование softmaxLayer (Deep Learning Toolbox)

  • "none" - Не используйте слой окончательной активации

  • Объект слоя

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

свернуть все

UNIT сеть генератора, возвращенная как dlnetwork (Deep Learning Toolbox) объект.

Подробнее о

свернуть все

Сеть генератора UNIT

Сеть генератора UNIT состоит из трех подсетей в модуле энкодера и затем трех подсетей в модуле декодера. Сеть по умолчанию соответствует архитектуре, предложенной Liu, Breuel и Kautz [1].

Inputs, encoder modules, decoder modules, and outputs of a UNIT network.

Модуль энкодера уменьшает вход в 2 ^ NumDownsamplingBlocks. Модуль энкодера состоит из трех подсетей.

  • Подсеть исходного энкодера, называемая 'encoderSourceBlock', имеет начальный блок слоев, который принимает данные в исходной области, XS. Затем подсеть имеет NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают данные и NumResidualBlocksNumSharedBlocks остаточные блоки.

  • Подсеть целевого энкодера, называемая 'encoderTargetBlock', имеет начальный блок слоев, который принимает данные в целевой области, XS. Затем подсеть имеет NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают дискретизацию данных и NumResidualBlocksNumSharedBlocks остаточные блоки.

  • Выходы исходного энкодера и целевого энкодера объединяются в concatenationLayer (Deep Learning Toolbox)

  • Общая подсеть остаточного энкодера, называемая 'encoderSharedBlock', принимает конкатенированные данные и имеет NumSharedBlocks остаточные блоки.

Модуль декодера состоит из трех подсетей, которые выполняют в общей сложности NumDownsamplingBlocks операции увеличения дискретизации данных.

  • Общая подсеть остаточного декодера, называемая 'decoderSharedBlock', принимает данные от энкодера и имеет NumSharedBlocks остаточные блоки.

  • Подсеть исходного декодера, называемая 'decoderSourceBlock', имеет NumResidualBlocksNumSharedBlocks остаточные блоки, NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают данные, и конечный блок слоев, который возвращает выход. Эта подсеть возвращает два выхода в исходной области: XTS и XSS. Выходным XTS является изображение, переведенное из целевой области в исходную область. Выходной XSS является самовосстановленным изображением из исходной области в исходную область.

  • Подсеть целевого декодера, называемая 'decoderTargetBlock', имеет NumResidualBlocksNumSharedBlocks остаточные блоки, NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают данные, и конечный блок слоев, который возвращает выход. Эта подсеть возвращает два выхода в целевой области: XST и XTT. Выходным XTS является изображение, переведенное из исходной области в целевую область. Выходной XTT является самовосстановленным изображением из целевой области в целевую область.

Таблица описывает блоки слоев, которые состоят из подсетей.

Тип блокаСлоиСхема блока по умолчанию
Начальный блок
  • Система координат imageInputLayer (Deep Learning Toolbox).

  • A convolution2dLayer (Deep Learning Toolbox) с шагом [1 1] и размером фильтра FilterSizeInFirstAndLastBlocks.

  • A leakyReluLayer (Deep Learning Toolbox) с масштабным коэффициентом 0,2.

Image input layer, 2-D convolution layer, leaky ReLU layer

Блок понижающей дискретизации
  • A convolution2dLayer (Deep Learning Toolbox) с шагом [2 2] для выполнения понижающей дискретизации. Слой свертки имеет размер фильтра FilterSizeInIntermediateBlocks.

  • Система координат instanceNormalizationLayer (Deep Learning Toolbox).

  • Слой активации, заданный как ActivationLayer аргумент имя-значение.

2-D convolution layer, instance normalization layer, ReLU layer

Остаточный блок
  • A convolution2dLayer (Deep Learning Toolbox) с шагом [1 1] и размером фильтра FilterSizeInIntermediateBlocks.

  • Система координат instanceNormalizationLayer (Deep Learning Toolbox).

  • Слой активации, заданный как ActivationLayer аргумент имя-значение.

  • Второй convolution2dLayer (Deep Learning Toolbox).

  • Второй instanceNormalizationLayer (Deep Learning Toolbox).

  • Система координат additionLayer (Deep Learning Toolbox), который обеспечивает пропускное соединение между каждым блоком.

2-D convolution layer, instance normalization layer, ReLU layer, 2-D convolution layer, instance normalization layer, addition layer

Блок повышающей дискретизации
  • Слой повышающей дискретизации, который повышается в 2 раза согласно UpsampleMethod аргумент имя-значение. Слой свертки имеет размер фильтра FilterSizeInIntermediateBlocks.

  • Система координат instanceNormalizationLayer (Deep Learning Toolbox).

  • Слой активации, заданный как ActivationLayer аргумент имя-значение.

Transposed 2-D convolution layer, instance normalization layer, ReLU layer

Конечный блок
  • A convolution2dLayer (Deep Learning Toolbox) с шагом [1 1] и размером фильтра FilterSizeInFirstAndLastBlocks.

  • Необязательный слой активации, заданный SourceFinalActivationLayer и TargetFinalActivationLayer аргументы имя-значение.

2-D convolution layer, tanh layer

Совет

  • Вы можете создать сеть дискриминатора для МОДУЛЬ при помощи patchGANDiscriminator функция.

  • Обучите сеть UNIT GAN с помощью пользовательского цикла обучения.

  • Чтобы выполнить область исходного изображения в целевое и наоборот, используйте unitPredict функция.

  • Для кодировки общих скрытых функций аргументы 'NumSharedBlocks'и' NumResidualBlocks'должно быть больше 0.

Ссылки

[1] Лю, Мин-Ю, Томас Бреуэль и Ян Каутц. «Неконтролируемые сети перевода изображений в изображения». Усовершенствования в системах нейронной обработки информации 30 (NIPS 2017). Лонг Бич, Калифорния: 2017. https://arxiv.org/abs/1703.00848.

Введенный в R2021a