在Python中使用Tensorflow进行神经风格迁移
风格迁移:内容图像+风格图像=混合图像,风格迁移就是提取B的风格,然后把A用B的风格再画一遍,用的VGG19来具体定义风格和内容,VGG19模型就是在imagenet数据集上预训练的模型。
让我们从安装依赖开始吧。你们之中有一些人可能没有安装所有需要的依赖,因此,为了确保一切进展顺利,我将从零开始。
P.S. 我是Mac用户,所以我将会在CPU上重新训练网络,比GPU慢10倍,感觉速度慢的可以在服务器上做,
我已经使用过几次这个项目了,为了确保我演示给你的是从零开始的,我将所有的工作都放在虚拟环境里来完成(因为我的Mac早就已经安装好所有需要的依赖了)
我将要从安装pip,homebrew,tensorflow,opencv开始。但是,当我安装它们的时候,我将要展示给你安装命令以便于你可以跟着我这样做。这个非常简单,即便你是个新手。
要求
Pip: sudo easy_install pip
Brew: pip install homebrew
Tensorflow: pip install tensorflow
OpenCV: pip install opencv-python
(如果拒绝访问,请使用管理员权限命令“sudo”。例如:sudo pip install homebrew)
在安装完这些依赖以后,使用命令pip freeze来检查环境。
1.png
找一个文件夹,例如桌面,新建一个文件夹,名字就叫deepstyle。用一下命令进入文件夹:
cd Desktop/deepstyle
克隆到仓库
所有依赖都安装完成以后,并且创建了新的文件夹,让我们去githubhttps://github.com/cysmith/neural-style-tf.git下载deepstyle,使用以下命令。
git clone https://github.com/cysmith/neural-style-tf.git
2.png
如果一切进展顺利,那就万事大吉。克隆完仓库后,让我们进入它的目录:
cd neural-style-tf
预训练模型
接下来的一步就是下载预训练的模型。我们将一个图像合成到另一个图像中,正如你所知道的,两张图片对于AI的数据集来说是不够的。让我们去以下的链接:
http://www.vlfeat.org/matconvnet/pretrained/
我们应该搜索imagenet VGG-19 预训练模型(imagenet-vgg-verydeep-19)weights.下载它,它的大小是534.9Mb,所以大概要花一小会儿。下载好后,将它移动到项目里(neural-style-tf folder)。
3.png
在这里插入图片描述
4.png
输入图片和风格图片
这些几乎是所有的工作。现在,我们需要两张图片,提取其中一张图片的风格,并且把这种风格融合到另外一张里面。让我们以一种浪漫的方式保持它并想象:如果Magda Eisenhardt(Quicksilver的母亲)和Henry Allen(The Flash的父亲)相遇就会怎么样。你猜它,让我们合成Flash和Quicksilver的图像。
我将使用Flash的风格,将这种风格融入到Quicksilver中。一个建议:尽可能使用面部的精确图像。 如果你正在使用CPU甚至更多,它不是那么强大,神经网络会很难合成它们。 因此,可能存在一些不准确之处。
我已经下载了一些图片,我将在下面展示给你。
5.png
将下载的图片复制到项目里面。你使用的输入图片应该拷贝到“image_input”里面
6.png
所有的风格图片应该复制到文件家“styles”里面
7.png
训练(再训练)
当这一切都准备就绪之后,让我们运行以下命令:
确定你在neural-style-tf目录下面:
bash stylize_image.sh ./image_input/quicksilver.png ./styles/theflash.png
这个命令代表的是:bash stylize_image.sh .// .//
按回车键,它会要求你安装需要的依赖,输入y,然后再按回车键确认。
8.png
之后,它会问你支持CUDA的GPU,但正如我上面提到的,我是一个mac用户,所以我会按下“n”按钮。
如果出现问题,请不要害怕。 它刚刚发生,因为你没有安装所有必需的依赖项。 就我而言,它是scipy库。
继续使用命令:pip install <库名>
在我的情况下:pip install scipy
9.png
安装所需的库后,只需使用我在上面显示的相同命令:
bash stylize_image.sh ./image_input/quicksilver.png ./styles/theflash.png
神奇的事情出现了:
10.png
这个过程不会花太长时间。 有关迭代次数和图像精度变得准确度的详细信息将在终端窗口中显示如下:
11.png
神经网络需要1000次迭代来合成图像。 等一段时间。 对于配备2.2GHz i7处理器和16GB RAM的MacBook Pro,“一段时间”约为47.62306分钟。
结果
完成此过程后,您将看到精确度详细信息和已用时间:
12.png
开始了。 让我们转到image_output目录并检查结果文件夹。 在那里,我们将看到一些文件,包括预处理的图像和元数据。
13.png
我们需要的图片就是result.png
14.png
正如我们看到的那样,flash图片的风格已经融入到输入的图片之中了。
它没有令人惊讶的准确性,但算法已经完成了它的工作:它将样式从一个图像转移到另一个图像。
您可以使用这个神经网络将世界级画家的风格转换为某些人的图像,也许是你的图像,而且它的效果非常好
参考链接:https://www.jianshu.com/p/6cdbf40efa08
在Python中使用Tensorflow进行神经风格迁移相关推荐
- 使用预训练模型VGG19+Tensorflow进行神经风格迁移实战
神经风格迁移 前言 正文 库.包.模板 图像预处理 构建神经风格迁移模型 VGG19预训练模型 基于VGG19自定义模型 代价函数 内容代价函数 风格代价函数 总代价函数 训练模型 结果展示 总结 源 ...
- python图片风格迁移毕设_神经风格迁移是如何运作的概述及Python实现
神经风格迁移是如何运作的概述及Python实现 作者:PHPYuan 时间:2019-03-26 03:40:37 深度学习可以捕获一个图像的内容并将其与另一个图像的风格相结合,这种技术称为神经风格迁 ...
- 有趣的深度学习——使用TensorFlow 2.0实现图片神经风格迁移
前言 这也是一个重写的项目,之前用Python 2.7 + TensorFlow 1.4写的图片神经风格迁移的项目(TensorFlow 练手项目三:使用 VGG19 迁移学习实现图像风格迁移)直到现 ...
- python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
<python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...
- python opencv 图像切割_Python 使用 OpenCV 进行图像神经风格迁移
Neural Style Transfer with OpenCV src: https://www. pyimagesearch.com/2018/ 08/27/neural-style-trans ...
- opencv与python学哪一个好_教你如何用OpenCV、Python和深度学习技术对图像和实时视频进行神经风格迁移...
编者按:在这篇教程中,作者AdrianRosebrock将教你如何用OpenCV.Python和深度学习技术对图像和实时视频进行神经风格迁移. 2015年,Gatsys等人在论文ANeuralAlgo ...
- c语言调用tensorflow模型,C++调用Python中的Tensorflow模型
C++调用Python中的Tensorflow模型 利用c++调用Python2.7的程序,加载tensorflow模型(为什么不使用Python3,坑太多了,一直解决不好).整个环境在Ubuntu1 ...
- 图像迁移风格保存模型_用TensorFlow.js在浏览器中部署可进行任意图像风格迁移的模型...
风格迁移一直是很多读者感兴趣的内容之一,近日,网友ReiichiroNakano公开了自己的一个实现:用TensorFlow.js在浏览器中部署可进行任意图像风格迁移的模型.让我们一起去看看吧! Gi ...
- Stanford CS230深度学习(六)目标检测、人脸识别和神经风格迁移
在CS230的lecture 6中主要吴恩达老师讲述了一些关于机器学习和深度学习的tips,用一个触发词台灯的例子教我们如何快速的解决实际中遇到的问题,这节课主要是偏思维上的了解,还是要实际问题实际分 ...
最新文章
- 【安全系列之加密算法】常用安全的加密算法
- C# WPF发票打印
- oracle rac 高并发性能_Tomcat 高并发之道原理拆解与性能调优
- 尴尬!Google搜索现在也会“千人千面”了,退出登录也一样
- ubuntu服务器+apache2绑定域名(以腾讯云域名为例)
- 电商专业术语中英文对照
- Minio过期分片上传文件清理引出的系统配置
- linux命令前的$是什么意思,linux中$符号的基础用法总结
- Java算法之 循序搜寻法
- 所有失去的都会以另一种方式归来
- 文科妹学 GitHub 简易教程(转)
- viewers.js 图片查看插件使用说明-vue中引用
- R语言-NULL和NA的区别
- 最硬核的独立蒙特卡洛抽样法
- 智能家居的分类有哪些?
- 【云栖大会】探索企业互联网转型之路
- 计算机主板风扇安装,详解电脑风扇插在主板哪里怎么安装
- 非常实用方便快捷的批量重命名软件——ReNamer Lite
- poi 导入excel文件,日期格式的处理。
- matlab内置函数simplify使用方法