主要内容

unitGenerator

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

描述

例子

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

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

  • 其中两个网络输出是自重构输出,换句话说,是源到源和目标到目标的翻译图像。另外两个网络输出是源到目标和目标到源的转换图像。

此功能需要深度学习工具箱™。

例子

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

例子

全部折叠

为大小为128 × 128的RGB图像指定网络输入大小。

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(净)

为大小为128 × 128的RGB图像指定网络输入大小。

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(净)

输入参数

全部折叠

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

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数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” 使用输入的镜像值填充,不包括边缘值

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(深度学习工具箱)

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

  • 一个层对象

输出参数

全部折叠

单元生成器网络,返回为dlnetwork(深度学习工具箱)对象。

更多关于

全部折叠

机组发电机网络

UNIT生成器网络由编码器模块中的三个子网络和解码器模块中的三个子网络组成。默认网络遵循Liu、Breuel和Kautz提出的体系结构[1]

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

编码器模块按2^的因子对输入进行采样NumDownsamplingBlocks.编码器模块由三个子网组成。

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

  • 目标编码器子网,称为“encoderTargetBlock”,有一个接收目标域中数据的初始层块,X年代.然后子网有NumDownsamplingBlocks下采样块对数据进行下采样NumResidualBlocks- - - - - -NumSharedBlocks残块。

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

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

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

  • 共享剩余解码器子网,称为“decoderSharedBlock”,接受来自编码器的数据,并具有NumSharedBlocks残块。

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

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

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

块类型 默认块示意图
最初的块

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

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

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

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

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

剩余块

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

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

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

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

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

最后一块
  • 一个convolution2dLayer(深度学习工具箱)步幅为[11],滤镜大小为FilterSizeInFirstAndLastBlocks

  • 属性指定的可选激活层SourceFinalActivationLayer而且TargetFinalActivationLayer名称-值参数。

二维卷积层,tanh层

提示

参考文献

[1]刘明宇,Thomas Breuel, Jan Kautz。“无监督图像到图像转换网络。”神经信息处理系统进展30 (NIPS 2017).加州长滩:2017年。https://arxiv.org/abs/1703.00848

R2021a中引入