cycleGANGenerator

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

Укажите размер сетевого входа для изображений 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 пикселей для трехканального изображения.

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

Задайте необязательные разделенные разделенными запятой парами 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" - Использовать 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).

Функция активации для использования в сети, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Слои активации (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, Dropout и Curpping Layers (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 состоит из модуля энкодера, за которым следует модуль декодера. Сеть по умолчанию соответствует архитектуре, предложенной Zhu et. al. [1].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2-D convolution layer, tanh layer

Ссылки

[1] Zhu, Jun-Yan, Taesung Park, Phillip Isola, and Alexei A. Efros. «Непарная трансляция изображения в изображение с использованием циклически согласованных состязательных сетей». В 2017 году IEEE International Conference on Компьютерное Зрение (ICCV), 2242-2251. Венеция: IEEE, 2017. https://ieeexplore.ieee.org/document/8237506.

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

Введенный в R2021a