Создайте сеть генератора CycleGAN для преобразования изображения в изображение
создает сеть генераторов CycleGAN для входа размера net
= cycleGANGenerator(inputSize
)inputSize
. Для получения дополнительной информации об архитектуре сети смотрите CycleGAN Generator Network.
Эта функция требует Deep Learning Toolbox™.
изменяет аспекты сети CycleGAN с помощью аргументов имя-значение.net
= cycleGANGenerator(inputSize
,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)
inputSize
- Размер входа сетиРазмер входа сети, заданный как 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 фильтрами в первом слое свертки'NumDownsamplingBlocks'
- Количество блоков понижающей дискретизации2
(по умолчанию) | положительное целое числоКоличество блоков понижающей дискретизации в модуле сетевого энкодера, заданное в виде положительного целого числа. В общей сложности сеть понижает вход в 2 ^ NumDownsamplingBlocks
. Модуль декодера состоит из того же количества блоков повышающей дискретизации.
'NumFiltersInFirstBlock'
- Количество фильтров в первом слое свертки64
(по умолчанию) | положительное четное целое числоКоличество фильтров в первом слое свертки, заданное как положительное четное целое число.
'NumOutputChannels'
- Количество выходных каналов"auto"
(по умолчанию) | положительное целое числоКоличество каналов выхода, заданное как "auto"
или положительное целое число. Когда вы задаете "auto"
количество выхода каналов совпадает с количеством входа каналов.
'FilterSizeInFirstAndLastBlocks'
- Размер фильтра в первом и последнем слоях свертки7
(по умолчанию) | положительное нечетное целое число | 2-элементный вектор положительных нечетных целых чиселРазмер фильтра в первом и последнем слоях свертки, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Когда вы задаете размер фильтра как скаляр, фильтр имеет одинаковые высоту и ширину.
'FilterSizeInIntermediateBlocks'
- Размер фильтра в промежуточных слоях3
(по умолчанию) | 2-элементный вектор положительных нечетных целых чисел | положительное нечетное целое числоРазмер фильтра в промежуточных слоях, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Промежуточные слои свертки являются слоями свертки, исключающими первый и последний слой свертки. Когда вы задаете размер фильтра как скаляр, фильтр имеет одинаковые высоту и ширину. Типичные значения находятся между 3 и 7.
'NumResidualBlocks'
- Количество остаточных блоков9
(по умолчанию) | положительное целое числоКоличество остаточных блоков, заданное как положительное целое число. Как правило, это значение устанавливается на 6
для изображений размера 128 на 128 и 9
для изображений размера 256 на 256 или больше.
'ConvolutionPaddingValue'
- Стиль заполнения"symmetric-exclude-edge"
(по умолчанию) | "replicate"
| "symmetric-include-edge"
| числовой скалярСтиль заполнения, используемый в сети, задается как одно из следующих значений.
PaddingValue | Описание | Пример |
---|---|---|
Числовой скаляр | Панель с заданным числовым значением |
|
'symmetric-include-edge' | Заполните используя зеркальные значения входов, включая значения ребер |
|
'symmetric-exclude-edge' | Заполните используя зеркальные значения входов, исключая значения ребер |
|
'replicate' | Заполните с использованием повторяющихся элементов границы входов |
|
'UpsampleMethod'
- Метод, используемый для повышения активации"transposedConv"
(по умолчанию) | "bilinearResize"
| "pixelShuffle"
Метод, используемый для увеличения активации, заданный как одно из следующих значений:
"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
'ConvolutionWeightsInitializer'
- Массовая инициализация, используемая в слоях"narrow-normal"
(по умолчанию) | "glorot"
| "he"
| функцииИнициализация веса, используемая в слоях свертки, задается как "glorot"
, "he"
, "narrow-normal"
, или указатель на функцию. Для получения дополнительной информации смотрите Задать Пользовательскую Функцию Инициализации Веса (Deep Learning Toolbox).
'ActivationLayer'
- Функция активации"relu"
(по умолчанию) | "leakyRelu"
| "elu"
| объекта слояФункция активации для использования в сети, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Слои активации (Deep Learning Toolbox).
"relu"
- Использование reluLayer
(Deep Learning Toolbox)
"leakyRelu"
- Использование leakyReluLayer
(Deep Learning Toolbox) с масштабным коэффициентом 0,2
"elu"
- Использование eluLayer
(Deep Learning Toolbox)
Объект слоя
'FinalActivationLayer'
- Функция активации после окончательной свертки"tanh"
(по умолчанию) | "none"
| "sigmoid"
| "softmax"
| объекта слояФункция активации после последнего слоя свертки, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Выходные слои (Deep Learning Toolbox).
"tanh"
- Использование tanhLayer
(Deep Learning Toolbox)
"sigmoid"
- Использование sigmoidLayer
(Deep Learning Toolbox)
"softmax"
- Использование softmaxLayer
(Deep Learning Toolbox)
"none"
- Не используйте слой окончательной активации
Объект слоя
'NormalizationLayer'
- Нормализация операции"instance"
(по умолчанию) | "none"
| "batch"
| объекта слояОперация нормализации для использования после каждой свертки, заданная в качестве одного из следующих значений. Для получения дополнительной информации и списка доступных слоев смотрите Normalization, Dropout и Curpping Layers (Deep Learning Toolbox).
"instance"
- Использование instanceNormalizationLayer
(Deep Learning Toolbox)
"batch"
- Использование batchNormalizationLayer
(Deep Learning Toolbox)
"none"
- Не используйте слой нормализации
Объект слоя
'Dropout'
- Вероятность отсева0
(по умолчанию) | число в области значений [0, 1]Вероятность отсева, заданная как число в области значений [0, 1]. Если вы задаете значение 0
, тогда сеть не включает слои отсева. Если вы задаете значение, больше 0
, затем сеть включает в себя dropoutLayer
(Deep Learning Toolbox) в каждом остаточном блоке.
'NamePrefix'
- Префикс ко всем именам слоев""
(по умолчанию) | строку | вектор символовПрефикс ко всем именам слоев в сети, заданный как строковый или символьный вектор.
Типы данных: char
| string
net
- Сеть генератора CycleGANdlnetwork
объектСеть генератора CycleGAN, возвращается как dlnetwork
(Deep Learning Toolbox) объект.
Сеть генератора cycleGAN состоит из модуля энкодера, за которым следует модуль декодера. Сеть по умолчанию соответствует архитектуре, предложенной Zhu et. al. [1].
Модуль энкодера уменьшает вход в 2 ^ NumDownsamplingBlocks
. Модуль энкодера состоит из начального блока слоев, NumDownsamplingBlocks
блоки понижающей дискретизации и NumResidualBlocks
остаточные блоки. Модуль декодера увеличивает вход в множитель 2 ^ NumDownsamplingBlocks
. Модуль декодера состоит из NumDownsamplingBlocks
блоки повышающей дискретизации и конечный блок.
Таблица описывает блоки слоев, которые состоят из модулей энкодера и декодера.
Тип блока | Слои | Схема блока по умолчанию |
---|---|---|
Начальный блок |
|
|
Блок понижающей дискретизации |
|
|
Остаточный блок |
|
|
Блок повышающей дискретизации |
|
|
Конечный блок |
|
|
[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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.