资源 | 下一代PS工具:Adobe照片级图像风格转换的Torch实现

选自arxiv

作者:栾福军等

机器之心编译

参与:李泽南、微胖

康奈尔大学与 Adobe 的研究者们最近发布了一项通过卷积神经网络进行照片风格迁移的研究。随后,该技术在 Torch 中的实现也已出炉。读者可以点击「阅读原文」下载论文。

论文地址:https://arxiv.org/abs/1703.07511

项目地址:https://github.com/luanfujun/deep-photo-styletransfer

图像风格迁移的研究在人工智能领域层出不穷,作为图像处理软件的龙头,Adobe 的努力非常引人注目。最近,康奈尔大学与 Adobe 的研究者们发布了一项通过卷积神经网络进行图片风格迁移的研究。在本研究的论文中,作者宣称解决了神经网络风格迁移中参考图像风格化导致输出图像「畸变」的问题,新的模型在各种图片内容的测试中表现良好,同时忠实地再现了参考图片中风格迁移的效果。它或许可以成为下一代 Photoshop 的功能之一。

论文:Deep Photo Style Transfer

摘要:

本论文介绍了一种实现照片风格迁移的深度学习方法,这种方法可以处理很多不同种类的照片内容,同时还能如实迁移参考风格。近期,我们研究了美术风格迁移,通过研究神经网络的不同层级将风格从图片内容中分离出来,本论文就是建立在这一研究基础上。过去的办法并不适合图像现实主义风格的迁移,即使输入和参考图片都是照片,但仍然会输出畸变(distortions)的结果。我们的贡献在于将输入到输入的变换限制为空间内的精确色彩变化,并将此约束表示为可以反向传播的自定义 CNN 层。我们的实验表明,这一办法成功地抑制了图片在各种不同场景下(包括一天的各个时间段,各种天气,季节以及艺术风格编辑)的风格扭曲,照片现实主义(photorealistic)风格迁移的效果也令人满意。

图 1:(a)是参考风格,(b)是输出的图像,我们希望输出的效果能仍然和输入一样,属于照片风格,不过风格是参照图片的风格。Neural Style 算法(C)虽然可以成功迁移颜色,不过输出效果会有些扭曲,看起来更像是画作,这并是不照片风格迁移想要的结果。对比之下,我们的结果(d)不仅可以成功迁移作为参照的风格图片,还可以维持输出的照片现实主义风格。右边(e)就是上面不同效果的集合对比。

图 2:在研究中,开发者向不同的模型输入图片(a),参考图片(e),对风格迁移效果进行了比较。相比 CNNMRF 等其他研究得出的结果,新模型(d)可以防止扭曲并正确地匹配纹理。

图 7:通过手动分割,可以让系统完成多种任务,如:为香水瓶(a)加入火焰效果(c),切换不同苹果(d,e)之间的纹理颜色。

图 8:用户反馈意见显示康奈尔大学和 Adobe 的新研究实现了目前最好的效果

结论

在本论文中,研究者通过自定义卷积神经网络层中的拉普拉斯抠图矩阵(Matting Laplacian)来限制输入到输出的变化,从而改善了风格转换中色彩变化的效果。而语义分割的引入带来了更多效果绝佳的风格迁移。在各种各样的场景中,包括不同时间,天气,季节和艺术风格,都能获得令人满意且逼真风格的转换。在未来,研究者们将继续探索神经网络自动语义匹配的方法,以消除目前图像分割算法的局限性。

安装

本研究的代码基于Torch,并在Ubuntu 14.04 LTS的系统中进行了测试。

系统需求

  • Torch (带有matio-ffi 和 loadcaffe)
  • Matlab

CUDA 后端:

  • CUDA
  • cudnn

下载 VGG-19:

sh models/download_models.sh

编译 cuda_utils.cu (请在makefile中调整 PREFIX 和 NVCC_PREFIX ):

make clean && make

使用

直接使用

想使用已有数据直接生成结果 (在 examples/中) 请在Matlab中直接运行:

