Skip to content

luzhixing12345/Anime-WGAN

Repository files navigation

Anime-WGAN-GP

WGAN64_anime

Introduction

Anime-WGAN-GP 是一个使用 WGAN-GP 来生成动漫头像的项目

相关视频: 【项目分享】使用GAN网络生成动漫头像(附代码)

相关文档: Anime-WGAN document

Requirements

  • python : 3.7

  • pytorch

    # CUDA 10.2
    conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=10.2 -c pytorch
  • other dependencies

    pip install -r requirements.txt

Dataset

下载zip并且解压到 ./dataset 文件夹下, dataset/anime256 and dataset/anime

如果下载过慢可以使用Github proxy加速

这两个数据集下载任意一个用于训练都可以

Use

Train

设计了两个模型结构, WGANWGANP, 这两个模型最主要的区别在于Generator增大图片尺寸的方式,你可以通过这篇文章反卷积存在的问题了解到为什么要这么做

  • run WGAN model as

    python train.py --config-file configs/WGAN.yaml
  • run WGANP model as

    python train.py --config-file configs/WGANP.yaml

注意: 如果需要自己训练模型,请参阅更多训练信息,当然你可以在后面找到提供的预训练模型

Generate images

  • use WGAN model as

    python generate.py --config-file configs/WGAN.yaml -g checkpoints/WGAN/WGAN_G_epoch_39999.pth
  • use WGANP model as

    python generate.py --config-file configs/WGANP.yaml -g checkpoints/WGANP/WGANP_G_epoch_39999.pth
  • use CPU

    python generate.py --config-file configs/WGANP.yaml -g checkpoints/WGANP_G_ANIME256.pth MODEL.DEVICE cpu

默认情况下,它会在 ./images 下生成一个 8x8 网格的动漫图片

其他:

  • -g: generator 的缩写,一个参数是模型权重的路径名

    这里的模型是指生成器G的模型

  • -s: separate 的缩写,没有参数

    可以使用-s将将一张大图拆分成每一张小图

Pretrained model

  • software

    OS: CentOS 7.5 Linux X86_64
    Python: 3.7.14 (anaconda)
    PyTorch: 1.10.1
  • hardware

    CPU: Intel Xeon 6226R
    GPU: Nvidia Tesla V100 16GB
model dataset Discriminator Generator
WGAN ANIME256 download download
ANIME download download
WGANP ANIME256 download download
ANIME download download

如果不想自己训练(大约36~48h),可以下载预训练好的模型G并将其移动到./checkpoints下,然后按照上文Generate images生成图片, 注意修改后面的生成器G的模型路径

事实上如果你只是想生成一张动漫图片你只需要下载G, 判别器D在生成图片的过程中并没有用到

Result

  • generated fake images

    其实不是所有生成的图片都好看,手动选择了一些喜欢的图片,使用模型 WGAN + anime256

    7 33 61 18 12 13

  • walking latent space

    如果尚不了解潜在空间探索可以参考博客

    WGAN + anime256 WGAN + anime
    1 asdoqi
    WGANP + anime256 WGANP + anime
    asdhjono hcouga
  • GAN training process

    对于相同的噪声输入,不同生成图像的过程

    WGAN + anime256 WGAN + anime
    ANIME256_process WGAN64_anime_process
    WGANP + anime256 WGANP + anime
    ANIME256P_process WGAN64P_anime_process

Conclusion

这是第一次尝试GAN,久闻大名但从未尝试学习它.恰逢数据科学导论课期末报告,期末作业是做一些与机器学习相关的事情.所以这是学习 GAN 的好机会!于是看了一些GAN的论文,真的很有意思.

GAN学习指南:从原理入门到制作生成Demo启发了尝试生成自己的动漫头像

实际上必须承认,的预训练模型并没有像期待的那样表现出色,时至今日有很多优秀的模型在生成图像上具有更好的效果,比如diffusion.

这个项目的最初目的只是为了学习一些关于 GAN 的东西,选择使用 WGAN-GP 是因为它的数学推导很棒,想尝试动手写一下而不是只是双击运行,那样稍显无趣.

特别感谢 pytorch-wgan,绝大部分代码都参考自这个项目

其实一开始想生成 256x256 的图像,这就是为什么爬取 256x256 图像并制作该数据集的原因.但随着图像尺寸乘以 4,模型表现极差.也许需要一个更好的模型结构.试过使用residual block ,但效果不佳.

Relevant reference

project:

knowledge:

About

pytorch implementation of WGAN to generate anime avatar

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages