快速风格迁移在Colab上的实践

〇、快速风格迁移

风格迁移是CV的一个应用,通过融合风格图片和内容图片,实现图片的风格变换,“人人都是艺术家”
最早在论文《A Neural Algorithm of Artistic Style》中提出,但是这种方法是用“训练”的思想来做风格迁移,每次都要单独训练,速度很慢
快速风格迁移由《Perceptual Losses for Real-Time Style Transfer Super-Resolution》提出,主要是将风格迁移的训练和应用分离,可以快速应用
引用自: https://blog.csdn.net/jianbin...

本文是对Github项目 fast-neural-style-tensorflow 在Google Colab上的实践。

一、在计算机上实践

前期准备

  1. clone该GitHub项目并解压。
  2. 在该目录新建pretrained文件夹、generated文件夹、models文件夹和train2014文件夹。
  3. 如需体验直接应用模型的过程,可以在 百度网盘 下载原作者已训练好的七个模型到models文件夹中。
  4. 下载VGG16模型并解压到pretrained文件夹中。下载COCO数据集train2014文件夹中。
  5. 使用pip安装tensorflow等所需包,这里我不再列出。(我的环境是Python3.6,请不要使用Python3.7,我在另一篇文章中提到了原因)

实践过程

  1. 将你的风格图片放在img文件夹中。下面我以lu.jpg这张图片为例。clipboard.png
  2. 配置yml文件:复制conf文件夹中的任一yml文件并重命名为风格图片名.yml(例如我重命名为lu.yml
  3. 将第2行、第3行的绿框处改为你的风格图片名。将第8行的红框处改为你的风格权重。(风格权重的数值需要自行测试得出最佳。)clipboard.png
  4. 以上你就配置好了yml文件,可以开始训练了。
  5. 开始训练:在该项目所在目录打开命令行,使用python train.py -c conf/风格图片名.yml进行训练。(如果你同时安装了Python3.6、Python3.7两个版本,可参考我在另一篇文章中的办法,将python.exe重命名。我训练时使用的命令是python36 train.py -c conf/lu.yml.)
  6. 经过漫长漫长的等待(我用了足足两天,经历了12120个step),在你models/风格图片名目录下出现了fast-style-model.ckpt-done文件,这就是训练好的模型了。(如果你等不及你也可以在整千个step的时候使用以下命令,将done替换为你当前的step即可。)
  7. 应用模型:在该项目所在目录打开命令行,使用python eval.py --model_file 模型路径 --image_file 内容图片路径即可应用该模型(如我:python36 eval.py --model_file ./models/lu/fast-style-model.ckpt-done --image_file img/test.jpg)。该过程只需十秒左右。
  8. generated文件夹中将生成res.jpg,就是你本次应用输出的图片了。clipboard.png

二、在Colab上的实践

由于在自己的计算机上训练真是太漫长太漫长太漫长了,所以我推荐在Google Colab上运行,训练时间大概只需6个小时。

前期准备

可参考我的文章:Google Colab的使用方法

实践过程

1.将所需文件(fast-neural-style-tensorflow-master文件夹)存于Google硬盘中。
2.使用以下代码装载Google硬盘

from google.colab import drive
drive.mount('/content/drive')

3.使用以下代码更改运行目录

import os
os.chdir("/content/drive/fast-neural-style-tensorflow-master") //替换为你文件夹存放的目录

4.使用以下代码训练模型,该过程需约六个小时:

! python train.py -c conf/lu.yml //替换为你配置的yml文件

5.使用以下代码应用模型,该过程仅需几秒:

! python eval.py --model_file ./models/lu/fast-style-model.ckpt-done --image_file img/test.jpg //与计算机中运行命令一致

6.在generated文件夹中将生成res.jpg,就是你本次应用输出的图片了。

你可能感兴趣的:(实践)