郭震 AI公众号:郭震AI

16 生成对抗网络(GAN)图像生成案例探索

发布日期:

最近更新:

分类: GAN网络从零教程

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点6 个
图文要点6 张
正文规模1.2k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 6 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

生成对抗网络(GAN)图像生成案例探索结构图查看大图
生成对抗网络(GAN)图像生成案例探索结构图

GAN 的关键是生成器和判别器互相推动,学习时要同时看结构、训练和样本质量。阅读时可以按「GAN简介 -> 图像生成案例 -> MNIST 手写数字生成 -> 训练过程」建立结构,再回到正文里的代码、案例或指标做验证。

生成对抗网络(GAN)图像生成案例探索核对图查看大图
生成对抗网络(GAN)图像生成案例探索核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「GAN简介」,再查「图像生成案例」。

在上一篇中,我们讨论了改善 GAN 训练的模型架构变化,了解到不同架构设计在提升生成效果方面的重要性。今天,我们将深入探讨 GAN 的实际应用,特别是图像生成的案例。这一过程不仅体现了 GAN 的强大能力,同时也为我们实际应用 GAN 提供了宝贵的示例。

GAN简介

生成对抗网络(GAN)由两个神经网络组成:生成器(Generator)和判别器(Discriminator)。生成器试图从随机噪声中生成逼真的图像,而判别器的任务是区分真实图像和生成的图像。通过对抗训练,生成器逐渐提高生成图像的质量。

在图像生成的过程中,我们通常会使用基于条件的 GAN(CGAN)或变分自编码器(VAE)等方法来赋予生成网络条件信息,以控制生成图像的特征。

图像生成案例

1. MNIST 手写数字生成

MNIST 数据集是一个经典的手写数字数据集,包含了 0 到 9 的手写数字。我们可以使用 GAN 来生成新的手写数字图像。

生成器与判别器架构

  • 生成器:负责从随机噪声生成手写数字图像。输入为一维随机噪声向量,输出为一个 28x28 的图像。
  • 判别器:负责区分输入图像是真实的 MNIST 图像还是生成的图像。

以下是一个简单的生成器和判别器的代码示例:

import keras
from keras.layers import Dense, Reshape, Flatten, Dropout, LeakyReLU
from keras.models import Sequential
import numpy as np

# 生成器
def build_generator():
    model = Sequential()
    model.add(Dense(256, input_dim=100))
    model.add(LeakyReLU(alpha=0.2))
    model.add(Dense(512))
    model.add(LeakyReLU(alpha=0.2))
    model.add(Dense(1024))
    model.add(LeakyReLU(alpha=0.2))
    model.add(Dense(28 * 28 * 1, activation='tanh'))
    model.add(Reshape((28, 28, 1)))
    return model

# 判别器
def build_discriminator():
    model = Sequential()
    model.add(Flatten(input_shape=(28, 28, 1)))
    model.add(Dense(512))
    model.add(LeakyReLU(alpha=0.2))
    model.add(Dropout(0.3))
    model.add(Dense(256))
    model.add(LeakyReLU(alpha=0.2))
    model.add(Dropout(0.3))
    model.add(Dense(1, activation='sigmoid'))
    return model

2. 训练过程

GAN 的训练过程同时更新生成器和判别器。我们首先训练判别器,然后训练生成器。以下是训练代码的核心部分:

# 编译模型
discriminator = build_discriminator()
discriminator.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

generator = build_generator()

# GAN模型
z = keras.Input(shape=(100,))
img = generator(z)
discriminator.trainable = False
validity = discriminator(img)

gan = keras.Model(z, validity)
gan.compile(loss='binary_crossentropy', optimizer='adam')

# 训练过程
for epoch in range(num_epochs):
    # 训练判别器
    idx = np.random.randint(0, X_train.shape[0], batch_size)
    real_imgs = X_train[idx]

    z = np.random.normal(0, 1, (batch_size, 100))  # 随机噪声
    fake_imgs = generator.predict(z)

    d_loss_real = discriminator.train_on_batch(real_imgs, np.ones((batch_size, 1)))
    d_loss_fake = discriminator.train_on_batch(fake_imgs, np.zeros((batch_size, 1)))
    d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)

    # 训练生成器
    z = np.random.normal(0, 1, (batch_size, 100))
    g_loss = gan.train_on_batch(z, np.ones((batch_size, 1)))

    # 输出损失
    print(f"{epoch} [D loss: {d_loss[0]:.4f}, acc.: {100 * d_loss[1]:.2f}%] [G loss: {g_loss:.4f}]")

3. 生成图像展示

训练完成后,我们可以生成新的数字图像。每次输入不同的随机噪声,生成器都会输出相应的手写数字图像。

GAN图像生成案例判断卡查看大图
GAN图像生成案例判断卡

探索 GAN 图像生成案例时,先看训练数据、生成分布、多样性、失败样本、评价指标和使用边界。

import matplotlib.pyplot as plt

def generate_and_save_images(model, epoch, test_input):
    predictions = model.predict(test_input)
    plt.figure(figsize=(10, 10))
    for i in range(25):
        plt.subplot(5, 5, i + 1)
        plt.imshow(predictions[i, :, :, 0], cmap='gray')
        plt.axis('off')
    plt.savefig(f"gan_generated_epoch_{epoch}.png")
    plt.show()

# 生成图像
random_latent_vectors = np.random.normal(0, 1, (25, 100))
generate_and_save_images(generator, num_epochs, random_latent_vectors)
生成对抗网络(GAN)图像生成案例探索应用复盘卡查看大图
生成对抗网络(GAN)图像生成案例探索应用复盘卡

读到这里,可以把《生成对抗网络(GAN)图像生成案例探索》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

生成对抗网络(GAN)图像生成案例探索应用检查卡查看大图
生成对抗网络(GAN)图像生成案例探索应用检查卡

读完《生成对抗网络(GAN)图像生成案例探索》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

总结

在本章节中,我们通过实际案例展示了如何使用 GAN 进行图像生成。在下一篇中,我们将继续探索 GAN 的应用,特别是风格转移等技术,进一步扩展 GAN 在图像处理中的潜力。通过不断实践和学习,我们能够更好地掌握 GAN 的应用,推动计算机视觉领域的进步。 生成对抗网络阅读地图卡

开始读《生成对抗网络(GAN)图像生成案例探索》前,可以先看图中从问题到结果的路径。读完后再对照正文,确认自己能不能照着复现。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

生成对抗网络(GAN)图像生成案例探索适合谁读?

这是 GAN 网络教程 系列第 16 / 21 篇,适合正在学习GAN 网络教程,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇GAN 网络教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...