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

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

“七彩”的艺术字

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

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第2张

各种PS艺术字

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

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

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

 

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

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第3张

花(风格图片)

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第4张

花(迁移的图片)

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

 

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

 

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

 

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

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第5张

VGG19的A-F层卷积层

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第6张

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

 

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

 

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

 

 

 字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第7张

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

 

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

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第8张

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

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

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

 

 

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

 

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

 

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第9张

 

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第10张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第11张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第12张

 

 

 字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第13张

 

 

 字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第14张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第15张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第16张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第17张

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第18张

项目细节

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

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. 运行需要 Keras 支持,建议使用 GPU 运算,在 Nvidia GeForce GTX 1050 Ti (4 GB) 上,一次迭代大约 3s,一张图片耗时 2-3min。

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

 

 项目运行的命令截图:

 

 

 字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第19张

项目开始

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第20张

运行中

 

字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第21张

运行结果

 

 

 

 

 

 

 

 字体风格迁移,卷积神经网络打败艺术字,生成最美汉字 随笔 第22张

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