当我们拍一张风景图的时候,想要把这张风景图转成各种风格的图像,如果使用PS去做,可能需要经过一道道复杂的工序,但这里有了深度学习算法之后,就能够轻轻松松达到这种效果,只需要运行程序就好了。这里用到的就是风格迁移网络了。

什么是风格迁移?

风格迁移将一张图片的内容保留,同时将图像风格转移成另一张图片的风格,比如梵高风格。下面就是一些典型的例子,可以将原本的照片转换成梵高的画作风格,但是依旧保留着原本图片的主体内容。

风格迁移历程

风格迁移最开始是从A Neural Algorithm of Artistic Style这篇文章中提出的,但是只能实现固定风格固定内容的风格迁移,也就是说每次想要处理一张新的图片都需要重新训练一次网络。后续Perceptual Losses for Real-Time Style Transfer and Super-Resolution又提出了固定风格随意内容的风格迁移,也就意味着处理不同的图片不需要重新训练网络,针对某一种风格训练好网络就可以处理各种各样的图片。但是需要生成其他风格的图片,还得再训练新的网络。Meta Networks for Neural Style Transfer提出了一种随意风格随意内容的风格迁移网络,训练完成,只需要输入网络随意风格图片和内容图片即可完成处理。

固定风格固定内容的普通风格迁移

图像经过卷积层后得到的特征图的协方差矩阵可以很好地表征图像的纹理特征,但是会损失位置信息。不过在风格迁移的任务中,我们可以忽略位置信息损失这个缺点,只需要找到一个方法可以表征图像的纹理信息,并把它这些纹理信息迁移到需要被风格迁移的图像中,完成风格迁移的任务;而现在,利用协方差矩阵可以得到纹理信息,我们就可以完成风格迁移。

协方差是一个二阶的统计信息,文章里使用Gram matrix来代替协方差矩阵(其实就是没有减去均值的协方差矩阵),它能够描述全局特征的自相关。Gram矩阵的运算公式如下:

假设图片经过某层卷积层后得到了[height, width, channel]的特征图,为了进行Gram matrix的操作,需要将特征图进行flatten,得到F=[heightwidth, channel] 的特征图,那么这里的G=F.transpose F, 得到size为[channel, channel]的G矩阵,表达特征图里面的自相关。可以理解为这个G矩阵就是图像的风格信息。Gram矩阵代码如下所示:

这样要得到一张处理好的风格迁移图片,就有一个比较直观的想法,给定风格图片p,内容图片a,得到一张有p的风格,有a的内容的图片f,只需要让f和a在内容上近似,f和p在风格上近似,也就意味着要满足如下的损失函数:

Loss的组成就是两个部分:内容损失和风格损失。

内容损失:

风格损失:

实现这一功能的网络架构如图所示:

其实这个网络本身并没有实质的参数,初始化的内容图片就是网络迭代优化时需要更新的参数。将初始化的图片输入VGG网络,内容图片和风格图片同步输入网络,选取特定层的结果计算上面的内容损失和风格损失,经过迭代后,即可得到比较完美的风格迁移图片。

固定风格任意内容的快速风格迁移

要达到固定风格任意内容的快速风格迁移这一效果就是在原本网络结构的基础上加入了一个图片生成网络——Transform Net。将内容图片x输入网络得到生成图片y,然后生成图片y,风格图片ys,以及内容图片x均输入VGG网络,取特定层的输出分别计算风格损失和内容损失,然后反向传播更新transform net的权重,网络训练完成后,只需要将任意图片输入transform net就可以得到相应的训练时的风格图片。

Transform Net架构如下:

话不说多,上代码

任意风格任意内容的极速风格迁移

网络架构如下所示

在固定风格任意内容的基础上更进一步,核心思想就是加入了MetaNet——即原本TransformNet的参数(图中虚线框中部分网络的参数)是用MetaNet生成的。MetaNet的输入流是红线区域,也就是说风格图片决定了TransformNet的参数。当网络训练完成后,同时输入需要转换的内容图片和风格图片,风格图片会经过MetaNet生成TransformNet的权重,在使用相应的权重的TransformNet生成迁移风格的图片。

MetaNet架构如下

代码

为了避免参数过多,MetaNet将图像特征处理成1782维后分14路去生成对应transformNet的权重。

效果展示

实际处理的效果则如下所示了,很轻松生成了一张梵高风格的风景图片。

