Deep Photo Styletransfer的一种纯Tensorflow实现,教你如何转换图片风格

通过深度学习,一秒钟让你的照片高大上,这是康奈尔大学和 Adobe 的工程师合作的一个新项目,通过卷积神经网络把图片进行风格迁移。项目已开源,名字叫「Deep Photo Style Transfer」。

本文这个项目将介绍Deep Photo Styletransfer的一种纯Tensorflow实现,如果你想找到torch实现的话,地址:https://github.com/luanfujun/deep-photo-styletransfer。

这个实现支持L-BFGS-B(这是原作者所使用的)和Adam算法,以防当Tensorflow升级到更高版本时,Scipy优化器接口不兼容。

由于Tensorflow的自动微分(automatic differentiation),这一实现可能会变得更简单一些。此外,由于另一种存储库(repository)计算方法——Matting Laplacian稀疏矩阵,实现也没有对MATLAB存在依赖。

下面是将照片风格转移成另一张照片的例子。

图片出处:见水印

免责声明:

本软件仅供学术和非商业用途使用。

设置

依赖关系

  • Tensorflow
  • Numpy
  • Pillow
  • Scipy
  • PyCUDA (用于平滑的局部仿射(local affine),在CUDA 8.0上进行测试)

建议使用Anaconda Python,因为你只需要手动安装Tensorflow和PyCUDA。CUDA你可以选择性的安装,但它确实是值得推荐的。

下载VGG-19模型权重

在VGG Tensorflow中采用了Tensorflow的VGG-19模型,在类接口上几乎没有修改。VGG-19模型权重存储为.npy文件,可以在这里下载。下载后,将weight file复制到./project/vgg19目录。

使用

基本用法

你需要指定内容图像的路径,样式图像,内容图像分割,样式图像分割,然后运行命令。

python deep_photostyle.py --content_image_path <path_to_content_image> --style_image_path <path_to_style_image> --content_seg_path <path_to_content_segmentation> --style_seg_path <path_to_style_segmentation> --style_option 2

例:

python deep_photostyle.py --content_image_path ./examples/input/in11.png --style_image_path ./examples/style/tar11.png --content_seg_path ./examples/segmentation/in11.png --style_seg_path ./examples/segmentation/tar11.png --style_option 2

其它选项

–style_option指定了三种不同的样式传输方式。–style_option 0是生成分段的中间结果,就像是torch中的neuralstyle_seg.lua文件。–style_option 1使用这个中间结果来生成最后的结果,比如torch中的deepmatting_seg.lua文件。–style_option 2将这两个步骤组合为一个行命令来直接生成最终结果。

运行python deep_photostyle.py –help来查看所有选项的列表。

图像分割

这个存储库(repository)不提供图像分割脚本,只使用来自torch版本的分割图像。使用的Mask颜色也和它们一样。你可以指定分割模型和Mask颜色来定制你自己的图像风格转变。

例子

这些都是Tensorflow算法的结果(从左到右是输入、风格、torch结果和Tensorflow结果)。

  • 我们的Tensorflow实现基本上遵循了torch代码。
  • 我们使用martinbenson的python代码来计算Matting Laplacian。

引用

如果你发现这段代码对你的研究有用,请引用:

@misc{YangPhotoStyle2017,
  author = {Yang Liu},
  title = {deep-photo-style-transfer-tf},
  publisher = {GitHub},
  organization={Alibaba-Zhejiang University Joint Research Institute of Frontier Technologies},
  year = {2017},
  howpublished = {\url{https://github.com/LouieYang/deep-photo-styletransfer-tf}}
}

此文为编译作品,作者LouieYang,出处GitHub。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

Python验证码识别:利用pytesser识别简单图形验证码

来源: j_hao104 my.oschina.net/jhao104/blog/647326 一、探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图...

698100
来自专栏SnailTyan

非极大值抑制(Non-Maximum Suppression)

博客:noahsnail.com  |  CSDN  |  简书 |   云+社区

80300
来自专栏机器学习算法与Python学习

Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

《谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读》,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码。现在,PyTorch用户的...

25110
来自专栏Python中文社区

基于RNN自动生成古诗

專 欄 ❈ 作者:yonggege,Python中文社区专栏作者 GitHub地址:https://github.com/wzyonggege ❈ 0. ch...

29250
来自专栏Pytorch实践

Tensorflow常见模型及工程化方法

Tensorflow在深度学习模型研究中起到了很大的促进作用,灵活的框架免去了研究人员、开发者大量的自动求导代码工作。本文总结一下常用的模型代码和工程化需要的代...

42260
来自专栏计算机视觉战队

稀疏&集成的卷积神经网络学习(续)

昨天跟大家详细的说了分类,定位的一些相关知识,今天把剩下的最后一点知识给大家补充完整,也感谢大家一直的支持,谢谢! 昨天的推送告诉大家了分类方案,我们再温习一...

32160
来自专栏Pytorch实践

Tensorflow常见模型及工程化方法

Tensorflow在深度学习模型研究中起到了很大的促进作用,灵活的框架免去了研究人员、开发者大量的自动求导代码工作。本文总结一下常用的模型代码和工程化需要的代...

23340
来自专栏贾志刚-OpenCV学堂

使用Tensorflow Object Detection API实现对象检测

Tensorflow Object Detection API自从发布以来,其提供预训练模型也是不断更新发布,功能越来越强大,对常见的物体几乎都可以做到实时准确...

17030
来自专栏FreeBuf

用机器学习玩转恶意URL检测

前段时间漏洞之王Struts2日常新爆了一批漏洞,安全厂商们忙着配合甲方公司做资产扫描,漏洞排查,规则大牛迅速的给出”专杀”规则强化自家产品的规则库。这种基于规...

1.1K90
来自专栏AI黑科技工具箱

1.试水:可定制的数据预处理与如此简单的数据增强(下)

上一部分我们讲了MXNet中NDArray模块实际上有很多可以继续玩的地方,不限于卷积,包括循环神经网络RNN、线性上采样、池化操作等,都可以直接用NDArra...

53130

扫码关注云+社区

领取腾讯云代金券