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

2018 年 6 月 7 日 PaperWeekly


作者丨余唯民 & 雷芳涵

学校丨清华大学本科在读

Github丨https://github.com/yuweiming70


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


▲ “七彩”的艺术字


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


▲ 各种PS艺术字


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


答案当然是可以!


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


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


▲ 花(风格图片)


▲ 花的“花”


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


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


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


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


▲ VGG19的A-F层卷积层


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


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


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


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


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


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


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


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


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


https://github.com/yuweiming70/Style_Migration_For_Artistic_Font_With_CNN


我们已经添加了一些生成图片的接口,方便大家使用,此外还提供几十张风格图片供您探索,如果觉得有意思的话,请别忘了点一下 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. 运行需要 Keras 支持,建议使用 GPU 运算,在 Nvidia GeForce GTX 1050 Ti (4 GB) 上,一次迭代大约 3s,一张图片耗时 2-3min。



点击以下标题查看更多优质文章: 




 戳我查看招募详情


#作 者 招 募#


让你的文字被很多很多人看到,喜欢我们不如加入我们



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。


▽ 点击 | 阅读原文 | 加入社区刷论文

登录查看更多
1

相关内容

【干货书】高级应用深度学习,294页pdf
专知会员服务
151+阅读 · 2020年6月20日
【天津大学】风格线条画生成技术综述
专知会员服务
31+阅读 · 2020年4月26日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
专知会员服务
41+阅读 · 2020年2月20日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
已删除
将门创投
13+阅读 · 2019年4月17日
原来CNN是这样提取图像特征的。。。
计算机视觉life
8+阅读 · 2018年11月23日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
Tensorflow卷积神经网络
全球人工智能
13+阅读 · 2017年10月14日
图像风格迁移(Neural Style)简史
乌镇智库
5+阅读 · 2017年7月31日
Arxiv
5+阅读 · 2018年5月10日
Arxiv
6+阅读 · 2018年1月11日
Arxiv
13+阅读 · 2017年12月5日
VIP会员
相关VIP内容
相关资讯
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
已删除
将门创投
13+阅读 · 2019年4月17日
原来CNN是这样提取图像特征的。。。
计算机视觉life
8+阅读 · 2018年11月23日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
Tensorflow卷积神经网络
全球人工智能
13+阅读 · 2017年10月14日
图像风格迁移(Neural Style)简史
乌镇智库
5+阅读 · 2017年7月31日
Top
微信扫码咨询专知VIP会员