Создание сети генератора преобразования изображения в изображение без контроля (UNIT)
создает сеть генератора UNIT, net = unitGenerator(inputSizeSource)net, для ввода размера inputSizeSource. Дополнительные сведения об архитектуре сети см. в разделе Сеть генератора UNIT. Сеть имеет два входа и четыре выхода:
Два сетевых входа являются образами в исходном и целевом доменах. По умолчанию размер целевого изображения совпадает с размером исходного изображения. Можно изменить количество каналов в целевом изображении, указав 'NumTargetInputChannelsаргумент «имя-значение».
Два из сетевых выходов являются самостоятельно реконструированными выходами, другими словами, преобразованными изображениями «источник-источник» и «цель-цель». Другими двумя сетевыми выходами являются преобразованные изображения «источник-цель» и «объект-источник».
Для выполнения этой функции требуется 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 - Входной размер исходного изображенияВходной размер исходного изображения, заданный как 3-элементный вектор положительных целых чисел. inputSizeSource имеет вид [H
W C], где H
- высота, W - ширина, а C - количество каналов. Длина каждого размера должна быть равномерно разделена на 2 ^NumDownsamplingBlocks.
Укажите дополнительные пары, разделенные запятыми 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' | 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' - Инициализация веса, используемая в слоях свертки"he" (по умолчанию) | "glorot" | "narrow-normal" | функцияИнициализация веса, используемая в слоях свертки, указанная как "glorot", "he", "narrow-normal"или дескриптор функции. Дополнительные сведения см. в разделе Определение пользовательской функции инициализации веса (панель инструментов глубокого обучения).
'ActivationLayer' - Функция активации"relu" (по умолчанию) | "leakyRelu" | "elu" | объект-слойФункция активации, используемая в сети, за исключением первого и последнего уровней свертки, указанных как одно из этих значений. unitGenerator функция автоматически добавляет протекающий слой ReLU после первого слоя свертки. Дополнительные сведения и список доступных слоев см. в разделе Слои активации (панель инструментов глубокого обучения).
"relu" - Использовать reluLayer (инструментарий для глубокого обучения)
"leakyRelu" - Использовать leakyReluLayer (Deep Learning Toolbox) с масштабным коэффициентом 0,2
"elu" - Использовать eluLayer (инструментарий для глубокого обучения)
Объект слоя
'SourceFinalActivationLayer' - Функция активации после окончательного свертывания в декодере источника"tanh" (по умолчанию) | "sigmoid" | "softmax" | "none" | объект-слойФункция активации после конечного уровня свертки в декодере источника, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Выходные слои (панель инструментов глубокого обучения).
"tanh" - Использовать tanhLayer (инструментарий для глубокого обучения)
"sigmoid" - Использовать sigmoidLayer (инструментарий для глубокого обучения)
"softmax" - Использовать softmaxLayer (инструментарий для глубокого обучения)
"none" - Не использовать окончательный уровень активации
Объект слоя
'TargetFinalActivationLayer' - Функция активации после окончательного свертывания в целевом декодере"tanh" (по умолчанию) | "sigmoid" | "softmax" | "none" | объект-слойФункция активации после конечного уровня свертки в целевом декодере, заданная как одно из этих значений. Дополнительные сведения и список доступных слоев см. в разделе Выходные слои (панель инструментов глубокого обучения).
"tanh" - Использовать tanhLayer (инструментарий для глубокого обучения)
"sigmoid" - Использовать sigmoidLayer (инструментарий для глубокого обучения)
"softmax" - Использовать softmaxLayer (инструментарий для глубокого обучения)
"none" - Не использовать окончательный уровень активации
Объект слоя
net - сеть генераторов БЛОКdlnetwork объектГенераторная сеть UNIT, возвращенная как dlnetwork(Панель инструментов глубокого обучения).
Генераторная сеть UNIT состоит из трех подсетей в модуле кодера, за которыми следуют три подсети в модуле декодера. Сеть по умолчанию соответствует архитектуре, предложенной Лю, Бреуэлем и Каутцем [1].

Модуль кодера понижает выборку входного сигнала на коэффициент 2 ^NumDownsamplingBlocks. Модуль кодера состоит из трех подсетей.
Подсеть исходного кодера, называемая «encureSourceBlock», имеет начальный блок уровней, который принимает данные в исходной области, XS. Затем подсеть имеет NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают выборку данных и NumResidualBlocks–NumSharedBlocks остаточные блоки.
Подсеть целевого кодера, называемая «encureTargetBlock», имеет начальный блок уровней, который принимает данные в целевом домене, XS. Затем подсеть имеет NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают выборку данных, и NumResidualBlocks–NumSharedBlocks остаточные блоки.
Выход исходного кодера и целевого кодера объединяются посредством concatenationLayer (инструментарий для глубокого обучения)
Подсеть общего остаточного кодера, называемая «encedSharedBlock», принимает конкатенированные данные и имеет NumSharedBlocks остаточные блоки.
Модуль декодера состоит из трех подсетей, которые выполняют в общей сложности NumDownsamplingBlocks операции повышения дискретизации данных.
Подсеть общего остаточного декодера, называемая «SharedBlock», принимает данные от кодера и имеет NumSharedBlocks остаточные блоки.
Исходная подсеть декодера, названная 'decoderSourceBlock', имеет NumResidualBlocks–NumSharedBlocks остаточные блоки, NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают выборку данных, и конечный блок уровней, который возвращает выходные данные. Эта подсеть возвращает два выхода в исходном домене: XTS и XSS. Выходной XTS является изображением, преобразованным из целевого домена в исходный домен. Выходной XSS представляет собой самовосстановленное изображение из исходного домена в исходный домен.
Целевая подсеть декодера, названная 'decoderTargetBlock', имеет NumResidualBlocks–NumSharedBlocks остаточные блоки, NumDownsamplingBlocks блоки понижающей дискретизации, которые понижают выборку данных, и конечный блок уровней, который возвращает выходные данные. Эта подсеть возвращает два выхода в целевой области: XST и XTT. Выходной XTS является изображением, преобразованным из исходного домена в целевой домен. Выходной XTT представляет собой самовосстановленное изображение из целевого домена в целевой домен.
В таблице описаны блоки слоев, составляющих подсети.
| Тип блока | Слои | Схема блока по умолчанию |
|---|---|---|
| Начальный блок |
|
|
| Блок понижающей дискретизации |
|
|
| Остаточный блок |
|
|
| Блок повышающей дискретизации |
|
|
| Окончательный блок |
|
|
Сеть дискриминаторов для UNIT можно создать с помощью patchGANDiscriminator функция.
Обучение сети GAN UNIT с использованием пользовательского цикла обучения.
Для выполнения преобразования исходного образа в целевой образ в домене и наоборот используйте unitPredict функция.
Для кодировки общих скрытых функций аргументы 'NumSharedBlocks«и»NumResidualBlocksЗначение «» должно быть больше 0.
[1] Лю, Мин-Ю, Томас Бреуэль и Ян Каутц. «Неподконтрольные сети преобразования изображений в изображения». Достижения в системах обработки нейронной информации 30 (NIPS 2017). Лонг-Бич, Калифорния: 2017. https://arxiv.org/abs/1703.00848.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.