昇思25天学习打卡营第22天|应用实践之DCGAN生成漫画头像 基本介绍

基本介绍

         今日要实践的模型是DCGAN,用于生成漫画头像,生成头像原理可参考GAN图像生成。使用的动漫头像数据集共有70,171张动漫头像图片,图片大小均为96*96。本文会先简单介绍DCGAN模型,然后展示自己的运行结果,不作代码展示,最后进行总结。

DCGAN模型简介

该部分内容来自官方文档,非原创

        DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Adversarial Networks)是GAN的直接扩展。不同之处在于,DCGAN会分别在判别器和生成器中使用卷积和转置卷积层。它最早由Radford等人在论文中进行描述。判别器由分层的卷积层、BatchNorm层和LeakyReLU激活层组成。输入是3x64x64的图像,输出是该图像为真图像的概率。生成器则是由转置卷积层、BatchNorm层和ReLU激活层组成。输入是标准正态分布中提取出的隐向量𝑧,输出是3x64x64的RGB图像

  • 生成器

        生成器G的功能是将隐向量z映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的 RGB 图像。在实践场景中,该功能是通过一系列Conv2dTranspose转置卷积层来完成的,每个层都与BatchNorm2d层和ReLu激活层配对,输出数据会经过tanh函数,使其返回[-1,1]的数据范围内。DCGAN论文生成图像如下所示:

  • 判别器

        判别器D是一个二分类网络模型,输出判定该图像为真实图的概率。通过一系列的Conv2dBatchNorm2dLeakyReLU层对其进行处理,最后通过Sigmoid激活函数得到最终概率。DCGAN使用卷积而不是通过池化来进行下采样,这样可以让网络学习自己的池化特征

DCGAN代码实践

        官方给的代码实践是经典的深度学习流程。即数据集预处理,模型搭建,模型训练,模型评估,模型推理,详细的可直接参考官方的代码实践,这里给出我自己的运行结果和部分代码

  • 数据集部分可视化结果

  • 模型训练超参数配置:使用的是二进制交叉熵损失函数BCELoss,设置了两个单独的优化器,一个用于D,另一个用于G。这两个都是lr = 0.0002beta1 = 0.5的Adam优化器。
  • 模型训练结果:由于时间因素,只训练了3轮,效果很差,训练轮次太少导致实际推理得出的动漫图像是破损老化的图片一样。

  • 描绘DG损失与训练迭代的关系图

  • 模型推理结果:每训练一轮推理一次,然后将结果做成gif图,从下面的gif图可以看出,随着训练次数的增多,图像质量也越来越好。如果增大训练周期数,当num_epochs达到50(该数据来自官方文档)以上时,生成的动漫头像图片与数据集中的较为相似

总结

        今天的DCGAN模型是GAN模型的一种优化,更改了模型的一些神经网络层,使其生成图像能力更好一些。今天的实践的理论方面不多,所以不是很难,训练运行后生成了动漫图像,虽然因为训练轮次原因,很糊,但也是别有一番风味。

Jupyter运行情况

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 00:00:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 00:00:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 00:00:02       57 阅读
  4. Python语言-面向对象

    2024-07-16 00:00:02       68 阅读

热门阅读

  1. 数据结构初阶(C语言)-顺序表

    2024-07-16 00:00:02       21 阅读
  2. C# 做一个临时的对象结构,并用linq查找

    2024-07-16 00:00:02       15 阅读
  3. 动态路由-ospf

    2024-07-16 00:00:02       22 阅读
  4. 如何备份Syslog配置文件?

    2024-07-16 00:00:02       17 阅读
  5. float和double使用注意问题

    2024-07-16 00:00:02       19 阅读
  6. excel及panda的部分内容

    2024-07-16 00:00:02       19 阅读
  7. 消息中间件面试题

    2024-07-16 00:00:02       20 阅读
  8. Kafka配置SSL信道加密

    2024-07-16 00:00:02       20 阅读
  9. TensorFlow 的基本概念和使用场景

    2024-07-16 00:00:02       17 阅读