博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字体风格迁移,卷积神经网络打败艺术字,生成最美汉字
阅读量:6030 次
发布时间:2019-06-20

本文共 1980 字,大约阅读时间需要 6 分钟。

曾几何时,小学的我们上机课时最喜欢摆弄的就是 word 的艺术字,丑陋的效果并不能阻挡我们在每个角落塞进七彩的字体.......

“七彩”的艺术字

但是时代不同了,我们现在已经有了各种先进的 PS 软件,我们已经可以做出这样的艺术字:

各种PS艺术字

我想看到这里,很多人都觉得做一个设计师是多么的不容易,我感觉也是,那么我们能够更进一步,从而解放设计师的双手吗?(我用双手,成就你的梦想。--LOL blind monk)即我们可以用深度学习的方法设计艺术字,自动生成更加有意思的文字吗?

答案毫无疑问,必须的必。

我们实际上已经有了 CNN(卷积神经网络)以及基于其的风格迁移,我们只需要做的是用一张汉字作为原始输入,用一张对应的图片作为风格,迁移上去即可。

 

听上去真是简单呢,事不宜迟,我这就打开了 Github,下一个模型开跑,结果如下:

花(风格图片)

花(迁移的图片)

看到结果,不禁让人感到震撼,CNN 网络学会了从图片里面剥离出“叶子”和“花朵”两种语义,并且将原始的图片中的背景和汉字部分分开,分别进行绘制。最后的效果就是花海中的文字,而文字恰好由叶子构成,唯美的画面就像大自然的鬼斧神工,处处透露着宇宙的和谐……不行我编不下去了……

 

最后的结果并不如人意,花颜色太奇怪,叶子黑得蔫了吧唧的,我们还是得深入研究才行。

 

打开代码,我们发现代码中使用了 Keras 提供训练好的的 VGG19 模型,使用其中的几层卷积层作为风格损失,还使用最后一层卷积层作为内容损失,结果并不怎么样。

 

于是,我们分别实验了六层卷积层,分别标记为 A-F 层,这些作为风格损失的情况:

VGG19的A-F层卷积层

六层分别作为风格损失的情况

 

从这些图片可以看到,卷积网络确实实在逐层抽象,开始时,层A的卷积核还在寻找颜色,后来,BC 开始寻找由颜色和线条构成的抽象的“花”“叶”的形状,D、E、F则是逐渐走向识别物体的形状轮廓,摒弃色彩。从某种意义上,我们补充了 CNN 的可解释性问题

 

这启发我们要结合色彩与轮廓,形状与颜色并重地解决问题,于是经过调节 LOSS 函数,测试了各种层的结果如下:

 

 

 

用多层的组合作为风格损失的结果,最后我们选择了ABC层作为最终结果

 

进一步地,我们还可以提升效果。加入随机扰动,加入图片增强:

加入随机扰动,平滑效果,以及一系列图片增强的效果

怎么样?效果相当漂亮吧?感兴趣的可以去上下载代码

我们已经添加了一些生成图片的接口,方便大家使用,此外还提供几十张风格图片供您探索,如果觉得有意思的话,请别忘了点一下 Star

 

 

还在等什么?赶紧放开你的想象力!尽情地创造吧!

 

下面是我们提供的一系列 sytle 图片的例子,供您欣赏!

 

 

 

 

 

 

 

 

项目细节

使用方法很简单,只需要输入:

python.exe neural_style_transfer.py 风格图片所在目录 输出文件夹 --chars 花 # 要生成的文字,支持一次输入多个文字 --pictrue_size 300 # 生成图片大小 --background_color (0,0,0) # 文字图片中背景的颜色 --text_color (255,255,255) # 文字图片中文字的颜色 --iter 50 # 迭代次数,一般50代左右就行 --smooth_times 20 # 文字图片是否进行模糊化处理 --noise True # 文字图片是否加入随机噪声 --image_enhance True # 生成图片是否进行增强,包括色度,亮度,锐度增强 --font_name 宋体 # 文字字体,支持宋体,楷体,黑体,仿宋,等线 --reverse_color False # True-黑纸白字,False-白纸黑字,默认白纸黑字

 

一些说明 

 

神经网络基于 Keras 官方的风格迁移的例子,经过一定的调整 loss 函数和调参后得到最适合于艺术风格字体的代码。调整包括: 

 

1. 加入生成文字图片的方法,以及提供一系列图片生成相关接口,便于您第一时间修改结果;

 

2. 修改了 loss 函数,经过大量实验,确定使用 Keras 提供的 VGG19 网络的'block1_conv1','block2_conv1','block3_conv1'三层作为风格损失,去除内容损失;

 

3. 加入一些图片的增强方法,使得结果更加色彩丰富;

 

4. 在 style 文件夹下提供了一系列图片供您探索;

 

5.如果出现h5py的错误,那么请更新安装即可,即为:pip install --upgrade h5py

 

 项目运行的命令截图:

 

 

 

项目开始

运行中

 

运行结果

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ZFJ1094038955/p/10857678.html

你可能感兴趣的文章
jquery 中prop()的使用方法
查看>>
下午考
查看>>
WKWebView
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
如何将OpenCV中的Mat类绑定为OpenGL中的纹理
查看>>
CutyCapt
查看>>
Dungeon Master ZOJ 1940【优先队列+广搜】
查看>>
解决https://localhost:1158/em 页面无法打开的问题
查看>>
[Cocoa]深入浅出Cocoa之Core Data(4)- 使用绑定
查看>>
原理:什么是Quadtrees?(转)
查看>>
记:返回方法参数的值(或多个值),
查看>>