主要内容

unitGenerator

创建无监督图像到图像平移(UNIT)生成器网络

描述

例子

= unitGenerator (inputSizeSource创建一个单元发电机网络,,为大小输入inputSizeSource.有关网络架构的更多信息,请参见单位发电机网络.网络有两个输入和四个输出:

  • 这两个网络输入是源域和目标域中的映像。默认情况下,目标图像大小与源图像大小相同。你可以通过指定'NumTargetInputChannels“名称-值参数。

  • 网络输出中有两种是自重构输出,即源到源和目标到目标的翻译图像。另外两个网络输出是源到目标和目标到源的翻译图像。

该函数需要深度学习工具箱™。

例子

= unitGenerator (inputSizeSource名称,值使用名称-值参数修改UNIT生成器网络的各个方面。

例子

全部折叠

为尺寸为128 * 128的RGB图像指定网络输入大小。

inputSize = [128 128 3];

创建一个单元生成器,生成输入大小的RGB图像。

净= unitGenerator (inputSize)
net = dlnetwork with properties: Layers: [9x1 nnet.cn .layer. layer] Connections: [8x2 table] Learnables: [168x3 table] State: [0x3 table] InputNames: {'inputSource' 'inputTarget'} OutputNames: {1x4 cell} Initialized: 1

显示网络。

analyzeNetwork(净)

为尺寸为128 * 128的RGB图像指定网络输入大小。

inputSize = [128 128 3];

创建一个带有五个剩余块的UNIT生成器,其中三个在编码器和解码器模块之间共享。

网= unitGenerator (inputSize,“NumResidualBlocks”5,...“NumSharedBlocks”3)
net = dlnetwork with properties: Layers: [9x1 nnet.cn .layer. layer]连接:[8x2 table]可学习表:[152x3 table]状态:[0x3 table] InputNames: {'inputSource' 'inputTarget'} OutputNames: {1x4 cell} Initialized: 1

显示网络。

analyzeNetwork(净)

输入参数

全部折叠

源图像的输入大小,指定为正整数的3元素向量。inputSizeSource有表格[HWC),H的高度,W是宽度,和C是通道数。每个维度的长度必须能被2的平方整除NumDownsamplingBlocks

名称-值参数

指定可选的用逗号分隔的对名称,值参数。的名字参数是name和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“NumDownsamplingBlocks”,3创建一个包含3个下采样块的网络

源编码器和目标编码器子网络中的下采样块数,指定为正整数。总的来说,编码器模块将源和目标输入的采样降低了2^NumDownsamplingBlocks.源解码器和目标解码器子网具有相同数量的上采样块。

编码器模块中的剩余块数,指定为正整数。解码器模块具有相同数量的剩余块。

共享编码器子网络中的剩余块数,指定为正整数。共享解码器子网具有相同数量的剩余块。网络应该包含至少一个共享的剩余块。

目标图像中的通道数,指定为正整数。默认情况下,“NumTargetChannels与源图像中的通道数量相同,inputSizeSource

在第一卷积层的过滤器数量,指定为一个正的偶数。

网络第一和最后卷积层的过滤器大小,指定为正奇数或正奇数形式的2元向量[高度宽度].当您将筛选器大小指定为标量时,筛选器具有相同的高度和宽度。

中间卷积层的过滤器大小,指定为正奇整数或正奇整数的2元素向量,形式为[高度宽度].中间卷积层是不包括第一层和最后一层的卷积层。当您将筛选器大小指定为标量时,筛选器具有相同的高度和宽度。

网络中使用的填充样式,指定为这些值之一。

PaddingValue 描述 例子
数字标量 用指定的数值填充

3. 1 4 1 5 9 2 6 5 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3. 1 4 2 2 2 2 1 5 9 2 2 2 2 2 6 5 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

“symmetric-include-edge” 填充使用输入的镜像值,包括边缘值

3. 1 4 1 5 9 2 6 5 5 1 1 5 9 9 5 1 3. 3. 1 4 4 1 1 3. 3. 1 4 4 1 5 1 1 5 9 9 5 6 2 2 6 5 5 6 6 2 2 6 5 5 6 5 1 1 5 9 9 5

“symmetric-exclude-edge” Pad使用输入的镜像值,不包括边缘值

3. 1 4 1 5 9 2 6 5 5 6 2 6 5 6 2 9 5 1 5 9 5 1 4 1 3. 1 4 1 3. 9 5 1 5 9 5 1 5 6 2 6 5 6 2 9 5 1 5 9 5 1 4 1 3. 1 4 1 3.

“复制” 填充使用重复的输入边框元素

3. 1 4 1 5 9 2 6 5 3. 3. 3. 1 4 4 4 3. 3. 3. 1 4 4 4 3. 3. 3. 1 4 4 4 1 1 1 5 9 9 9 2 2 2 6 5 5 5 2 2 2 6 5 5 5 2 2 2 6 5 5 5

方法,用于对激活进行向上采样,指定为以下值之一:

数据类型:字符|字符串

权重初始化在卷积层中使用,指定为“glorot”“他”“narrow-normal”,或函数句柄。有关更多信息,请参见指定自定义权重初始化功能(深度学习工具箱)

在网络中使用的激活函数,除了在第一层和最后一层卷积之后,指定为这些值之一。的unitGenerator函数在第一个卷积层之后自动添加一个漏的ReLU层。有关更多信息和可用层列表,请参见激活层(深度学习工具箱)

  • “relu”——使用一个reluLayer(深度学习工具箱)

  • “leakyRelu”——使用一个leakyReluLayer(深度学习工具箱)比例系数为0.2

  • “elu”——使用一个eluLayer(深度学习工具箱)

  • 一层对象

激活函数后的最后卷积层在源解码器,指定为这些值之一。有关更多信息和可用层列表,请参见输出层(深度学习工具箱)

  • ”“双曲正切——使用一个tanhLayer(深度学习工具箱)

  • “乙状结肠”——使用一个sigmoidLayer(深度学习工具箱)

  • “softmax”——使用一个softmaxLayer(深度学习工具箱)

  • “没有”-不使用最终激活层

  • 一层对象

激活函数后的最后卷积层在目标解码器,指定为这些值之一。有关更多信息和可用层列表,请参见输出层(深度学习工具箱)

  • ”“双曲正切——使用一个tanhLayer(深度学习工具箱)

  • “乙状结肠”——使用一个sigmoidLayer(深度学习工具箱)

  • “softmax”——使用一个softmaxLayer(深度学习工具箱)

  • “没有”-不使用最终激活层

  • 一层对象

输出参数

全部折叠

单元发电机网络,返回为adlnetwork(深度学习工具箱)对象。

更多关于

全部折叠

单位发电机网络

单元发生器网络包括编码器模块中的三个子网络,接着是解码器模块中的三个子网络。默认网络遵循Liu、Breuel和Kautz提出的架构[1]

单元网络的输入、编码器模块、解码器模块和输出。

编码器模块对输入下采样2^NumDownsamplingBlocks.编码器模块由三个子网络组成。

  • 源编码器子网络,称为'encoderSourceBlock',有一个初始层块,接受源域中的数据,X年代.子网就有了NumDownsamplingBlocks下采样块对数据进行下采样NumResidualBlocks- - - - - -NumSharedBlocks残块。

  • 目标编码器子网络,称为'encoderTargetBlock',有一个初始层块,接受目标域中的数据,X年代.子网就有了NumDownsamplingBlocks下采样块下采样数据NumResidualBlocks- - - - - -NumSharedBlocks残块。

  • 源编码器和目标编码器的输出由a组合concatenationLayer(深度学习工具箱)

  • 共享的剩余编码器子网络,称为'encoderSharedBlock',接受连接的数据,并有NumSharedBlocks残块。

解码器模块由三个子网络组成,它们总共执行NumDownsamplingBlocks数据的上采样操作。

  • 共享剩余解码器子网络,称为'decoderSharedBlock',接受来自编码器的数据NumSharedBlocks残块。

  • 源解码器子网络,称为'decoderSourceBlock',有NumResidualBlocks- - - - - -NumSharedBlocks残块,NumDownsamplingBlocks下采样块对数据进行下采样,最后一个层块返回输出。这个子网络在源域中返回两个输出:XTSX党卫军.输出XTS是从目标域转换到源域的图像。输出X党卫军是一个从源域到源域的自重构图像。

  • 目标解码器子网络,称为'decoderTargetBlock',有NumResidualBlocks- - - - - -NumSharedBlocks残块,NumDownsamplingBlocks下采样块对数据进行下采样,最后一个层块返回输出。这个子网络在目标域中返回两个输出:XXTT.输出XTS是从源域转换到目标域的图像。输出XTT是一个从目标域到目标域的自重构图像。

该表描述了组成子网的层块。

块类型 默认块图
最初的块

图像输入层,二维卷积层,漏ReLU层

将采样块
  • 一个convolution2dLayer(深度学习工具箱)以[2 2]的步幅进行降采样。卷积层的过滤器大小为FilterSizeInIntermediateBlocks

  • 一个instanceNormalizationLayer(深度学习工具箱)

  • 指定的激活层ActivationLayer名称-值参数。

二维卷积层,实例归一化层,ReLU层

剩余块

二维卷积层、实例归一化层、ReLU层、二维卷积层、实例归一化层、加法层

Upsampling块
  • 上采样层,根据UpsampleMethod名称-值参数。卷积层的过滤器大小为FilterSizeInIntermediateBlocks

  • 一个instanceNormalizationLayer(深度学习工具箱)

  • 指定的激活层ActivationLayer名称-值参数。

转置的二维卷积层,实例归一化层,ReLU层

最后一块
  • 一个convolution2dLayer(深度学习工具箱)步长为[1 1],过滤器大小为FilterSizeInFirstAndLastBlocks

  • 控件指定的可选激活层SourceFinalActivationLayerTargetFinalActivationLayer名称-值参数。

二维卷积层,tanh层

提示

  • 参数可以为UNIT创建标识器网络patchGANDiscriminator函数。

  • 使用自定义训练循环训练UNIT GAN网络。

  • 要执行源图像到目标图像的域转换和目标图像的域转换,可以使用unitPredict函数。

  • 对于共享的潜在特征编码,参数'NumSharedBlocks”和“NumResidualBlocks'必须大于0。

参考文献

[1]刘明玉,托马斯·布鲁尔,简·考茨基。"无监督图像到图像翻译网络"神经信息处理系统进展30 (NIPS 2017).长滩,加州:2017。https://arxiv.org/abs/1703.00848

介绍了R2021a