Создайте неконтролируемую сеть генератора преобразования изображений в изображения (UNIT)
создает сеть генератора UNIT, net = unitGenerator(inputSizeSource)net, для входов размера inputSizeSource. Для получения дополнительной информации об архитектуре сети смотрите UNIT Generator Network. Сеть имеет два входа и четыре выхода:
Двумя сетевыми входами являются изображения в исходных и целевых областях. По умолчанию целевой размер изображения совпадает с размером исходного изображения. Вы можете изменить количество каналов в целевом изображении, задав 'NumTargetInputChannels'имя-значение аргумента.
Два сетевых выхода являются самовосстановленными выходами, другими словами, преобразованными изображениями от источника к источнику и от целевого к целевому. Другие два сетевых выхода являются преобразованными изображениями «источник-цель» и «цель-источник».
Эта функция требует Deep Learning Toolbox™.
изменяет аспекты сети генератора UNIT с помощью аргументов имя-значение.net = unitGenerator(inputSizeSource,Name,Value)
Укажите размер сетевого входа для изображений RGB размера 128 на 128.
inputSize = [128 128 3];
Создайте генератор UNIT, который генерирует изображения 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];
Создайте генератор UNIT с пятью остаточными блоками, три из которых являются общими между модулями энкодера и декодера.
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 - Входной размер исходного изображенияЗадайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'NumDownsamplingBlocks',3 создает сеть с 3 блоками понижающей дискретизации'NumDownsamplingBlocks' - Количество блоков понижающей дискретизации2 (по умолчанию) | положительное целое числоКоличество блоков понижающей дискретизации в подсетях исходного энкодера и целевого энкодера в виде положительного целого числа. В целом модуль энкодера понижает значение входного и целевого входных параметров в 2 ^ NumDownsamplingBlocks. Исходный декодер и подсеть целевого декодера имеют одинаковое количество блоков повышающей дискретизации.
'NumResidualBlocks' - Количество остаточных блоков5 (по умолчанию) | положительное целое числоКоличество остаточных блоков в модуле энкодера, заданное в виде положительного целого числа. Модуль декодера имеет одинаковое количество остаточных блоков.
'NumSharedBlocks' - Количество общих остаточных блоков2 (по умолчанию) | положительное целое числоКоличество остаточных блоков в подсети общего энкодера, заданное в виде положительного целого числа. Общая подсеть декодера имеет одинаковое количество остаточных блоков. Сеть должна содержать по крайней мере один общий остаточный блок.
'NumTargetChannels' - Количество каналов в целевом изображенииКоличество каналов в целевом изображении, заданное как положительное целое число. По умолчанию 'NumTargetChannels'совпадает с количеством каналов в исходном изображении, inputSizeSource.
'NumFiltersInFirstBlock' - Количество фильтров в первом слое свертки64 (по умолчанию) | положительное четное целое числоКоличество фильтров в первом слое свертки, заданное как положительное четное целое число.
'FilterSizeInFirstAndLastBlocks' - Размер фильтра в первом и последнем слоях свертки7 (по умолчанию) | положительное нечетное целое число | 2-элементный вектор положительных нечетных целых чиселРазмер фильтра в первом и последнем слоях свертки сети, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Когда вы задаете размер фильтра как скаляр, фильтр имеет равные высоту и ширину.
'FilterSizeInIntermediateBlocks' - Размер фильтра в промежуточных слоях3 (по умолчанию) | 2-элементный вектор положительных нечетных целых чисел | положительное нечетное целое числоРазмер фильтра в промежуточных слоях, заданный как положительное нечетное целое или 2-элементный вектор положительных нечетных целых чисел вида [ширина высоты ]. Промежуточные слои свертки являются слоями свертки, исключающими первый и последний слой свертки. Когда вы задаете размер фильтра как скаляр, фильтр имеет одинаковые высоту и ширину.
'ConvolutionPaddingValue' - Стиль заполнения"symmetric-exclude-edge" (по умолчанию) | "symmetric-include-edge" | "replicate" | числовой скалярСтиль заполнения, используемый в сети, задается как одно из следующих значений.
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' - Массовая инициализация, используемая в слоях"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 объектUNIT сеть генератора, возвращенная как dlnetwork (Deep Learning Toolbox) объект.
Сеть генератора UNIT состоит из трех подсетей в модуле энкодера и затем трех подсетей в модуле декодера. Сеть по умолчанию соответствует архитектуре, предложенной Liu, 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 является самовосстановленным изображением из целевой области в целевую область.
Таблица описывает блоки слоев, которые состоят из подсетей.
| Тип блока | Слои | Схема блока по умолчанию |
|---|---|---|
| Начальный блок |
|
|
| Блок понижающей дискретизации |
|
|
| Остаточный блок |
|
|
| Блок повышающей дискретизации |
|
|
| Конечный блок |
|
|
Вы можете создать сеть дискриминатора для МОДУЛЬ при помощи patchGANDiscriminator функция.
Обучите сеть UNIT GAN с помощью пользовательского цикла обучения.
Чтобы выполнить область исходного изображения в целевое и наоборот, используйте unitPredict функция.
Для кодировки общих скрытых функций аргументы 'NumSharedBlocks'и' NumResidualBlocks'должно быть больше 0.
[1] Лю, Мин-Ю, Томас Бреуэль и Ян Каутц. «Неконтролируемые сети перевода изображений в изображения». Усовершенствования в системах нейронной обработки информации 30 (NIPS 2017). Лонг Бич, Калифорния: 2017. https://arxiv.org/abs/1703.00848.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.