CNN/GAN 中的通道

数据挖掘 神经网络 喀拉斯
2022-03-01 13:19:26

我发现了这篇关于艺术生成的文章,它使用 GAN 架构来生成艺术。让我们转到定义生成器模型的部分。

def build_generator(noise_size, channels):
    model = Sequential()
    model.add(Dense(4 * 4 * 256, activation=”relu”,       input_dim=noise_size))
    model.add(Reshape((4, 4, 256)))
    model.add(UpSampling2D())
    model.add(Conv2D(256, kernel_size=3, padding=”same”))
    model.add(BatchNormalization(momentum=0.8))
    model.add(Activation(“relu”))
    model.add(UpSampling2D())
    model.add(Conv2D(256, kernel_size=3, padding=”same”))
    model.add(BatchNormalization(momentum=0.8))
    model.add(Activation(“relu”))
    for i in range(GENERATE_RES):
         model.add(UpSampling2D())
         model.add(Conv2D(256, kernel_size=3, padding=”same”))
         model.add(BatchNormalization(momentum=0.8))
         model.add(Activation(“relu”))
    model.summary()
    model.add(Conv2D(channels, kernel_size=3, padding=”same”))
    model.add(Activation(“tanh”))
    input = Input(shape=(noise_size,))
    generated_image = model(input)
    return Model(input, generated_image)

我明白为什么我们增加输入4x4x256(model.add(Dense(4 * 4 * 256, activation=”relu”, input_dim=noise_size))),但生成器返回形状为 4x4x256 的图像。如何使用此图像?这是怎么回事?我认为,我们只能处理灰色(1 通道)图像和 RGB 图像(3 通道)。

1个回答

数字 4 与通道数无关,仅用于定义潜在空间的维度(总共为 2048,4 x 4 x 256)。生成器输出形状为 的图像,图像(128, 128, 3)的高度和宽度为 128 像素,图像有 3 个通道。这在定义生成器的最后一层时可以看出Conv2d

model.add(Conv2D(channels, kernel_size=3, padding="same"))

该层的通道/过滤器数量由channels变量定义,该变量是build_generator函数的参数。稍后调用此函数时,您可以看到提供的值是IMAGE_CHANNELS,在文章开头设置为 3。

不过,可以处理具有 4 个通道的图像。除了红色、绿色和蓝色 (RGBA) 之外,这些图像还有代表 alpha 的第四维。