利用python实现画风迁移(小白零基础)

利用python实现画风迁移(小白零基础)

首先声明,我自己就是一个小白,之前没有接触过神经网络相关的知识(现在也停留在最简单的双层神经网络层面)。

我把从完全不懂什么是神经网络到能够绘制出画风迁移的这样一个过程,写成博客分享一下。由于具体技术不太懂,所以仅供娱乐。
这里我也是尝试了很久才成功输出,期间也遇到了输出全是黑色的图像,不知道是格式问题还是算法问题亦或是版本问题,之前莫名其妙的好了。平时几乎没用过python,本身也不是码农,有些问题无法回答希望各位读者见谅。

这里说明一下,这里实现的算法是fast style transfer,即快速的画风迁移。

电脑的环境是win10,不过其它的应该也差不了多少。

1. 首先,下载python

我下载的python是python3.6,从官网上下载的。
python下载地址为:https://www.python.org/downloads/。
点击download就可以下载对应版本的python。
界面如下
利用python实现画风迁移(小白零基础)_第1张图片
之所以我没有下载3.7,是因为当时tensflow不支持python3.7。
下载时建议选择zip file或者executable installer,因为外网的网速有时候非常慢。如果下载时网速也很慢,可以试试迅雷下载。

python的安装教程很多,可以随便找。

2 之后就是安装pycharm

安装pycharm的作用主要是为了安装tensflow(作为小白我不会用pip安装)
pycharm的下载地址为:https://www.jetbrains.com/pycharm/download/#section=windows
界面如下:
利用python实现画风迁移(小白零基础)_第2张图片

我下载的是Professional版的,激活教程可以参考:
https://blog.csdn.net/pdcfighting/article/details/80297499

3 利用pycharm安装tensorflow

tensorflow是python下面一个专门用于神经网络的第三方库。

1打开pycharm
选择File – Setting ,然后选择Project下的Project Interpreter,出现如下界面:
利用python实现画风迁移(小白零基础)_第3张图片
这个已经是我安装好的样子。

首先把上面Project Interpreter的安装目录更改到安装目录。把inherit global site-packages 打上勾,可以参考
https://blog.csdn.net/qq_31638535/article/details/80574513里最后第三条对目录的设置。

2之后更改下载地址,由于国外网的速度慢,所以选用国内网下载。
点击右上角的+号,出现下图。点击Manange Repositories。
利用python实现画风迁移(小白零基础)_第4张图片
之后点击再次点击加号,输入“https://pypi.tuna.tsinghua.edu.cn/simple/”
利用python实现画风迁移(小白零基础)_第5张图片

3之后升级pip
就是选中pip,然后点击一下右边红圈内的小三角就行了。
利用python实现画风迁移(小白零基础)_第6张图片

更新的时候可以在pycharm主界面观察更新动态,就是主界面下方画红圈的地方,点击一下可以放大进度条。
利用python实现画风迁移(小白零基础)_第7张图片
4 安装tensorflow

选择右边加号,然后在上面的搜索框中搜索tensorflow,安装即可。
可以参见https://blog.csdn.net/wmrem/article/details/80004819

5 检查是否安装成功

打开python的IDLE,在菜单栏里python栏中第一个往往就是。
在IDLE内输入import tensorflow
如果没有报错,证明导入tensorflow成功。可以进入下一步。

4下载画风迁移的代码和训练模型

下载代码的地址我们用Github的这位大神代码,下载地址如下:
https://github.com/charlesXu86/fast-neural-style-tensorflow-master
点击右边绿色的Clone or Download,然后选择Download即可下载。

已经训练好的模型下载地址如下:
https://pan.baidu.com/s/1i4GTS4d#list/path=%2F

把下载好的模型放在代码的文件夹下,如下图所示:
利用python实现画风迁移(小白零基础)_第8张图片

5 运行代码

依然打开python的IDLE,然后file–open 选择eval.py文件。
利用python实现画风迁移(小白零基础)_第9张图片

然后主要更改的是13、14行,即
tf.app.flags.DEFINE_string(“model_file”, “wave.ckpt-done”, “”)
tf.app.flags.DEFINE_string(“image_file”, “img/test2.jpg”, “”)

wave.ckpt-done选择为你选择的画风,不同文件代表不同的画风,可以参见之前下载代码的那里说明。
img/test2.jpg选择为你的图片,即img文件夹下的图片。

第60行也可以改,主要是用作更改输出图片的名字,不改也行。

之后按F5即可运行。

效果

原图:大小不限,但别太大了。
利用python实现画风迁移(小白零基础)_第10张图片

画风:scream.ckpt-done文件
利用python实现画风迁移(小白零基础)_第11张图片
输出:用时半分钟就输出好了。
显示INFO:tensorflow:Done. Please check generated/res.jpg.

利用python实现画风迁移(小白零基础)_第12张图片

这里可以看到两个问题:

1.scream这个画风训练的模型右边缘有红色框,这个是原画中自带的。所以如果要自己训练模型的画,要把边缘这些不利于画风形成的部分裁剪掉

2.生成的图天空部分,有些没渲染到的地方(右上角浅蓝色的部分)。原因是原画的那一块色彩太纯粹,缺乏纹理导致的。解决办法是给原画添加噪声,之后再作为输入。

你可能感兴趣的:(利用python实现画风迁移(小白零基础))