koishi70 / Style_Migration_For_Artistic_Font_With_CNN

基于卷积神经网络的风格迁移,制造出带有艺术风格的字体(艺术字),部分效果可达PS水平,可以辅助设计人员做设计;Convolutional neural network based style migration to create a font with artistic style (WordArt), some effects up to PhotoShop level, it can assist designers to do design
MIT License
228 stars 50 forks source link

Style Migration For Artistic Font With CNN

基于卷积神经网络的风格迁移,超越艺术字

使用方法很简单,只需要输入:
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 10 # 文字图片加入随机噪声的等级
--image_enhance True # 生成图片是否进行增强,包括色度,亮度,锐度增强
--font_name 宋体 # 文字字体,支持宋体,楷体,黑体,仿宋,等线
--reverse_color False # True-黑纸白字,False-白纸黑字,默认白纸黑字
--output_per_iter 2 # 每隔多少次迭代输出一张图片
--image_input_mode one_pic # 输入的风格图片允许使用一下mode: 'one_pic:一张风格图片','one_pic_T:一张风格图片,但是这张图片经过旋转90度后当作第二张,特别适合汉字的横竖笔画','two_pic:两张风格图片'
--style_reference_image2_path # 第二张风格图片的位置,没有第二张不填
--two_style_k 0.9 # 两张图片的相对权重,第一张k+第二张(1-k)

一些使用的例子

单一风格:
"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\python.exe" "E:\学习\大三下\人工智能导论\风格转移字体\neural_style_transfer.py" "E:\学习\大三下\人工智能导论\风格转移字体\style\bamboo\5.jpg" E:\学习\大三下\人工智能导论\风格转移字体\输出\ --pictrue_size 300 --background_color (255,255,255) --text_color (0,0,0) --iter 30 --chars 竹 --smooth_times 20 --noise 10 --image_enhance True --image_input_mode one_pic

两个风格:
"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\python.exe" "E:\学习\大三下\人工智能导论\风格转移字体\neural_style_transfer.py" "E:\学习\大三下\人工智能导论\风格转移字体\style\stone\2.jpg" E:\学习\大三下\人工智能导论\风格转移字体\输出\ --pictrue_size 300 --background_color (255,255,255) --text_color (0,0,0) --iter 50 --chars 石 --smooth_times 20 --noise 10 --image_enhance True --image_input_mode two_pic --style_reference_image2_path "E:\学习\大三下\人工智能导论\风格转移字体\style\stone\3.jpg" --two_style_k 0.6

7.13更新

1.更新了使用例子
2.代码稍作调整

6.13更新

1.支持两张风格图片,使用第一张k+第二张(1-k),可以平滑调节两张图片的风格过渡。
2.支持调节随机噪音的强度,为图片加上“noise×图片边长”个噪点。
3.精细调参,三层卷积层的权重改为10:1:1,颜色更艳丽。

一些说明

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

1.加入生成文字图片的方法,以及提供一系列图片生成相关接口,便于您第一时间修改结果
2.修改了loss函数,经过大量实验,确定使用keras提供的VGG19网络的'block1_conv1','block2_conv1','block3_conv1'三层作为风格损失,去除内容损失
3.加入一些图片的增强方法,使得结果更加色彩丰富
4.在style文件夹下提供了一系列图片供您探索
4.运行需要Keras支持,建议使用GPU运算,在 Nvidia GeForce GTX 1050 Ti (4 GB)上,一次迭代大约3s,一张图片耗时2-3min

下面给出一些例子,在example文件夹下有其对应的风格图片

花
雨
竹
雾
墨
木
火
星
石