run('gen_laplacian/gen_laplacian.m')

随后在Python中:

python gen_all.py

输出的结果会在 examples/final_results/中。

基础使用

1.给定输入图像和具有语义分割蒙版的风格图像,将其分别放入 examples/ 。它们会以如下格式被自动命名:examples/input/in<id>.png, examples/style/tar<id>.pngexamples/segmentation/in<id>.png, examples/segmentation/tar<id>.png;

2.在Matlab中使用 gen_laplacian/gen_laplacian.m i来计算消光拉普拉斯矩阵,则输出矩阵的文件命名格式为: gen_laplacian/Input_Laplacian_3x3_1e-7_CSR<id>.mat;

3.运行以下代码以获得分段的中间结果:

th neuralstyle_seg.lua -content_image <input> -style_image <style> -content_seg <inputMask>
 -style_seg <styleMask> -index <id> -serial <intermediate_folder>

运行以下代码获得最终结果:

th deepmatting_seg.lua -content_image <input> -style_image <style> -content_seg <inputMask> -style_seg <styleMask> 
-index <id> -init_image <intermediate_folder/out<id>_t_1000.png> -serial <final_folder>
 -f_radius 15 -f_edge 0.01

注意:在论文中,我们使用源自DilatedNet的自动场景分割算法生成比较结果。手动分割可以实现更加多样化的任务,因此我们在examples / segmentation /中提供了相关代码。

示例

该算法的示例图片(左侧为输入图,中间为风格参考图,右侧为输出):

致谢 本研究的Torch实现基于Justin Johnson的代码:https://github.com/jcjohnson/neural-style;

拉普拉斯抠图矩阵(matting Laplacian matrix)使用了Anat Levin在Matlab的代码:http://www.wisdom.weizmann.ac.il/~levina/matting.tar.gz。

本文为机器之心编译,转载请联系本公众号获得授权。

✄------------------------------------------------

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-03-29

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

【脑洞大开】IBM AAAI2018论文DLPaper2Code:自动从深度学习论文生成执行代码程序(附作者博士论文下载)

【导读】近日IBM研究院提出从深度学习相关论文中自动生成深度学习代码,使用这项研究,在研究论文中提出的DL设计可以被自动提取,然后使用一种新颖的深度学习UI编辑...

37811
来自专栏CreateAMind

暑期课程第四课:CNN和机器视觉

772
来自专栏机器之心

AAAI 2018 | 阿尔伯塔大学提出新型多步强化学习方法,结合已有TD算法实现更好性能

36411
来自专栏机器之心

入门 | 极致的优化:智能手机是如何处理大型神经网络的

1686
来自专栏人工智能

机器学习,Hello World from Javascript!

导语 JavaScript 适合做机器学习吗?这是一个问号。但每一位开发者都应该了解机器学习解决问题的思维和方法,并思考:它将会给我们的工作带来什么?同样,算法...

2115
来自专栏大数据文摘

资源 | Kaggle数据科学项目索引表,10大类93项,更新中

为了使Kaggle上的资源获得最大化的利用,一位来自印度的数据科学家sban设计了一个数据科学模型、技术和工具的项目索引表。

960
来自专栏大数据挖掘DT机器学习

coursera机器学习算法课: 异常检测 & 推荐系统

这部分内容来源于Andrew NG老师讲解的 machine learning课程,包括异常检测算法以及推荐系统设计。异常检测是一个非监督学习算...

4559
来自专栏人工智能

从卷积神经网络的角度看世界

原文地址:https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html

4106
来自专栏人工智能LeadAI

伪标签半监督学习

之前在训练YoutubeNet和DCN的时候,我都发现平台用户中基础用户的信息数据缺失率特别高,比如性别一栏准确填写的不足60%,所以我一直想调研一下有没有什么...

1042
来自专栏人工智能

如何使用Python基线预测进行时间序列预测

建立基线对于任何时间序列预测问题都是至关重要的。

86410

扫码关注云+社区

领取腾讯云代金券