玩转图像,可以玩一整天的图像生成

Deep Painterly Harmonization
来自康奈尔大学的FujunLuan,在最近的文章中发表了一种可以再油画、名画和各种风格的原图中,嵌入自己个性化的部分,并毫无违和感的展示出来。研究表明局域统计特征对于图像的融入十分重要、生成高质量图像的关键在于保证多尺度统计特征和空间的连续性。

相关工作

  • 图像共融–Image Harmonization.
  • 风格迁移–Style Transfer using Neural Networks

算法

损失主要分为三部分:

  • 标准的风格和内容损失
  • 直方图损失,增加上式稳定性:
  • 全局方差损失,增加图像平滑过渡:

具体的步骤分为:

  • 鲁棒的粗融合:包括了映射和重建
  • 高质量的精融合:同业也是映射与重建
  • 后处理阶段包含了色度去噪、图像分片合成
  • 训练painting estimator 来获取优化参数

一些结果:

作者

Fujun Luan是康奈尔大学博士,主要集中于图形学渲染方向和风格迁移领域的研究,去年一篇著名的图像风格迁移论文deep photo style transfer也出自他之手。

代码实现

作者的代码主要包含torch、cudnn和matlab写的代码。其中cudnn用于加速、torch用于风格迁移生成、matlab用于后处理。

python

其python代码主要是调用了torch写的lua脚本

import os
import mathnumImgs = 35   #需要生成的图像数量
# numGpus = 16
numGpus = 1   #使用的GPU数量if os.path.exists('results') == 0:os.mkdir('results')   #图像在git文件夹下resulte下N = int(math.ceil(float(numImgs)/numGpus))   #分配for j in range(1, numGpus+1):cmd = ''for i in range(1, N+1):idx = (i-1) * numGpus + (j-1)if idx >= 0 and idx < numImgs:print('Working on image idx = ', idx)#https://github.com/luanfujun/deep-painterly-harmonization/blob/master/neural_gram.luapart_cmd1 =' th neural_gram.lua '\     #计算格拉姆矩阵,各种风格迁移、掩膜等等' -content_image data/' + str(idx) + '_naive.jpg  '\' -style_image   data/' + str(idx) + '_target.jpg '\' -tmask_image   data/' + str(idx) + '_c_mask.jpg '\' -mask_image    data/' + str(idx) + '_c_mask_dilated.jpg '\' -gpu ' + str(j-1) + ' -original_colors 0 -image_size 700 '\' -output_image  results/' + str(idx) + '_inter_res.jpg'\' -print_iter 100 -save_iter 100 && '#https://github.com/luanfujun/deep-painterly-harmonization/blob/master/neural_paint.luapart_cmd2 =' th neural_paint.lua '\     #生成painting,精细化的融合新加入的图像' -content_image data/' + str(idx) + '_naive.jpg '\' -style_image   data/' + str(idx) + '_target.jpg '\' -tmask_image   data/' + str(idx) + '_c_mask.jpg '\' -mask_image    data/' + str(idx) + '_c_mask_dilated.jpg '\' -cnnmrf_image  results/' + str(idx) + '_inter_res.jpg  '\' -gpu ' + str(j-1) + ' -original_colors 0 -image_size 700 '\' -index ' + str(idx) + ' -wikiart_fn data/wikiart_output.txt '\' -output_image  results/' + str(idx) + '_final_res.jpg' \' -print_iter 100 -save_iter 100 '\' -num_iterations 1000 &&' cmd = cmd + part_cmd1 + part_cmd2cmd = cmd[1:len(cmd)-1]print(cmd)os.system(cmd)

matlab

作者同时还提供了matlab代码来进行后处理:

for i = 0:34close allin_fn  = ['results/' int2str(i) '_final_res.png'];  %输入输入out_fn = ['results/' int2str(i) '_final_res2.png'];if exist(in_fn, 'file') ~= 2 fprintf('file doesn''t exist: %s\n', in_fn); continueend if exist(out_fn, 'file') == 2 fprintf('result already exists: %s\n', out_fn); continueend I = im2double(imread(in_fn));G = im2double(imread(['data/' int2str(i) '_naive.jpg']));    %原图M = im2double(imread(['data/' int2str(i) '_c_mask.jpg']));   %mask图像B = im2double(imread(['data/' int2str(i) '_target.jpg']));   %目标图tr= 3;h = fspecial('gaussian', [2*tr+1 2*tr+1], tr);sM = imfilter(M, h, 'same'); sM(sM > 0.01) = 1; % dialtesM(sM < 0.01) = 0;sM = imfilter(sM, h, 'same'); addpath 3rdparty/colorspaceI_lab = colorspace('rgb->lab', I);   %颜色空间lab转换addpath 3rdparty/guided_filter    %引导滤波器addpath 3rdparty/patchmatch-2.0    %图像片元匹配r = 2; % try r=2, 4, or 8    %一些超参数eps = 0.1^2; % try eps=0.1^2, 0.2^2, 0.4^2O_lab = I_lab;O_lab(:,:,2) = guidedfilter_color(G, I_lab(:,:,2), r, eps);   %引导滤波器:ref:https://arxiv.org/abs/1505.00996O_lab(:,:,3) = guidedfilter_color(G, I_lab(:,:,3), r, eps);% runs here, deconvolution CNN artifact removed   %去除解卷积的人工痕迹O1 = colorspace('lab->rgb', O_lab);% one patchmatch pass to further remove color artifactcores = 4; algo = 'cputiled';patch_w = 7;ann = nnmex(O1, B, algo, patch_w, [], [], [], [], [], cores);O2_base = im2double(votemex(B, ann));r = 3;h = fspecial('gaussian', [2*r+1 2*r+1], r/3);O1_base = imfilter(O1, h, 'same');O2 = O2_base + O1 - O1_base;O2 = O2.*sM + B.*(1-sM);figure; imshow(I)figure; imshow(O2)imwrite(O2, out_fn);
end

