二次元头像生成器
1
目录
二次元头像生成器 ....................................................................................................................................................... 2
选题背景 .................................................................................................................................................................................... 2
实验流程 .................................................................................................................................................................................... 2
算法简介 .................................................................................................................................................................................... 2
环境搭建、运行例程 ............................................................................................................................................................. 3
训练集优化 ................................................................................................................................................................................ 4
更多的图像!
............................................................................................................................................................................... 4
只训练一个人会发生什么?
................................................................................................................................................. 5
那么,训练一组画风相近的人物呢?
............................................................................................................................. 6
集大成
.............................................................................................................................................................................................. 7
网络优化 .................................................................................................................................................................................... 8
了解基本原理
............................................................................................................................................................................... 9
DCGAN .......................................................................................................................................................................................... 10
其它技术
...................................................................................................................................................................................... 12
ReLU 和 LeakyReLU ..................................................................................................................................................................... 12
loss 和学习率控制 ........................................................................................................................................................................ 12
随机梯度下降法 ............................................................................................................................................................................. 13
成果展示 ................................................................................................................................................................................. 13
总结分析 ................................................................................................................................................................................. 14
参考文献 ................................................................................................................................................................................. 15
2
二次元头像生成器
选题背景
第一次听到 GAN 这个词,是在视频网站上看到一个介绍 AI 作图生成器的视频。
人只需在空白的画布上指定天空、草地等元素,并勾勒出物体的轮廓,便可生成一张好似实景
拍摄的风景画。甚至,还可以改变色调和主题。
视频链接:
https://www.bilibili.com/video/BV1d4411G76N
展示网站:
https://www.nvidia.com/en-us/research/ai-playground/?ncid=so-twi-nz-
92489&fbclid=IwAR3cf-s5JzcVLxMRLAL4pi9DH4zT_OKRL4U_6kXio3FqP1M-vEuiriHBHl0
论文:
https://arxiv.org/abs/1903.07291
这个视频可以说在当时颠覆了我对人工智能的认知,好似变魔术般的实现了真正的智能。 大二
的我们自认为,尝试复现这样的算法可谓不自量力。但以多媒体技术这门课为契机,我们决定挑战
一番。
经过论文阅读和资料搜集得知,该功能的核心算法为 GAUGAN,是生成对抗网络 GAN 的一种应
用。最终,我们选定了本次的主题:使用 GAN 生成二次元头像。
实验流程
为了达到逐步深入的效果,本次报告分享中,我将采用时间线的方式,逐步介绍实现过程。 报
告的前半段简要介绍环境搭建、训练集搜集以及网络调参;后半段介绍我们对该网络的核心算法的
剖析,以及基于此而自己重新编写的网络。介绍过程中,将会对每个优化阶段给出详细的成果图
片。
算法简介
这一部分简要概括我们所做的工作的基本原理,即 GAN 到底是什么。这里以我们小组研究的生
成图片为例进行说明。
3
以下内容部分参考于:
https://zhuanlan.zhihu.com/p/24767059
假设我们有两个网络,G(Generator)和 D(Discriminator)。 正如它的名字所暗示的那样,它们的
功能分别是:
• G 是一个生成图片的网络,它接收一个随机的噪声 z,通过这个噪声生成图片,记做 G(z)。
• D 是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是 x,x 代表一张图片,输出
D(x)代表 x 为真实图片的概率,如果为 1,就代表 100%是真实的图片,而输出为 0,就代表不
可能是真实的图片。
在训练过程中,生成网络 G 的目标就是尽量生成真实的图片去欺骗判别网络 D。而 D 的目标就
是尽量把 G 生成的图片和真实的图片分别开来。这样,G 和 D 构成了一个动态的“博弈过程”。 最后
博弈的结果是什么?在最理想的状态下,G 可以生成足以“以假乱真”的图片 G(z)。对于 D 来说,它
难以判定 G 生成的图片究竟是不是真实的,因此 D(G(z)) = 0.5。
GAN
的开山之作:
Ian Goodfellow - Generative Adversarial Networks
(
arxiv
:
https://arxiv.org/abs/1406.2661
)
环境搭建、运行例程
决定该选题后,我们开始找程序和训练集跑结果。
我们从一篇国内博客中找到了一个最简单的生成二次元头像的 GAN 算法的程序。
https://blog.csdn.net/qq_43815869/article/details/109121772
该博客附带训练集,为 1w6 张 96×96 分辨率的图像。
在搭建好 python 环境、装载 PyTorch 依赖后,我们使用 CPU 跑了一个晚上,得到了第一份结
果:
4
*CPU 80 轮
训练速度太慢,经过了解,首要事项是改用 GPU 提高速度。
由于项目处于初期,模型和数据都有大量修改,不适宜租赁服务器来运行;同时由于现在正处
于矿潮,实在买不到显卡。最终,我们从同学临时借用到一块宝贵的 2070 显卡。
环境:
python=3.8.3 / Cuda=11.3 with Cudnn / pyTorch for Cuda 11.1
GPU/CPU
结果对比
*29
轮
左边为
GPU
右边为
CPU
安装好 Cuda、装载 Cudnn 后,我们真正跑出了一份结果:
*900 轮,已收敛
可以看到,图像充满扭曲,质感粗糙,远未达到预期。
容易想到,接下来有两个优化方向:从模型的角度,和从训练集的角度。因为我们对模型的了
解还不足,我们决定由简入繁,先处理训练集,也期望从处理的过程中总结出一定的经验。
训练集优化
更多的图像!
首先,我们怀疑例程中的图像数量不足。为此,我们爬取了多个网站的动漫图,使用 python 和
opencv 的识别头像模块得到 14w 张图。
爬虫代码见文件 webspider.py(以 konachan.net 为例)