# 1.研究背景
我们都喜欢动漫角色,并试图创造我们的定制角色。然而,要掌握绘画技巧需要巨大的努力,之后我们首先有能力设计自己的角色。为了弥补这一差距,动画角色的自动生成提供了一个机会,在没有专业技能的情况下引入定制角色的存在。除了对非专业人士的好处外,专业的创造者还可以利用自动生成来获得动画和游戏角色设计的灵感;Doujin RPG开发者可以使用无版权的面部图像来降低游戏制作的设计成本。
# 2.图片演示
![1.png](a4045c31872372dd2287b79556c37a43.png)
![2.png](878cf8f0af06fdd6f54b2e427ed88fbd.png)
![3.png](75d8681d0ac02da1bd1f8beba17470d4.png)
# 3.视频演示
[基于GAN的动漫头像生成系统(源码&教程)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1FN4y1P7kw/?spm_id_from=333.999.0.0&vd_source=bc9aec86d164b67a7004b996143742dc)
# 4.项目难点
(1)如何根据用户设置的属性,对GAN的生成结果进行精确控制?(注意GAN是黑盒模型)
(2)模型的生成结果由用户设置的属性和随机噪声(随机数)共同决定。因此,即使设置的属性不变,每次生成的头像都有所差异。那么如何既保证属性控制的精确性,又保证生成头像的随机性?
(3)如何把不同属性的组合,无缝地融合到同一张头像中?
(4)[之前提出的头像生成方法](https://mbd.pub/o/bread/Y5mbmpdq),其输出结果存在模糊和画面混乱的问题,而且生成结果的质量很不稳定。那么,如何让模型生成高质量的头像?如何让模型以较高的成功率输出高质量的结果?
# 5.网络结构
#### 生成器
![image.png](65afc6e58b331afff66f0d1544808ba3.png)
#### 判别器
![image.png](5bd913e751af93abb2dbcb0cf486ce07.png)
# 6.数据集的准备
![6.png](ccaccf5a1ff9e9e7c1c0b51b053eaf51.png)
要想训练出高质量的动漫头像生成模型,其必要前提为:数据集中的插画质量高、绘画风格一致、噪声小。现有的大规模插画数据集虽然提供了大量插画,但存在绘画风格差异巨大、数据集内噪声多等问题。为了避免这些问题,本文选择了一个游戏销售网站上的“游戏人物介绍插画”作为数据来源。
在批量下载的插画中,如何自动找出头像所在区域的坐标?[论文使用基于Local Binary Pattern(LBP)特征的“人脸检测”(Face Detection)算法 \[foot note-6\]](https://afdian.net/item?plan_id=b679c95a599511ed973552540025c377)。为了使检测结果包含发型,将算法输出的检测框(bounding box)放大为原来的1.5倍。
一个值得思考的问题:当拥有了带有属性标注的头像数据集之后,为什么还需要训练头像自动生成模型?“数据集”能否代替“自动生成模型”? {*}
(1)理论上,当数据集的规模趋于无限大,使得每种可能的属性组合都包含大量例子时,可能不太需要再训练自动生成模型。但实际上,随着属性数量的增多,可能出现的属性组合数会呈爆炸式增长!而高质量头像的设计和绘制需要较高成本,所以不太可能拥有如此大规模的数据集。
另外,笔者认为应该从“创新”(而不是“模仿”)的角度来思考这一问题:
(2)GAN生成器以随机噪声作为输入,使得即使设置的属性完全相同,每次生成的结果也会发生微小但随机的变化。这是图片总数固定的数据集所无法实现的。
(3)GAN能够生成数据集中不存在的属性组合。例如数据集中分别有蓝发的头像和绿眼的头像,但没有蓝发绿眼的头像。而经过训练后,GAN能够生成蓝发绿眼的头像。(前提是GAN已充分学习了蓝发的特征和绿眼的特征。)
(4)GAN能学习训练集中不同图像的“特征”(“特征”包括但不限于所标注的属性),并将来自不同图像的特征无缝融合在一张生成结果中。所以,GAN能够“创造”数据集中不存在的头像。
(5)GAN可以实现“两幅头像间的插值”和“头像渐变动画”。(下文将进行介绍)
# 6.代码实现
```
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
class Generator(keras.Model):
def __init__(self):
super(Generator, self).__init__()
# z: [b, 100] => [b, 3*3*512] => [b, 3, 3, 512] => [b, 64, 64, 3]
self.fc = layers.Dense(3*3*512)
self.conv1 = layers.Conv2DTranspose(256, 3, 3, 'valid')
self.bn1 = layers.BatchNormalization()
self.conv2 = layers.Conv2DTranspose(128, 5, 2, 'valid')
self.bn2 = layers.BatchNormalization()
self.conv3 = layers.Conv2DTranspose(3, 4, 3, 'valid')
def call(self, inputs, training=None):
# [z, 100] => [z, 3*3*512]
x = self.fc(inputs)
x = tf.reshape(x, [-1, 3, 3, 512])
x = tf.nn.leaky_relu(x)
#
x = tf.nn.leaky_relu(self.bn1(self.conv1(x), training=training))
x = tf.nn.leaky_relu(self.bn2(self.conv2(x), training=training))
x = self.conv3(x)
x = tf.tanh(x)
return x
class Discriminator(keras.Model):
def __init__(self):
super(Discriminator, self).__init__()
# [b, 64, 64, 3] => [b, 1]
self.conv1 = layers.Conv2D(64, 5, 3, 'valid')
self.conv2 = layers.Conv2D(128, 5, 3, 'valid')
self.bn2 = layers.BatchNormalization()
self.conv3 = layers.Conv2D(256, 5, 3, 'valid')
self.bn3 = layers.BatchNormalization()
# [b, h, w ,c] => [b, -1]
self.flatten = layers.Flatten()
self.fc = layers.Dense(1)
def call(self, inputs, training=None):
x = tf.nn.leaky_relu(self.conv1(inputs))
x = tf.nn.leaky_relu(self.bn2(self.conv2(x), training=training))
x = tf.nn.leaky_relu(self.bn3(self.conv3(x), training=training))
# [b, h, w, c] => [b, -1]
x = self.flatten(x)
# [b, -1] => [b, 1]
logits = self.fc(x)
return logits
def main():
d = Discriminator()
g = Generator()
x = tf.random.normal([2, 64, 64, 3])
z = tf.random.normal([2, 100])
prob = d(x)
print(prob)
x_hat = g(z)
print(x_hat.shape)
if __name__ == '__main__':
main()
```
# 7.系统整合
[下图源码&环境部署视频教程&数据集&自定义UI界面](https://s.xiaocichang.com/s/aa1760)
![5.png](bd0d5b5874578d6cca7f6c9ee27a0b15.png)
参考[博客《基于GAN的动漫头像生成系统(源码&教程)》](https://s.xiaocichang.com/s/aa1760)
# 8.参考文献
***
[1] Martin Arjovsky and Leon Bottou. Towards principlled methods for training generative adversarial networks.arXiv preprint arXiv:1701.04862,2017.
[2] Martin Arjovsky, Soumith Chintala, and Leon Bottou. Wasserstein gan. arXiv preprint arXiv:1701.07875,2017.
[3] Sanjeev Arora,Rong Ge,Yingyu Liang,TengyuMa, and Yi Zhang. Generalization and equilibrium in
generative adversarial nets (gans). arXivpreprint arXiv:1703.00573,2017.
[4] Marc G Bellemare,Ivo Danihelka, Will Dabney,Shakir Mohamed, Balaji Lakshminarayanan, Stephan
Hoyer, and Remi Munos. The cramer distance as a sollution to biased wasserstein gradients. arXiv preprint arXiv:1705.10743,2017.
[5] Ian Goodfellow,Jean Pouget-Abadie,Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron
Courville, and Yoshua Bengio. Generative adversarial nets. In Advances in neural information processing systems, pages 2672-2680,2014.
[6] Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, and Aaron Courville. Improved
training of wasserstein gans. arXiv preprint arXiv:1704.00028,2017.
[7] Martin Heusel,Hubert Ramsauer,Thomas Unterthiner, B
没有合适的资源?快使用搜索试试~ 我知道了~
基于GAN的动漫头像生成系统(源码&教程).zip
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共9个文件
png:7个
py:1个
md:1个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 117 浏览量
2024-05-03
10:25:14
上传
评论
收藏 10MB ZIP 举报
温馨提示
我们都喜欢动漫角色,并试图创造我们的定制角色。然而,要掌握绘画技巧需要巨大的努力,之后我们首先有能力设计自己的角色。为了弥补这一差距,动画角色的自动生成提供了一个机会,在没有专业技能的情况下引入定制角色的存在。除了对非专业人士的好处外,专业的创造者还可以利用自动生成来获得动画和游戏角色设计的灵感;Doujin RPG开发者可以使用无版权的面部图像来降低游戏制作的设计成本。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![csv](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
共 9 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/30cca166a8ba4bd9b70a7e3128b56485_lwx666sl.jpg!1)
熬夜写代码的平头哥
- 粉丝: 4906
- 资源: 7413
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
下载权益
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
C知道特权
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
VIP文章
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
课程特权
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)