这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer

比如这是梵高的画

基于caffe的艺术迁移学习 style-transfer-windows+caffe

这是你自己的照片

基于caffe的艺术迁移学习 style-transfer-windows+caffe

然后你想生成这样

基于caffe的艺术迁移学习 style-transfer-windows+caffe

 

怎么实现呢在基于windows的caffe上,很简单。

1 首先在 https://github.com/fzliu/style-transfer 把代码下载下来,另外主要这个代码基于pycaffe的,需要将pycaffe编译好。

最好是在电脑上装一个python progressbar包 ,在windows cmd下输入 pip install progressbar

2 解压style-transfer-master文件夹,运行scripts 下的download_models.sh 就会下载模型,

在model文件夹下会出现caffenet、vgg16、vgg19、googlenet等文件夹,但是有时候model文件夹里面还是没有.model文件,一般来说.model文件有几十到几百M不等。

我们可以打开download_models.sh,按照里面的链接直接下载。

3 运行代码

下面是运行代码的格式:  python style.py -s <style_image> -c <content_image> -m <model_name> -g 0

在windows下 切换到style.py 所在的目录,输入代码如下

基于caffe的艺术迁移学习 style-transfer-windows+caffe

python style.py -s images/style/starry_night.jpg -c images/content/nanjing.jpg -m vgg19 -g 0

 

可见上面例子中,style-image对应starry_night.jpg 即风格图像, content_image对应自己的照片nanjing.jpg, 模型选择vgg19, g 0对应选择默认的GPU,如果是g -1则为CPU

然后回车就能运行,得到上述结果了。

下面是运行的示意图:

基于caffe的艺术迁移学习 style-transfer-windows+caffe

可以看到,选择GPU、然后加载图像和模型成功后就开始跑了,左侧是显示运行进度,已经是6%,还需要54分钟左右,由于图像比较大,时间比较长。

4 更改style.py 中

parser.add_argument("-l", "--length", default=1024, type=float, required=False, help="maximum image length")

def transfer_style(self, img_style, img_content, length=1024, ratio=1e5,
n_iter=512, init="-1", verbose=False, callback=None): 可以设置图像输出的尺寸大小,例如你自己的照片图像大小是1024*500 ,更改输出length=1024,可以获得与原始图像一致的尺寸。

不更改的话,程序中默认输出是512宽度,和输入原始图像一致的宽长比。

我自己的实验结果

原始图像:

基于caffe的艺术迁移学习 style-transfer-windows+caffe

输出的效果:

基于caffe的艺术迁移学习 style-transfer-windows+caffe