Создайте безнадзорный перевод от изображения к изображению (МОДУЛЬ) сеть генератора
создает МОДУЛЬНУЮ сеть генератора, net
= unitGenerator(inputSizeSource
)net
, для входа размера inputSizeSource
. Для получения дополнительной информации о сетевой архитектуре, смотрите МОДУЛЬНУЮ Сеть Генератора. Сеть имеет два входных параметров и четыре выходных параметров:
Два сетевых входных параметров являются изображениями во входных и выходных областях. По умолчанию размер целевого изображения - то же самое как размер исходного изображения. Можно изменить количество каналов в целевом изображении путем определения 'NumTargetInputChannels
'аргумент значения имени.
Двумя из сетевых выходных параметров являются самовосстановленные выходные параметры, другими словами, от источника к источнику и от цели к цели перевели изображения. Другие два сетевых выходных параметров являются источником к цели, и цель к источнику перевела изображения.
Эта функция требует Deep Learning Toolbox™.
изменяет аспекты МОДУЛЬНОЙ сети генератора использование аргументов значения имени.net
= unitGenerator(inputSizeSource
,Name,Value
)
Задайте сетевой входной размер для изображений RGB размера 128 128.
inputSize = [128 128 3];
Создайте МОДУЛЬНЫЙ генератор, который генерирует изображения RGB входного размера.
net = unitGenerator(inputSize)
net = dlnetwork with properties: Layers: [9x1 nnet.cnn.layer.Layer] Connections: [8x2 table] Learnables: [168x3 table] State: [0x3 table] InputNames: {'inputSource' 'inputTarget'} OutputNames: {1x4 cell} Initialized: 1
Отобразите сеть.
analyzeNetwork(net)
Задайте сетевой входной размер для изображений RGB размера 128 128.
inputSize = [128 128 3];
Создайте МОДУЛЬНЫЙ генератор с пятью остаточными блоками, три из которых совместно используются модулями энкодера и декодера.
net = unitGenerator(inputSize,"NumResidualBlocks",5, ... "NumSharedBlocks",3)
net = dlnetwork with properties: Layers: [9x1 nnet.cnn.layer.Layer] Connections: [8x2 table] Learnables: [152x3 table] State: [0x3 table] InputNames: {'inputSource' 'inputTarget'} OutputNames: {1x4 cell} Initialized: 1
Отобразите сеть.
analyzeNetwork(net)
inputSizeSource
— Введите размер исходного изображенияВведите размер исходного изображения в виде вектора с 3 элементами из положительных целых чисел. inputSizeSource
имеет форму [H
W
C], где H является высотой, W является шириной, и C является количеством каналов. Длина каждой размерности должна быть равномерно делимой 2^NumDownsamplingBlocks
.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'NumDownsamplingBlocks',3
создает сеть с 3 блоками субдискретизации'NumDownsamplingBlocks'
— Количество субдискретизации блоков
(значение по умолчанию) | положительное целое числоКоличество субдискретизации блоков в исходном энкодере и целевом энкодере разделяет на подсети в виде положительного целого числа. Всего, модуль энкодера прореживает входной и выходной вход на коэффициент 2^NumDownsamplingBlocks
. Исходный декодер и целевые подсети декодера имеют то же количество повышающей дискретизации блоков.
'NumResidualBlocks'
— Количество остаточных блоков
(значение по умолчанию) | положительное целое числоКоличество остаточных блоков в модуле энкодера в виде положительного целого числа. Модуль декодера имеет то же количество остаточных блоков.
'NumSharedBlocks'
— Количество разделяемых остаточных блоков
(значение по умолчанию) | положительное целое числоКоличество остаточных блоков в разделяемом энкодере разделяет на подсети в виде положительного целого числа. Разделяемая подсеть декодера имеет то же количество остаточных блоков. Сеть должна содержать по крайней мере один разделяемый остаточный блок.
'NumTargetChannels'
— Количество каналов в целевом изображенииКоличество каналов в целевом изображении в виде положительного целого числа. По умолчанию, 'NumTargetChannels
'совпадает с количеством каналов в исходном изображении, inputSizeSource
.
'NumFiltersInFirstBlock'
— Количество просачивается первый слой свертки
(значение по умолчанию) | положительный даже целое числоКоличество просачивается первый слой свертки в виде положительного даже целое число.
'FilterSizeInFirstAndLastBlocks'
— Отфильтруйте размер в первых и последних слоях свертки
(значение по умолчанию) | положительное нечетное целое число | вектор с 2 элементами из положительных нечетных целых чиселОтфильтруйте размер в первых и последних слоях свертки сети в виде положительного нечетного целочисленного или вектора с 2 элементами из положительных нечетных целых чисел формы [ ширина высоты]. Когда вы задаете размер фильтра как скаляр, фильтр имеет равную высоту и ширину.
'FilterSizeInIntermediateBlocks'
— Отфильтруйте размер в промежуточных слоях свертки
(значение по умолчанию) | вектор с 2 элементами из положительных нечетных целых чисел | положительное нечетное целое числоОтфильтруйте размер в промежуточных слоях свертки в виде положительного нечетного целочисленного или вектора с 2 элементами из положительных нечетных целых чисел формы [ ширина высоты]. Промежуточные слои свертки являются слоями свертки, исключая первый и последний слой свертки. Когда вы задаете размер фильтра как скаляр, фильтр имеет идентичную высоту и ширину.
'ConvolutionPaddingValue'
— Стиль дополнения"symmetric-exclude-edge"
(значение по умолчанию) | "symmetric-include-edge"
| "replicate"
| числовой скалярСтиль дополнения используемого в сети в виде одного из этих значений.
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'
— Инициализация веса используется в слоях свертки"he"
(значение по умолчанию) | "glorot"
| "narrow-normal"
| функцияИнициализация веса используется в слоях свертки в виде "glorot"
, "he"
, "narrow-normal"
, или указатель на функцию. Для получения дополнительной информации смотрите, Задают Пользовательскую Функцию Инициализации Веса (Deep Learning Toolbox).
'ActivationLayer'
— Функция активации"relu"
(значение по умолчанию) | "leakyRelu"
| "elu"
| расположенный на слое объектФункция активации, чтобы использовать в сети кроме после первых и итоговых слоев свертки в виде одного из этих значений. unitGenerator
функция автоматически добавляет текучий слой ReLU после первого слоя свертки. Для получения дополнительной информации и список доступных слоев, смотрите Слои Активации (Deep Learning Toolbox).
"relu"
— Используйте reluLayer
(Deep Learning Toolbox)
"leakyRelu"
— Используйте leakyReluLayer
(Deep Learning Toolbox) с масштабным коэффициентом 0,2
"elu"
— Используйте eluLayer
(Deep Learning Toolbox)
Расположенный на слое объект
'SourceFinalActivationLayer'
— Функция активации после итоговой свертки в исходном декодере"tanh"
(значение по умолчанию) | "sigmoid"
| "softmax"
| "none"
| расположенный на слое объектФункция активации после итогового слоя свертки в исходном декодере в виде одного из этих значений. Для получения дополнительной информации и список доступных слоев, смотрите Выходные Слои (Deep Learning Toolbox).
"tanh"
— Используйте tanhLayer
(Deep Learning Toolbox)
"sigmoid"
— Используйте sigmoidLayer
(Deep Learning Toolbox)
"softmax"
— Используйте softmaxLayer
(Deep Learning Toolbox)
"none"
— Не используйте итоговый слой активации
Расположенный на слое объект
'TargetFinalActivationLayer'
— Функция активации после итоговой свертки в целевом декодере"tanh"
(значение по умолчанию) | "sigmoid"
| "softmax"
| "none"
| расположенный на слое объектФункция активации после итогового слоя свертки в целевом декодере в виде одного из этих значений. Для получения дополнительной информации и список доступных слоев, смотрите Выходные Слои (Deep Learning Toolbox).
"tanh"
— Используйте tanhLayer
(Deep Learning Toolbox)
"sigmoid"
— Используйте sigmoidLayer
(Deep Learning Toolbox)
"softmax"
— Используйте softmaxLayer
(Deep Learning Toolbox)
"none"
— Не используйте итоговый слой активации
Расположенный на слое объект
net
— МОДУЛЬНАЯ сеть генератораdlnetwork
объектМОДУЛЬНАЯ сеть генератора, возвращенная как dlnetwork
Объект (Deep Learning Toolbox).
МОДУЛЬНАЯ сеть генератора состоит из трех подсетей в модуле энкодера, сопровождаемом тремя подсетями в модуле декодера. Сеть по умолчанию следует за архитектурой, предложенной Лю, Breuel и Kautz [1].
Модуль энкодера прореживает вход на коэффициент 2^NumDownsamplingBlocks
. Модуль энкодера состоит из трех подсетей.
Исходная подсеть энкодера, названная 'encoderSourceBlock', имеет начальный блок слоев, который принимает данные в исходной области, XS. Подсеть затем имеет NumDownsamplingBlocks
субдискретизация блокируется, которые прореживают данные и NumResidualBlocks
– NumSharedBlocks
остаточные блоки.
Целевая подсеть энкодера, названная 'encoderTargetBlock', имеет начальный блок слоев, который принимает данные в целевой области, XS. Подсеть затем имеет NumDownsamplingBlocks
субдискретизация блокируется, которые прореживают данные и NumResidualBlocks
– NumSharedBlocks
остаточные блоки.
Выход исходного энкодера и целевого энкодера объединен concatenationLayer
(Deep Learning Toolbox)
Разделяемая остаточная подсеть энкодера, названная 'encoderSharedBlock', принимает конкатенированные данные и имеет NumSharedBlocks
остаточные блоки.
Модуль декодера состоит из трех подсетей, которые выполняют в общей сложности NumDownsamplingBlocks
повышающая дискретизация операций на данных.
Разделяемая остаточная подсеть декодера, названная 'decoderSharedBlock', принимает данные из энкодера и имеет NumSharedBlocks
остаточные блоки.
Исходная подсеть декодера, названная 'decoderSourceBlock', имеет NumResidualBlocks
– NumSharedBlocks
остаточные блоки, NumDownsamplingBlocks
субдискретизация блокируется, которые прореживают данные и итоговый блок слоев, который возвращает выходной параметр. Эта подсеть возвращает два выходных параметра в исходной области: XTS и XSS. Выход XTS является изображением, переведенным от целевой области до исходной области. Выход XSS является самовосстановленным изображением от исходной области до исходной области.
Целевая подсеть декодера, названная 'decoderTargetBlock', имеет NumResidualBlocks
– NumSharedBlocks
остаточные блоки, NumDownsamplingBlocks
субдискретизация блокируется, которые прореживают данные и итоговый блок слоев, который возвращает выходной параметр. Эта подсеть возвращает два выходных параметра в целевой области: XST и XTT. Выход XTS является изображением, переведенным от исходной области до целевой области. Выход XTT является самовосстановленным изображением от целевой области до целевой области.
Таблица описывает блоки слоев, которые включают подсети.
Тип блока | Слои | Схема блока по умолчанию |
---|---|---|
Начальный блок |
|
|
Блок Downsampling |
|
|
Остаточный блок |
|
|
Блок Upsampling |
|
|
Итоговый блок |
|
|
Можно создать сеть различителя для МОДУЛЯ при помощи patchGANDiscriminator
функция.
Обучите МОДУЛЬ сеть ГАНЯ использование пользовательского учебного цикла.
Чтобы выполнить доменный перевод исходного изображения к целевому изображению и наоборот, используйте unitPredict
функция.
Для разделяемого скрытого кодирования функции, аргументы 'NumSharedBlocks
'и 'NumResidualBlocks
'должен быть больше 0.
[1] Лю, Мин-Юй, Томас Бреуель и Ян Коц. "Безнадзорные Сети Перевода От изображения к изображению". Усовершенствования в Нейронных Системах обработки информации 30 (NIPS 2017). Лонг-Бич, CA: 2017. https://arxiv.org/abs/1703.00848.
cycleGANGenerator
| patchGANDiscriminator
| pix2pixHDGlobalGenerator
| unitPredict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.