获得任意风格的图片效果?深度学习算法一键P图!相关推荐

  1. 3D各向异性图片进行深度学习的解决方法

    3D各向异性图片进行深度学习(图像分割/分类)的解决方法 什么是各向异性 常用的3D图像分割/分类网络 3D Unet V Net MedicalNet 各向异性问题的解决办法 基于Z-Net的解决方 ...

  2. 大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...

    来源 | 程序员管小亮 本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法. 由于文 ...

  3. 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

    深度学习算法及应用 一. 实验目的 二. 实验要求 三. 实验的硬件.软件平台 四. 实验原理 1.1. 深度学习概述 1.2. 深度学习的常见结构 1.3. 卷积神经网络(CNN) **卷积** * ...

  4. 万字长文解读深度学习算法在自动驾驶规控中的应用

    交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:ckc1087 备注信息:群名称 + 真实姓名 ...

  5. 深度学习算法相关岗-校招、社招、实习-面试知识要点及答案分享

    本文主要整理了深度学习相关算法面试中经常问到的一些核心概念,并给出了细致的解答,分享给大家. 内容整理自网络,原文链接:https://github.com/HarleysZhang/2019_alg ...

  6. 2021年暑期实习、秋招深度学习算法岗面试要点及答案分享

    本文主要整理了深度学习相关算法面试中经常问到的一些核心概念,并给出了细致的解答,分享给大家. 内容整理自网络,原文链接:https://github.com/HarleysZhang/2019_alg ...

  7. OCR文字识别:深度学习算法识别步骤

    之前没有接触过OCR文字识别,本文主要对使用深度学习算法完成文字识别的整体步骤进行一下梳理. 一般来说,OCR文字识别是检测+识别,首先将可能在文字的区域检测出来,然后在进行识别.本质是识别图片中的文 ...

  8. 干货 | 吴恩达亲自为这份深度学习专项课程精炼图笔记点了赞!(附下载)

    来源:机器之心.AI有道 本文约7500字,建议阅读10+分钟. 本文整理了深度学习基础.卷积网络和循环网络的学习笔记,附下载哦~ [ 导读 ]吴恩达在推特上展示了一份由 TessFerrandez ...

  9. 一文梳理深度学习算法演进

    来源:https://zhuanlan.zhihu.com/p/464515049 作者:Peter潘欣 编辑:蘑菇先生 学习记涉及语音.图像.nlp.强化学习.隐私保护.艺术创作.目标检测.医疗.压 ...

最新文章

  1. 用supervisord管理杂乱的服务
  2. pc构件生产线及设备_【图片】PC装配式建筑生产线,PC构件装备,PC生产线模台15805376300【pc装配式建筑吧】...
  3. 将switch case转为条件驱动
  4. CI框架源码阅读笔记7 配置管理组件 Config.php
  5. Complete Tripartite CodeForces - 1228D(三分图染色)
  6. zabbix监控pppoe线路_Zabbix 完整的监控流程
  7. 学计算机科学与技术会特效吗,女生学计算机科学与技术专业会不会很困难?看完你就明白了!...
  8. {转}Java 字符串分割三种方法
  9. java中==与equal()的区别
  10. oracle dbv验证,【案例】Oracle数据库verify验证块报错4 dbv报错代码:6101解决办法...
  11. Visio连接线设置箭头形状失效
  12. ReactNative实现仿微信或者通讯录快速索引功能
  13. html中hr标签有哪些属性,hr标签的属性有哪些?
  14. oracle 客户端的安装失败,关于安装oracle 11g client 出现安装先决条件检查全部失败...
  15. 红米手机html文件,红米手机中ES文件浏览器无法删除SD卡中文件的解决办法-es文件浏览器...
  16. python图像切割成多边形_python opencv在图像中裁剪任意形状多边形,裁剪镂空多边形, 裁剪多个多边形...
  17. GIS添加图层、查询详细
  18. Axure交互式设计
  19. SCSI 中定义的provision
  20. 团队协作的重要性: 如何提升团队成员之间的协作能力

热门文章

  1. 个人阿里云服务器初始化安装服务
  2. 在荷载步之间改变材料属性例子
  3. SitePoint Podcast#122:重要吗? 没有!
  4. 中控考勤机二次开发小记
  5. oracle数据库自动断开链接,ORACLE自动断开数据库连接解决办法
  6. LaTeX技巧11:LaTeX上标下标的设置
  7. asp.net806-人力资源管理系统#毕业设计
  8. single(单精度型)和double(双精度型)
  9. automatic 和 noautomatic区别
  10. 公众平台新增修改文章错别字功能 每篇文章允许被修改一次仅限正文内五个字...