cycleGANGenerator

Создайте сеть генератора CycleGAN для перевода от изображения к изображению

Описание

пример

net = cycleGANGenerator(inputSize) создает сеть генератора CycleGAN для входа размера inputSize. Для получения дополнительной информации о сетевой архитектуре, смотрите Сеть Генератора CycleGAN.

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

пример

net = cycleGANGenerator(inputSize,Name,Value) изменяет аспекты сети CycleGAN с помощью аргументов name-value.

Примеры

свернуть все

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

inputSize = [256 256 3];

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

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

         Layers: [72x1 nnet.cnn.layer.Layer]
    Connections: [80x2 table]
     Learnables: [94x3 table]
          State: [0x3 table]
     InputNames: {'inputLayer'}
    OutputNames: {'fActivation'}
    Initialized: 1

Отобразите сеть.

analyzeNetwork(net)

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

inputSize = [128 128 3];

Создайте генератор CycleGAN с шестью остаточными блоками. Добавьте префикс "cycleGAN6 _" ко всем именам слоя.

net = cycleGANGenerator(inputSize,"NumResidualBlocks",6, ...
    "NamePrefix","cycleGAN6_")
net = 
  dlnetwork with properties:

         Layers: [54x1 nnet.cnn.layer.Layer]
    Connections: [59x2 table]
     Learnables: [70x3 table]
          State: [0x3 table]
     InputNames: {'cycleGAN6_inputLayer'}
    OutputNames: {'cycleGAN6_fActivation'}
    Initialized: 1

Отобразите сеть.

analyzeNetwork(net)

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

свернуть все

Сетевой входной размер в виде вектора с 3 элементами из положительных целых чисел. inputSize имеет форму [H W C], где H является высотой, W является шириной, и C является количеством каналов.

Пример: [28 28 3] задает входной размер 28 28 пикселей для изображения с 3 каналами.

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

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

Пример: 'NumFiltersInFirstBlock',32 создает сеть с 32, просачивается первый слой свертки

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

Количество просачивается первый слой свертки в виде положительного даже целое число.

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

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

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

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

Стиль дополнения используемого в сети в виде одного из этих значений.

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).

Функция активации, чтобы использовать в сети в виде одного из этих значений. Для получения дополнительной информации и список доступных слоев, смотрите Слои Активации (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" — Не используйте итоговый слой активации

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

Операция Normalization, чтобы использовать после каждой свертки в виде одного из этих значений. Для получения дополнительной информации и список доступных слоев, смотрите Нормализацию, Уволенного и Слои Обрезки (Deep Learning Toolbox).

  • "instance" — Используйте instanceNormalizationLayer (Deep Learning Toolbox)

  • "batch" — Используйте batchNormalizationLayer (Deep Learning Toolbox)

  • "none" — Не используйте слой нормализации

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

Вероятность уволенного в виде номера в области значений [0, 1]. Если вы задаете значение 0, затем сеть не включает слои уволенного. Если вы задаете значение, больше, чем 0, затем сеть включает dropoutLayer (Deep Learning Toolbox) в каждом остаточном блоке.

Префикс ко всему слою называет в сети в виде строки или вектора символов.

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

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

свернуть все

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

Больше о

свернуть все

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

cycleGAN сеть генератора состоит из модуля энкодера, сопровождаемого модулем декодера. Сеть по умолчанию следует за архитектурой, предложенной Чжу и. al. [1].

Модуль энкодера прореживает вход на коэффициент 2^NumDownsamplingBlocks. Модуль энкодера состоит из начального блока слоев, NumDownsamplingBlocks субдискретизация блоков и NumResidualBlocks остаточные блоки. Модуль декодера сверхдискретизировал вход на коэффициент 2^NumDownsamplingBlocks. Модуль декодера состоит из NumDownsamplingBlocks повышающая дискретизация блоков и итогового блока.

Таблица описывает блоки слоев, которые включают модули энкодера и декодера.

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

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

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

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

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

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

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

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

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

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

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

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

  • Дополнительный dropoutLayer (Deep Learning Toolbox). По умолчанию остаточные блоки не используют слой уволенного. Включайте слой уволенного путем определения Dropout аргумент значения имени как значение в области значений (0, 1].

  • Второй convolution2dLayer (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.

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

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

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

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

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

2-D convolution layer, tanh layer

Ссылки

[1] Чжу, июнь-Yan, парк Taesung, Филип Изола и Алексей А. Эфрос. "Непарный Перевод От изображения к изображению Используя Сопоставимые с циклом Соперничающие Сети". На 2 017 Международных конференциях IEEE по вопросам Компьютерного зрения (ICCV), 2242–2251. Венеция: IEEE, 2017. https://ieeexplore.ieee.org/document/8237506.

[2] Чжу, июнь-Yan, парк Taesung и Тунчжоу Ван. "CycleGAN и pix2pix в PyTorch". https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.

Введенный в R2021a