Создание сети генератора CycleGAN для преобразования образа в образ
создает сеть генератора CycleGAN для ввода размера net = cycleGANGenerator(inputSize)inputSize. Дополнительные сведения об архитектуре сети см. в разделе Сеть генератора CycleGAN.
Для выполнения этой функции требуется 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] задает размер ввода для 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' | Pad с использованием зеркальных значений входных данных, включая значения краев |
|
'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"или дескриптор функции. Дополнительные сведения см. в разделе Определение пользовательской функции инициализации веса (панель инструментов глубокого обучения).
'ActivationLayer' - Функция активации"relu" (по умолчанию) | "leakyRelu" | "elu" | объект-слойФункция активации для использования в сети, указанная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Слои активации (панель инструментов глубокого обучения).
"relu" - Использовать reluLayer (инструментарий для глубокого обучения)
"leakyRelu" - Использовать leakyReluLayer (Deep Learning Toolbox) с масштабным коэффициентом 0,2
"elu" - Использовать eluLayer (инструментарий для глубокого обучения)
Объект слоя
'FinalActivationLayer' - Функция активации после окончательного свертывания"tanh" (по умолчанию) | "none" | "sigmoid" | "softmax" | объект-слойФункция активации после конечного слоя свертки, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Выходные слои (панель инструментов глубокого обучения).
"tanh" - Использовать tanhLayer (инструментарий для глубокого обучения)
"sigmoid" - Использовать sigmoidLayer (инструментарий для глубокого обучения)
"softmax" - Использовать softmaxLayer (инструментарий для глубокого обучения)
"none" - Не использовать окончательный уровень активации
Объект слоя
'NormalizationLayer' - Операция нормализации"instance" (по умолчанию) | "none" | "batch" | объект-слойОперация нормализации, используемая после каждой свертки, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделах Нормализация, Отсев и Обрезка слоев (Панель инструментов глубокого обучения).
"instance" - Использовать instanceNormalizationLayer (инструментарий для глубокого обучения)
"batch" - Использовать batchNormalizationLayer (инструментарий для глубокого обучения)
"none" - Не использовать уровень нормализации
Объект слоя
'Dropout' - Вероятность отсева0 (по умолчанию) | число в диапазоне [0, 1]Вероятность отсева, указанная как число в диапазоне [0, 1]. Если указано значение 0, то сеть не включает уровни отсева. Если указано значение больше, чем 0, то сеть включает в себя dropoutLayer (Deep Learning Toolbox) в каждом остаточном блоке.
'NamePrefix' - Префикс ко всем именам слоев"" (по умолчанию) | строка | символьный векторПрефикс ко всем именам слоев в сети, заданный как строковый или символьный вектор.
Типы данных: char | string
net - Сеть генератора CycleGANdlnetwork объектГенераторная сеть CycleGAN, возвращенная как dlnetwork(Панель инструментов глубокого обучения).
Сеть генератора cycleGAN состоит из модуля кодера, за которым следует модуль декодера. Сеть по умолчанию следует архитектуре, предложенной Zhu et al. al. [1].
Модуль кодера понижает выборку входного сигнала на коэффициент 2 ^NumDownsamplingBlocks. Модуль кодера состоит из начального блока слоев, NumDownsamplingBlocks блоки понижающей дискретизации и NumResidualBlocks остаточные блоки. Модуль декодера увеличивает входной сигнал на коэффициент 2 ^NumDownsamplingBlocks. Модуль декодера состоит из: NumDownsamplingBlocks блоки повышающей дискретизации и конечный блок.
Таблица описывает блоки уровней, которые содержат модули кодера и декодера.
| Тип блока | Слои | Схема блока по умолчанию |
|---|---|---|
| Начальный блок |
|
|
| Блок понижающей дискретизации |
|
|
| Остаточный блок |
|
|
| Блок повышающей дискретизации |
|
|
| Окончательный блок |
|
|
[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.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.