神经风格迁移(Neural Style Transfer)程序实现(Keras)
前言
以前翻译了神经风格迁移的论文:,这篇文章中会给出其基于Keras的实现。github上也有很多相关的实现,也有caffe、tensorflow等等框架的实现,如果感兴趣可以自行到github上搜索。出于学习的目的,我也是模仿别人开源在github上的代码,基于keras进行了实现。 程序中使用到了VGG16的预训练模型vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5,可以自己到网上下载好放到~/.keras/models文件夹中。 所有模型都可以到百度网盘中下载:
程序
不说废话了,上代码,代码中已有注释。
log.py:自定义终端的log信息打印格式
neural_style_transfer.py:神经风格迁移的程序实现
运行
只要配置好keras等库的环境,上面的代码在python2或者python3均可运行。下面就以python3为例。 输入python3 neural_style_transfer.py: 事先要准备好两张图片:内容图片、风格图片。 输入:python3 neural_style_transfer.py ./imgs/1-content.jpg ./imgs/1-style.jpg ./imgs/result 第一个为内容图片的路径,第二个为风格图片的路径,第三个为生成图片的前缀。 如图所示:
上面的例子中就是指定了目录中的1-content.jpg为内容图片,1-style.jpg为风格图片,对应着前缀为result_at_iteration_的图片为生成的图片。 运行时根据实际情况自行更改即可。
运行结果
内容图片 风格图片 生成的结果(迭代9次):
其他的一些结果:
注:建议采用GPU运行,如果用CPU运行一般要2到3小时,使用GPU几分钟即可得到结果。另外也可以更改--iter,即迭代次数,为其他值,看看结果如何。其他参数也可以自行更改,观察实验结果。
