exponenta event banner

cycleGANGenerator

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

Описание

пример

net = cycleGANGenerator(inputSize) создает сеть генератора CycleGAN для ввода размера inputSize. Дополнительные сведения об архитектуре сети см. в разделе Сеть генератора CycleGAN.

Для выполнения этой функции требуется 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] задает размер ввода для 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'Pad с использованием зеркальных значений входных данных, включая значения краев

[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"или дескриптор функции. Дополнительные сведения см. в разделе Определение пользовательской функции инициализации веса (панель инструментов глубокого обучения).

Функция активации для использования в сети, указанная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Слои активации (панель инструментов глубокого обучения).

  • "relu" - Использовать reluLayer (инструментарий для глубокого обучения)

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

  • "elu" - Использовать eluLayer (инструментарий для глубокого обучения)

  • Объект слоя

Функция активации после конечного слоя свертки, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Выходные слои (панель инструментов глубокого обучения).

  • "tanh" - Использовать tanhLayer (инструментарий для глубокого обучения)

  • "sigmoid" - Использовать sigmoidLayer (инструментарий для глубокого обучения)

  • "softmax" - Использовать softmaxLayer (инструментарий для глубокого обучения)

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

  • Объект слоя

Операция нормализации, используемая после каждой свертки, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделах Нормализация, Отсев и Обрезка слоев (Панель инструментов глубокого обучения).

  • "instance" - Использовать instanceNormalizationLayer (инструментарий для глубокого обучения)

  • "batch" - Использовать batchNormalizationLayer (инструментарий для глубокого обучения)

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

  • Объект слоя

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

Префикс ко всем именам слоев в сети, заданный как строковый или символьный вектор.

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

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

свернуть все

Генераторная сеть CycleGAN, возвращенная как dlnetwork(Панель инструментов глубокого обучения).

Подробнее

свернуть все

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

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

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

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

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

  • 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 (инструментарий глубокого обучения). По умолчанию остаточные блоки пропускают слой отсева. Включить слой отсева, указав Dropout аргумент «имя-значение» в качестве значения в диапазоне (0, 1].

  • Секунда convolution2dLayer (инструментарий глубокого обучения).

  • Дополнительный второй уровень нормализации.

  • Один 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] Чжу, Цзюнь-Янь, парк Тэсунг, Филлип Изола и Алексей А. Эфрос. «Непарный перевод образа в образ с использованием совместимых с циклом состязательных сетей». В 2017 году Международная конференция IEEE по компьютерному зрению (ICCV), 2242-2251. Венеция: IEEE, 2017. https://ieeexplore.ieee.org/document/8237506.

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

Представлен в R2021a