TODO:代码run demo


ref:
https://arxiv.org/pdf/1804.03189.pdf
https://www.cs.cornell.edu/~fujun/
https://github.com/luanfujun/deep-painterly-harmonizatio
results:https://github.com/luanfujun/deep-painterly-harmonization/blob/master/README2.md
deep photo transfer:https://blog.csdn.net/cicibabe/article/details/70868746,https://arxiv.org/pdf/1703.07511.pdf

【深度学习风格化/生成艺术】图像融合--毫无违和相关推荐

  1. 基于深度学习的多聚焦图像融合(Multi-Focus Image Fusion)论文及代码整理

    基于深度学习的多聚焦图像融合(Multi-Focus Image Fusion)论文及代码整理 首先附上近期整理基于深度学习的图像融合论文的思维导图 本篇博客主要整理基于深度学习的多曝光图像融合的论文 ...

  2. 基于深度学习的多曝光图像融合(Multi-exposure Image Fusion)论文及代码整理

    基于深度学习的多曝光图像融合(Multi-exposure Image Fusion)论文及代码整理 首先附上近期整理基于深度学习的图像融合论文的思维导图 本篇博客主要整理基于深度学习的多曝光图像融合 ...

  3. 一文探讨可解释深度学习技术在医疗图像诊断中的应用

    2020-10-20 14:39:24 机器之心分析师网络 作者:仵冀颖 编辑:Joni 本文依托于综述性文章,首先回顾了可解释性方法的主要分类以及可解释深度学习在医疗图像诊断领域中应用的主要方法.然 ...

  4. 【深度学习前沿应用】图像风格迁移

    [深度学习前沿应用]图像风格迁移 活动地址:[CSDN21天学习挑战赛](https://marketing.csdn.net/p/bdabfb52c5d56532133df2adc1a728fd) ...

  5. RSE2020/云检测:基于弱监督深度学习的高分辨率遥感图像精确云检测

    RSE2020/云检测:Accurate cloud detection in high-resolution remote sensing imagery by weakly supervised ...

  6. 基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状

    参考   基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状 - 云+社区 - 腾讯云 目录 一.概述 二.通用目标检测方法 1.类不平衡问题 2.复杂背景 3.目标的尺度变化 4.特殊视角 5 ...

  7. 【深度学习】生成对抗网络(GAN)的tensorflow实现

    [深度学习]生成对抗网络(GAN)的tensorflow实现 一.GAN原理 二.GAN的应用 三.GAN的tensorflow实现 参考资料 GAN( Generative Adversarial ...

  8. 深度学习、生成对抗、Pytorch优秀教材推荐

    推荐一批深度学习.生成对抗.Pytorch优秀教材推荐,绝对不容错过. <GANs in Action> Jakub Langr and Vladimir Bok 本书简介: <GA ...

  9. 基于深度学习的x射线图像骨龄自动特征提取

    基于深度学习的x射线图像骨龄自动特征提取 Automatic Feature Extraction in X-ray Image Based on Deep Learning Approach for ...

  10. 【毕业设计_课程设计】基于深度学习的甲状腺超声图像良恶性诊断算法研究

    文章目录 0 项目说明 1 引言 1. 1 甲状腺超声图像自动良恶性诊断及其意义 1.2 深度学习在甲状腺超声图像良恶性诊断中的应用 2 理论部分 2.1 数据集 2.2 工作站环境 2.3 预处理 ...

最新文章

  1. 这是我看过,最好懂的神经网络
  2. Debit and Credit Memo
  3. Nginx + uWSGI + flask + socketio 部署解决方案
  4. SEO如何辨别真假Baiduspider
  5. ASP文件上传方式大比拼
  6. java-线程同步问题
  7. Android 序列帧动画
  8. mysql返回上一层_mysql常用命令大全
  9. php sqlhelper,php中分页及SqlHelper类用法实例
  10. 二/三维空间曲面的切平面以及在某一点上的切线,法线
  11. 形式验证——学习笔记
  12. 2018.12.26 Jquery 使用 slideBox 实现滚动 效果
  13. oracle实用教程选择题,第3章 表与表数据操作 Oracle实用教程(第3版)PPT.ppt
  14. Mysql必知必会概要总结
  15. java生成word(报告报表)含统计图表图片、循环表格,Spring Boot整合word生成
  16. jvm原理解析——不疯魔不成活 1
  17. vscode 取消拉去变基_开发工具之 Git 篇
  18. 羊了个羊增加版:鸡了个鸡,坤了个坤
  19. php realpath 缓存,PHP的Realpath Cache
  20. 负债的“90后、00后”日益增多 他们在网上抱团自救

热门文章

  1. 360html文件打不开,为什么360安全卫士打不开
  2. win2003服务器360修复漏洞打不开网页,win7电脑使用360浏览器打不开网页的有效恢复方法...
  3. github建立自己的个人网站
  4. 天正菜单栏不见了怎么显示出来_天正建筑菜单栏不见了怎么调出来? _ 设计学院_设计软件教程自学网...
  5. 数据压缩1 | 浊音清音爆破音时域及频域特性
  6. 公有云、私有云、私有化_私有云的未来是什么?
  7. Unsupported OS Version In Xcode
  8. HBulider 制作 手机APP
  9. mysql访问错误:1682
  10. TeamCity VS Jenkins:选择正确的CI / CD工具