首页 > 代码库 > 基于window7+caffe实现图像艺术风格转换style-transfer

基于window7+caffe实现图像艺术风格转换style-transfer

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

比如这是梵高的画

技术分享

这是你自己的照片

技术分享

然后你想生成这样

技术分享

怎么实现呢在基于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不等。如果没有下载成功.model文件,我们可以打开download_models.sh,按照里面的链接直接手动下载。

3 运行代码

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

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

技术分享

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(虽然说可以选择其他模型,但一般来说vgg19的效果最好), g 0对应选择默认的GPU,如果是g -1则为CPU

然后回车就能运行,运行后就能在outputs文件夹中得到上述处理后的结果了。

下面是运行的示意图:

技术分享

可以看到,选择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宽度,长度安装输入原始图像一致的宽长比计算。

我自己的实验结果

原始图像:

技术分享

输出的效果:

技术分享

 

基于window7+caffe实现图像艺术风格转换style-transfer