共计 1836 个字符,预计需要花费 5 分钟才能阅读完成。
〇、快速风格迁移
风格迁移是 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 上的实践。
一、在计算机上实践
前期准备
- clone 该 GitHub 项目并解压。
- 在该目录新建
pretrained
文件夹、generated
文件夹、models
文件夹和train2014
文件夹。 - 如需体验直接应用模型的过程,可以在 百度网盘 下载原作者已训练好的七个模型到
models
文件夹中。 - 下载 VGG16 模型并解压到
pretrained
文件夹中。下载 COCO 数据集到train2014
文件夹中。 - 使用 pip 安装 tensorflow 等所需包,这里我不再列出。(我的环境是 Python3.6,请不要使用 Python3.7,我在另一篇文章中提到了原因)
实践过程
- 将你的风格图片放在
img
文件夹中。下面我以lu.jpg
这张图片为例。 -
配置 yml 文件:复制
conf
文件夹中的任一 yml 文件并重命名为风格图片名.yml
(例如我重命名为lu.yml
) - 将第 2 行、第 3 行的绿框处改为你的风格图片名。将第 8 行的红框处改为你的风格权重。(风格权重的数值需要自行测试得出最佳。)
- 以上你就配置好了 yml 文件,可以开始训练了。
-
开始训练:在该项目所在目录打开命令行,使用
python train.py -c conf/ 风格图片名.yml
进行训练。(如果你同时安装了 Python3.6、Python3.7 两个版本,可参考我在另一篇文章中的办法,将 python.exe 重命名。我训练时使用的命令是python36 train.py -c conf/lu.yml
.) - 经过漫长漫长的等待(我用了足足两天,经历了 12120 个 step),在你
models/ 风格图片名
目录下出现了fast-style-model.ckpt-done
文件,这就是训练好的模型了。(如果你等不及你也可以在整千个 step 的时候使用以下命令,将done
替换为你当前的 step 即可。) -
应用模型:在该项目所在目录打开命令行,使用
python eval.py --model_file 模型路径 --image_file 内容图片路径
即可应用该模型(如我:python36 eval.py --model_file ./models/lu/fast-style-model.ckpt-done --image_file img/test.jpg
)。该过程只需十秒左右。 - 在
generated
文件夹中将生成res.jpg
,就是你本次应用输出的图片了。
二、在 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
,就是你本次应用输出的图片了。
正文完