机器学习中的图像生成

2025年3月17日 | 阅读 12 分钟

图像生成是指使用算法和模型从头开始创建新图像的过程。传统上,图像由艺术家或设计师使用画笔和计算机软件生成。然而,随着机器学习的引入,计算机现在可以独立生成图像,其结果常常能与人类创作的艺术品媲美。

生成模型是一类机器学习算法,它学习创建与给定数据集高度相似的新数据样本。这些模型可以使用各种数据格式进行训练,例如照片、文本和音频。GAN 和 VAE 是用于图像生成的两种常见生成模型。

GAN

GAN 是一种由 Ian Goodfellow 及其同事于 2014 年开发的生成模型。GAN 由两个神经网络组成:生成器和判别器。生成器接收随机噪声作为输入,并学习生成逼真的图像,而判别器则学习区分真实图像和伪造图像。在训练过程中,生成器和判别器以竞争的方式同时训练,生成器试图欺骗判别器,判别器试图准确地对真实和伪造图像进行分类。通过这种对抗过程,GAN 学会生成越来越逼真的图像。

VAE

VAE 是另一种生成模型,它被训练来编码和解码高维数据。在图像生成的上下文中,VAE 由一个编码器网络组成,该网络将输入图像映射到一个低维潜在空间,以及一个解码器网络,该网络从潜在空间中的样本重建图像。与通过从噪声分布采样来创建图像的 GAN 不同,VAE 通过从潜在空间采样来生成图像,从而实现样本之间的平滑插值。VAE 通过变分推理框架进行训练,在该框架中,模型通过最大化证据下界 (ELBO) 来学习逼近真实数据分布。

我们将使用 GAN 来生成创新的架构。

代码

导入库


调整图像大小

我们将再次将图像大小调整为 (128,128)。

辅助函数

我们将创建各种辅助函数,以方便对图像数据进行预处理和批处理,从而更轻松地处理数据集。

探索图像

让我们展示我们的图像样本。

Image Generation Using Machine Learning

模型架构

我们将为网络的输入创建 TensorFlow 占位符。例如:-

  • 真实输入图像占位符:real_dim。
  • Z 输入占位符 z_dim,也称为噪声向量。
  • 生成器的学习率占位符。
  • 判别器的学习率占位符。

现在我们将处理生成器网络,该网络将包含:-

  • DCGAN 生成器采用反卷积神经网络架构,它接收随机噪声向量 (z) 作为输入,并通过多层批量归一化和 Leaky ReLu 进行处理,每层的滤波器大小都会减小。
  • 为了避免梯度消失,除了最后一层外,所有层都应用 Leaky ReLu 激活函数。
  • 最后一层使用 tanh 激活函数生成最终输出,生成一个 128x128x3 的图像。

现在我们将处理判别器网络,该网络将包含:-

  • 类似地,判别器网络采用卷积神经网络设计,它接收大小为 128x128x3 的真实图像输入。每层滤波器大小加倍,导致图像大小减小。
  • 网络包含多层批量归一化和 Leaky ReLu,最后一层将图像展平并通过 sigmoid 函数。
  • 最后一层的 sigmoid 激活函数生成最终输出,这是一个二元值 0(伪造)或 1(真实)。

生成器和判别器的损失

我们将创建一个函数,该函数将根据判别器和生成器网络的各自损失来更新它们的权重,从而训练模型。

在估算损失后,我们必须分别更新生成器和判别器。

为此,我们必须通过调用 tf.trainable_variables() 来获取每个组件的变量,它会返回图中所有声明的变量的列表。然后,我们将使用这些变量来更新网络的训练参数。

我们将保存生成器的输出,以便在训练过程中评估模型的训练效果。

训练模型。

我们将使用诸如 epoch、batch size 和 learning rate 等超参数来训练模型。在这种情况下,我们每五个 epoch 保存一次模型,并在每 10 个图像训练批次中保存生成的图像。同时,我们计算并显示 g_loss 和 d_loss。

与其他神经网络一样,GAN 对超参数非常敏感。通常,判别器损失约为 0.3 表明它大约 50% 的时间能够正确地将图像分类为伪造或真实。


绘制生成的图像

输出

Image Generation Using Machine Learning

这是一张图,显示了在多个训练步骤中图像是如何生成的。

尽管生成的图形质量较低,但这些结果表明 GAN 在创意领域可能是一个有价值的工具。下面显示的结果是在一台普通 CPU 上训练模型数小时后获得的。预计在高端 GPU/TPU 上训练将产生明显更好的结果。


下一主题置信区间