搜索
首页科技周边人工智能生成对抗网络,AI将图片转成漫画风格

哈喽,大家好。

最近大家都在玩 AI 绘画,我在 GitHub 上找了一个开源项目,给大家分享一下。

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

今天分享的这个项目是用 GAN​ 生成对抗网络实现的,关于GAN的原理和实战我们之前分享过很多文章,想了解的朋友可以去翻历史文章。

源码和数据集文末获取,下面分享如何训练、运行项目。

1. 准备环境

安装 tensorflow-gpu 1.15.0​,GPU显卡使用2080Ti​,cuda版本10.0。

git下载项目AnimeGANv2源码。

搭建好环境后,还需要准备数据集和vgg19。

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

下载dataset.zip​压缩文件,里面包含 6k 张真实生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格和2k张漫画生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格,用于GAN的训练。

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

vgg19是用来计算损失的,下面会有详细介绍。

2. 网络模型

生成对抗网络需要定义两个模型,一个是生成器,一个是判别器。

生成器网络定义如下:

with tf.variable_scope('A'):
inputs = Conv2DNormLReLU(inputs, 32, 7)
inputs = Conv2DNormLReLU(inputs, 64, strides=2)
inputs = Conv2DNormLReLU(inputs, 64)

with tf.variable_scope('B'):
inputs = Conv2DNormLReLU(inputs, 128, strides=2)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('C'):
inputs = Conv2DNormLReLU(inputs, 128)
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r1')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r2')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r3')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r4')
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('D'):
inputs = Unsample(inputs, 128)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('E'):
inputs = Unsample(inputs,64)
inputs = Conv2DNormLReLU(inputs, 64)
inputs = Conv2DNormLReLU(inputs, 32, 7)
with tf.variable_scope('out_layer'):
out = Conv2D(inputs, filters =3, kernel_size=1, strides=1)
self.fake = tf.tanh(out)

生成器中主要的模块是反向残差块

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

残差结构(a)和反向残差块(b)

判别器网络结构如下:

def D_net(x_init,ch, n_dis,sn, scope, reuse):
channel = ch // 2
with tf.variable_scope(scope, reuse=reuse):
x = conv(x_init, channel, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_0')
x = lrelu(x, 0.2)

for i in range(1, n_dis):
x = conv(x, channel * 2, kernel=3, stride=2, pad=1, use_bias=False, sn=sn, scope='conv_s2_' + str(i))
x = lrelu(x, 0.2)

x = conv(x, channel * 4, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_s1_' + str(i))
x = layer_norm(x, scope='1_norm_' + str(i))
x = lrelu(x, 0.2)

channel = channel * 2

x = conv(x, channel * 2, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='last_conv')
x = layer_norm(x, scope='2_ins_norm')
x = lrelu(x, 0.2)

x = conv(x, channels=1, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='D_logit')

return x

3. 损失

计算损失之前先用VGG19​网路将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格向量化。这个过程有点像NLP​中的Embedding操作。

Eembedding​是讲词转化成向量,VGG19是讲生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转化成向量。

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

VGG19定义

计算损失部分逻辑如下:

def con_sty_loss(vgg, real, anime, fake):

# 真实生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格向量化
vgg.build(real)
real_feature_map = vgg.conv4_4_no_activation

# 生成生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格向量化
vgg.build(fake)
fake_feature_map = vgg.conv4_4_no_activation

# 漫画风格向量化
vgg.build(anime[:fake_feature_map.shape[0]])
anime_feature_map = vgg.conv4_4_no_activation

# 真实生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格与生成生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格的损失
c_loss = L1_loss(real_feature_map, fake_feature_map)
# 漫画风格与生成生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格的损失
s_loss = style_loss(anime_feature_map, fake_feature_map)

return c_loss, s_loss

这里使用vgg19​分别计算真实生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格(参数real)与生成的生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格(参数fake)​的损失,生成的生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格(参数fake)与漫画风格(参数anime)的损失。

c_loss, s_loss = con_sty_loss(self.vgg, self.real, self.anime_gray, self.generated)
t_loss = self.con_weight * c_loss + self.sty_weight * s_loss + color_loss(self.real,self.generated) * self.color_weight + tv_loss

最终给这两个损失不同的权重,这样是的生成器生成的生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格,既保留了真实生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格的样子,又向漫画风格进行迁移

4. 训练

在项目目录下执行以下命令开始训练

python train.py --dataset Hayao --epoch 101 --init_epoch 10

运行成功后,可以看到一下数据。

生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将生成对抗网络,AI将图片转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格转成漫画风格

同时,也可以看到损失在不断下降。

源码和数据集都已经打包好了,需要的朋友评论区留言即可。

如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python AI 项目。

以上是生成对抗网络,AI将图片转成漫画风格的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
如何使用Huggingface Smollm建立个人AI助手如何使用Huggingface Smollm建立个人AI助手Apr 18, 2025 am 11:52 AM

利用“设备” AI的力量:建立个人聊天机器人CLI 在最近的过去,个人AI助手的概念似乎是科幻小说。 想象一下科技爱好者亚历克斯(Alex)梦见一个聪明的本地AI同伴 - 不依赖

通过斯坦福大学激动人心的新计划,精神健康的AI专心分析通过斯坦福大学激动人心的新计划,精神健康的AI专心分析Apr 18, 2025 am 11:49 AM

他们的首届AI4MH发射于2025年4月15日举行,著名的精神科医生兼神经科学家汤姆·因斯尔(Tom Insel)博士曾担任开幕式演讲者。 Insel博士因其在心理健康研究和技术方面的杰出工作而闻名

2025年WNBA选秀课程进入联盟成长并与在线骚扰作斗争2025年WNBA选秀课程进入联盟成长并与在线骚扰作斗争Apr 18, 2025 am 11:44 AM

恩格伯特说:“我们要确保WNBA仍然是每个人,球员,粉丝和公司合作伙伴,感到安全,重视和授权的空间。” anno

Python内置数据结构的综合指南 - 分析VidhyaPython内置数据结构的综合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介绍 Python擅长使用编程语言,尤其是在数据科学和生成AI中。 在处理大型数据集时,有效的数据操作(存储,管理和访问)至关重要。 我们以前涵盖了数字和ST

与替代方案相比,Openai新型号的第一印象与替代方案相比,Openai新型号的第一印象Apr 18, 2025 am 11:41 AM

潜水之前,一个重要的警告:AI性能是非确定性的,并且特定于高度用法。简而言之,您的里程可能会有所不同。不要将此文章(或任何其他)文章作为最后一句话 - 目的是在您自己的情况下测试这些模型

AI投资组合|如何为AI职业建立投资组合?AI投资组合|如何为AI职业建立投资组合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投资组合:初学者和专业人士指南 创建引人注目的投资组合对于确保在人工智能(AI)和机器学习(ML)中的角色至关重要。 本指南为建立投资组合提供了建议

代理AI对安全操作可能意味着什么代理AI对安全操作可能意味着什么Apr 18, 2025 am 11:36 AM

结果?倦怠,效率低下以及检测和作用之间的差距扩大。这一切都不应该令任何从事网络安全工作的人感到震惊。 不过,代理AI的承诺已成为一个潜在的转折点。这个新课

Google与Openai:AI为学生打架Google与Openai:AI为学生打架Apr 18, 2025 am 11:31 AM

直接影响与长期伙伴关系? 两周前,Openai提出了强大的短期优惠,在2025年5月底之前授予美国和加拿大大学生免费访问Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境