unitGenerator

Создайте безнадзорный перевод от изображения к изображению (МОДУЛЬ) сеть генератора

Описание

пример

net = unitGenerator(inputSizeSource) создает МОДУЛЬНУЮ сеть генератора, net, для входа размера inputSizeSource. Для получения дополнительной информации о сетевой архитектуре, смотрите МОДУЛЬНУЮ Сеть Генератора. Сеть имеет два входных параметров и четыре выходных параметров:

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

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

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

пример

net = unitGenerator(inputSizeSource,Name,Value) изменяет аспекты МОДУЛЬНОЙ сети генератора использование аргументов значения имени.

Примеры

свернуть все

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

inputSize = [128 128 3];

Создайте МОДУЛЬНЫЙ генератор, который генерирует изображения 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];

Создайте МОДУЛЬНЫЙ генератор с пятью остаточными блоками, три из которых совместно используются модулями энкодера и декодера.

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" — Используйте a transposedConv2dLayer (Deep Learning Toolbox) шагом [2 2].

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

  • "pixelShuffle" — Используйте convolution2dLayer (Deep Learning Toolbox) шагом [1 1] сопровождаемый a 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" — Не используйте итоговый слой активации

  • Расположенный на слое объект

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

свернуть все

МОДУЛЬНАЯ сеть генератора, возвращенная как dlnetwork Объект (Deep Learning Toolbox).

Больше о

свернуть все

МОДУЛЬНАЯ сеть генератора

МОДУЛЬНАЯ сеть генератора состоит из трех подсетей в модуле энкодера, сопровождаемом тремя подсетями в модуле декодера. Сеть по умолчанию следует за архитектурой, предложенной Лю, 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).

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

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

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

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

  • instanceNormalizationLayer (Deep Learning Toolbox).

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

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

Остаточный блок
  • 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

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

  • instanceNormalizationLayer (Deep Learning Toolbox).

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

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

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

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

2-D convolution layer, tanh layer

Советы

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

  • Обучите МОДУЛЬ сеть ГАНЯ использование пользовательского учебного цикла.

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

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

Ссылки

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

Введенный в R2021a