Создайте сеть генератора CycleGAN для перевода от изображения к изображению
создает сеть генератора CycleGAN для входа размера net
= cycleGANGenerator(inputSize
)inputSize
. Для получения дополнительной информации о сетевой архитектуре, смотрите Сеть Генератора CycleGAN.
Эта функция требует 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 пикселей для изображения с 3 каналами.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'NumFiltersInFirstBlock',32
создает сеть с 32, просачивается первый слой свертки'NumDownsamplingBlocks'
— Количество субдискретизации блоков
(значение по умолчанию) | положительное целое числоКоличество субдискретизации блоков в сетевом модуле энкодера в виде положительного целого числа. Всего, сеть прореживает вход на коэффициент 2^NumDownsamplingBlocks
. Модуль декодера состоит из того же количества повышающей дискретизации блоков.
'NumFiltersInFirstBlock'
— Количество просачивается первый слой свертки
(значение по умолчанию) | положительный даже целое числоКоличество просачивается первый слой свертки в виде положительного даже целое число.
'NumOutputChannels'
— Количество выходных каналов"auto"
(значение по умолчанию) | положительное целое числоКоличество выхода образовывает канал в виде "auto"
или положительное целое число. Когда вы задаете "auto"
, количество выходных каналов совпадает с количеством входных каналов.
'FilterSizeInFirstAndLastBlocks'
— Отфильтруйте размер в первых и последних слоях свертки
(значение по умолчанию) | положительное нечетное целое число | вектор с 2 элементами из положительных нечетных целых чиселОтфильтруйте размер в первых и последних слоях свертки в виде положительного нечетного целочисленного или вектора с 2 элементами из положительных нечетных целых чисел формы [ ширина высоты]. Когда вы задаете размер фильтра как скаляр, фильтр имеет идентичную высоту и ширину.
'FilterSizeInIntermediateBlocks'
— Отфильтруйте размер в промежуточных слоях свертки
(значение по умолчанию) | вектор с 2 элементами из положительных нечетных целых чисел | положительное нечетное целое числоОтфильтруйте размер в промежуточных слоях свертки в виде положительного нечетного целочисленного или вектора с 2 элементами из положительных нечетных целых чисел формы [ ширина высоты]. Промежуточные слои свертки являются слоями свертки, исключая первый и последний слой свертки. Когда вы задаете размер фильтра как скаляр, фильтр имеет идентичную высоту и ширину. Типичные значения между 3 и 7.
'NumResidualBlocks'
— Количество остаточных блоков
(значение по умолчанию) | положительное целое числоКоличество остаточных блоков в виде положительного целого числа. Как правило, это значение установлено к 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"
— Используйте 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
'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'
— Операция Normalization"instance"
(значение по умолчанию) | "none"
| "batch"
| расположенный на слое объектОперация Normalization, чтобы использовать после каждой свертки в виде одного из этих значений. Для получения дополнительной информации и список доступных слоев, смотрите Нормализацию, Уволенного и Слои Обрезки (Deep Learning Toolbox).
"instance"
— Используйте instanceNormalizationLayer
(Deep Learning Toolbox)
"batch"
— Используйте batchNormalizationLayer
(Deep Learning Toolbox)
"none"
— Не используйте слой нормализации
Расположенный на слое объект
'Dropout'
— Вероятность уволенного
(значение по умолчанию) | номер в области значений [0, 1]Вероятность уволенного в виде номера в области значений [0, 1]. Если вы задаете значение 0
, затем сеть не включает слои уволенного. Если вы задаете значение, больше, чем 0
, затем сеть включает dropoutLayer
(Deep Learning Toolbox) в каждом остаточном блоке.
'NamePrefix'
— Префикс ко всем именам слоя""
(значение по умолчанию) | представляет в виде строки | вектор символовПрефикс ко всему слою называет в сети в виде строки или вектора символов.
Типы данных: char |
string
net
— Сеть генератора CycleGANdlnetwork
объектСеть генератора CycleGAN, возвращенная как dlnetwork
Объект (Deep Learning Toolbox).
cycleGAN сеть генератора состоит из модуля энкодера, сопровождаемого модулем декодера. Сеть по умолчанию следует за архитектурой, предложенной Чжу и. al. [1].
Модуль энкодера прореживает вход на коэффициент 2^NumDownsamplingBlocks
. Модуль энкодера состоит из начального блока слоев, NumDownsamplingBlocks
субдискретизация блоков и NumResidualBlocks
остаточные блоки. Модуль декодера сверхдискретизировал вход на коэффициент 2^NumDownsamplingBlocks
. Модуль декодера состоит из NumDownsamplingBlocks
повышающая дискретизация блоков и итогового блока.
Таблица описывает блоки слоев, которые включают модули энкодера и декодера.
Тип блока | Слои | Схема блока по умолчанию |
---|---|---|
Начальный блок |
|
|
Блок Downsampling |
|
|
Остаточный блок |
|
|
Блок Upsampling |
|
|
Итоговый блок |
|
|
[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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.