基于神经网络的图像风格迁移解析与实现

本文探讨基于神经网络的图像风格迁移,通过内容损失和风格损失实现图像转换。利用TensorFlow,介绍了预训练模型的使用、自定义模型训练以及在TensorBoard中监控训练过程。
摘要由CSDN通过智能技术生成

概述

最近对图像风格迁移这种技术突然非常感兴趣,大概是之前读到了一篇关于对抗生成网络生成逼真人脸的论文文献,于是对这种技术很是好奇,大致了解了一下这个领域。我大致将其分为三个研究领域:

  1. 基于传统的机器学习的图像风格迁移。这个时代的图像风格迁移基于一个共同的思路:分析某一种风格的图像建立属于它的数学模型或者统计模型,再对待改变的图像改变其统计分布,使其更好的契合建立的模型。(这种听起来就好原始啊,感觉一定很难,暂时没找到基于这种方法进行的图像风格迁移,留待以后进行补充吧。)
  2. 基于卷积神经网络的图像风格迁移。这一概念最早于2015年提出在《A neural algorithm of artistic style》这篇文章中。它的具体实现思路是:输入原始内容图像、原始风格图像,利用网络分别学习属于他们的特征,在还原原始内容图像的时候,使用经过卷积层学习到的原始风格图像的特征,这样就可以在还原一张图像的时候使其具有另外一张图像的风格了。(这篇博客里主要记录基于这种方法的原理理解和实现流程。)
  3. 基于对抗生成网络的图像风格迁移。这个应该是时下比较流行的一种方法,这种方法不同于卷积神经网络的图像风格迁移的一点在于:它不在是输入一张图像学习其风格,而是可以输入一整类的图像,从这些图像中学习它们的共同特征,并基于这些特征生成尽可能与这些图像相似的图像。这个应该在下一篇文章里研究吧。

基于神经网络的图像风格迁移

基于这里其实可以将这个过程细化为3个小的步骤;
1. 利用内容损失还原图像内容
2. 利用风格损失还原图像风格
3. 结合内容损失和风格损失,完成图像风格迁移

利用内容损失还原图像内容

基于这篇文章《A neural algorithm of artistic style》中的实现方法可以在《21个项目玩转深度学习》这本书中找到。
这里实现利用的是常用的VGGNet,先选取一幅原始图像,经过VGGNet计算后得到各个卷积层的特征。接下来根据这些卷积层的特征,还原对应的这种特征的图像。
数学符号不会敲啊。。。(我直接记录书上的图片吧)
在这里插入图片描述在这里插入图片描述

利用内容损失还原图像内容

上面讲到的是基于图像内容损失来还原原始图像内容的,那么如何表示一张图像的风格呢?这里使用卷积层特征的Gram矩阵。
在这里插入图片描述
在这里插入图片描述
利用风格损失,就可以还原出图像的风格了。

结合内容损失和风格损失,完成图像风格迁移

在这里插入图片描述
在这里插入图片描述
书上的图挺模糊的,后面我再贴自己做的图吧。

快速图像风格迁移原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TensorFliow实现快速图像风格迁移

这部分数据共包括两个文件夹 chapter_7 和 chapter_7_data 两个数据集。
在这里插入图片描述
这里我使用的是 python3.6版本和TensorFlow1.13.1版本,并且要提前安装pyyaml库。

pip install pyyaml
使用预训练模型

这部分代码中提供了7个预训练的模型:wave.ckpt-done、cubist.ckpt-done、denoised_starry.skpt-done、mosaic.ckpt-done、scream.ckpt-done、feathe

  • 2
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值