Big GAN2025年3月17日 | 阅读 12 分钟 BigGAN 是一种生成对抗网络(GAN),能够生成超高分辨率、高保真度的图像。它是原始 GAN 框架的扩展,该框架包含相互竞争的神经网络。生成器创建人工图像,而判别器则评估其真实性。 它主要基于经验结果,并执行条件生成任务。在特定类别的情况下生成结果。它非常适合生成动物图像,但其他一些图像则有些随意。 这是一种结合了一系列新的优秀实践来教育类别条件图像的技术。它扩大了批次大小和模型参数数量。它正在考虑在光合作用方面达到新的艺术水平。 Big Gan 的应用BigGAN 是一种强大的生成模型,已在各种领域找到应用。以下是 BigGAN 的一些常见用途和应用程序:
现在,为了更好地理解 Big GAN,我们将构建一个能够生成狗的图像的模型。 代码导入库输出 ![]() 读取数据集现在,我们可以通过 PATH 精确地加载和处理目录中放置的一组狗的图片。变量 img_filenames 将包含这些图片的filenames列表,并通过计算此列表的长度来确定特定目录中有多少张图片。 输出 ![]() 输出 ![]() 输出 ![]() 输出 ![]() ![]() 现在,我们将定义 bounding_box 和 bounding_box_ratio,它们用于从与图像相关的 XML 文档中提取边界框信息。这些函数以图片filenames为输入,并返回边界框坐标列表或边界框尺寸和比例的列表。 我们将根据图片的长宽比过滤图片,并提供有关原始图片数量和过滤后图片数量的信息。 输出 ![]() 输出 ![]() data_preprocessing 函数接受图片路径和边界框索引,使用 PIL (Python Imaging Library) 读取图片,将其裁剪到提供的边界框,然后返回裁剪后的图片。 输出 ![]() 我们将创建 DogDataset 类,这是一个处理狗图片的自定义数据集类。它接受图片路径列表,转换图片,并根据品种映射为它们打标签。 使用 PyTorch 的 transforms 包,我们将定义两组用于图像处理的转换:
输出 ![]() 输出 ![]() 输出 ![]() 检查 GPU 是否可用。 输出 ![]() 模型现在,我们将构建我们的模型,包括其用于条件生成对抗网络(cGAN)的实用函数和模块。实用函数提供卷积层和权重初始化。Attention 模块提供自注意力机制,提高了模型有效捕获空间关系的能力。ConditionalNorm,一个条件归一化模块,将批归一化与嵌入层结合起来,使用条件信息(如类别标签)执行归一化。 现在,我们将深入研究条件生成对抗网络(cGAN),该网络具有结合了 BigGAN 和 Leaky ReLU 激活函数的修改后的架构。生成器由残差块(ResBlock_G)组成,这些残差块包含条件归一化和注意力模块。其目标是从随机噪声和类别标签生成高质量的图像。判别器 Discriminator 使用修改后的残差块(ResBlock_D),该残差块具有谱归一化和 Leaky ReLU 激活,同时考虑类别信息来区分真实和生成的图像。Attention 模块(Attention)提高了生成器和判别器的特征捕获能力。该代码强调了谱归一化、Leaky ReLU 和注意力方法在有效 cGAN 训练和生成中的重要性。 训练在本节中,我们将使用 Leaky ReLU 激活函数训练具有 BigGAN 架构的条件生成对抗网络(cGAN)。为了实现有效的训练和生成,生成器(Generator)和判别器(Discriminator)使用条件归一化、注意力模块和谱归一化。训练循环包括对判别器和生成器的更新,以及可选的生成器参数的指数移动平均(EMA)。 输出 ![]() ![]() ![]() ![]() ![]() 判别器损失(DLoss)和生成器损失(GLoss)是评估生成对抗网络(GAN)训练期间性能的重要指标。DLoss 反映了判别器区分真实样本和生成样本的能力,而 GLoss 则显示了生成器创建能够欺骗判别器的样本的能力。 输出 ![]() 我们的判别器损失(DLoss)正在下降,而生成器损失(GLoss)正在增长,这表明您的生成器在欺骗判别器方面变得更加擅长。这是在 GAN 训练过程正常运行时常见的现象。 现在,我们将循环遍历生成的图像,并使用 matplotlib 显示它们。我们使用的是由原始生成器(netG)或带有指数移动平均(EMA)的生成器生成的图像。 输出 ![]() ![]() 这些是我们模型生成的图像,看起来很不错。如果您需要提高模型的准确性,那么我们就必须在大量数据上训练我们的模型。 下一主题Sarimax |
我们请求您订阅我们的新闻通讯以获取最新更新。