开发者社区> 技术小能手> 正文

用风格迁移搞事情!超越艺术字:卷积神经网络打造最美汉字

简介:
+关注继续查看

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

0d80e7b10a33fe01e077fd8daf9e8ca39a7b8c56

“七彩”的艺术字

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

d4e61b9eff14a6324497487224644bd13af85445

各种PS艺术字

但是,我们还能更进一步吗?将设计师从繁复的 PS 工作中解放出来,用深度学习的方法设计艺术字,自动生成更加有意思的艺术字吗?

答案当然是可以!

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

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

d1a95d31638fe5a81356e2281f0a96ed5d328268

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

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

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

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

dac63d0eb7504c369eda5089b39a1111a838bbf0

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


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

8bbfc2bda30cef813e507f9562425eaf9e04d059

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

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

ef14f231d021ae19c492a12efed31f9eca02778f

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

怎么样?效果相当漂亮吧?

所有代码均已开源,对细节感兴趣的请移步 Github:

基于卷积神经网络的风格迁移:

https://github.com/yuweiming70/Style_Migration_For_Artistic_Font_With_CNN

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

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

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

130bcb8f3924f97a570e8906bd884fdbb3709d5a

项目细节

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

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。


原文发布时间为:2018-06-7

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程(1)
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
14 0
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程(2)
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
12 0
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
17 0
田渊栋等原班人马又一新作:AI生成长篇故事,数千字长文也能连贯、有趣
田渊栋等原班人马又一新作:AI生成长篇故事,数千字长文也能连贯、有趣
10 0
DDIA 读书分享 第四章:编码和演化
DDIA 读书分享 第四章:编码和演化
83 0
为了学习英语,我开发了一个单词对战系统
本系统主要由Android、服务端、数据管理端构成。客户端的页面实现通过网络与服务器REST API接口通信获取 MySQL数据。本人重点参与网上单词对战系统客户端、服务器以及数据库的设计、开发、测试工作。
169 0
140字的奥秘【转】
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。
85 0
ASCII新玩法!不仅能实现光线追踪,模拟星系碰撞和流体力学也不在话下
ASCII码的上限到底在何方?国外小哥不仅用ASCII实现光线追踪效果,现在还有了模拟流体动力学!
71 0
MIT切割大量文本黑科技!数十亿选择中“海底捞”出一本好书
MIT和IBM的研究人员结合了三种流行的文本分析工具——主题建模、词嵌入和最优传输——来每秒比较数千个文档。而且可以更快、更准确对文档分类,轻轻松松从数十亿选择中更快找到更相关的读物。
92 0
和12岁小同志搞创客开发:有意思的激光切割技术
和12岁小同志搞创客开发:有意思的激光切割技术
92 0
在语音识别这件事上,汉语比英语早一年超越人类水平(附论文)
几天前,微软语音识别实现了历史性突破,英语的语音转录达到专业速录员水平,机器之心也独家专访了专访微软首席语音科学家黄学东 ,了解到词错率仅 5.9% 背后的「秘密武器」——CNTK。但微软的成果是在英语水平上的,从部分读者留言中我们了解到对汉语语音识别的前沿成果不太了解,这篇文章将向大家介绍国内几家公司在汉语识别上取得的成果。
193 0
1000字告诉你第一代鼻祖级程序员是怎样学习算法的?
喜欢这篇文章的朋友可以多多收藏、点赞、关注 一条龙~
1351 0
[短文速读] a=a+b和a+=b的区别
前言 短文速读,这将是一个系列文章。自己写了很多文章,也看了很多文章。发现很多都是收藏不看系列。当然有时间的时候,的确会把收藏的文章找出来好好的学习一番。
1170 0
我的速读理解
速读是把书.博客,诗词,等文字类载体快速阅读,并快速理解,这里的读指得是,要快速地尽量只从字的字形上去概念记住这个字. 而不是默念记住这个字. 总得来说,多读书肯定会提高这部分能力,因为多读书的人一定会有自己的读书时间安排,读书环境选择,以及读书理解技巧. 所以网上说得很多的 速读 ,大部分都是读书老手分享出来的方法,而对于新手来说,这种方法一时半会儿难以掌握, So! 最好的方式则是通过大量的读书 去掌握.! 从而有了自己阅读速度和理解速度的提升,从而掌握方法!掌握高效阅读!  将编程看作是一门艺术,而不单单是个技术。
721 0
+关注
技术小能手
云栖运营小编~
文章
问答
视频
相关电子书
更多
《长安十二时辰》
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多