开源|如何基于深度学习实现深度写实摄影风格的转换(附源码)

原标题:开源|如何基于深度学习实现深度写实摄影风格的转换(附源码)

全球人工智能

来源:Github 作者:Fujun Luan 翻译:林一鸣

深度摄影风格转换的实现,是以论文《Deep Photo Style Transfer》为基础的,文章最后附论文和资源链接。

深度摄影风格转换的实现,是以论文《Deep Photo Style Transfer》为基础的,文章最后附论文和资源链接。

论文摘要

本文介绍了一种基于深度学习的写实深度摄影风格转换方法,可以处理各种图像内容,同时如实地转移参考风格到输入图像。我们的方法建立在最近画家风格转移(如梵高的星空)的工作。这些工作虽然能利用神经网络的不同层把风格与图像的内容分开,但是他们不适合写实摄影风格转换。即使输入和参考图像都是摄影图片,输出图像仍然表现出让人想起绘画的失真。我们的贡献,是将输入到输出的变换约束为色彩空间的局部仿射变换,同时把这个约束表达为一个可以反向传播的卷及网络层。实验证明,这个方法成功地抑制了失真,并且能在各种各样的场景中生成令人满意写实风格转换效果,包括时间,天气,季节和艺术性编辑的转移效果。

深度摄影风格转换

设置

使用 "Deep Photo Style Transfer"中的相应代码和数据,代码基于torch,在Ubuntu 14.04 LTS操作系统上测试通过。

依赖的开发环境:Torch (包括 matio-ffi 和 loadcaffe)和Matlab。

CUDA zhi:CUDA、cudnn

下载 VGG-19的代码:shmodels/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计算拉普拉斯矩阵。生成矩阵名字如下: 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>

4. 最终结果:

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自动场景分割算法生成对照结果。手动分割使更多样化的任务成为可能,所以wo把掩码放在 examples/segmentation/。

注意:在论文中我们用基于 DilatedNet自动场景分割算法生成对照结果。手动分割使更多样化的任务成为可能,所以wo把掩码放在 examples/segmentation/。

实例

我们的算法产生的结果如下(从左到右分别是输入图,风格图和结果):

致谢

  • 我们的Torch实现基于Justin Johnson的代码(https://github.com/jcjohnson/neural-style);

  • 我们用了 Anat Levin的Matlab 代码(http://www.wisdom.weizmann.ac.il/~levina/matting.tar.gz)来计算kou't拉普拉斯矩阵。

我们的Torch实现基于Justin Johnson的代码(https://github.com/jcjohnson/neural-style);

我们用了 Anat Levin的Matlab 代码(http://www.wisdom.weizmann.ac.il/~levina/matting.tar.gz)来计算kou't拉普拉斯矩阵。

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

GitHub资源:https://github.com/luanfujun/deep-photo-styletransfer

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

GitHub资源:https://github.com/luanfujun/deep-photo-styletransfer

热门文章推荐

返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
推荐阅读