TensorFlow入门深度学习–13.图像风格转换

文章列表
1.TensorFlow入门深度学习–01.基础知识. .
2.TensorFlow入门深度学习–02.基础知识. .
3.TensorFlow入门深度学习–03.softmax-regression实现MNIST数据分类. .
4.TensorFlow入门深度学习–04.自编码器(对添加高斯白噪声后的MNIST图像去噪).
5.TensorFlow入门深度学习–05.多层感知器实现MNIST数据分类.
6.TensorFlow入门深度学习–06.可视化工具TensorBoard.
7.TensorFlow入门深度学习–07.卷积神经网络概述.
8.TensorFlow入门深度学习–08.AlexNet(对MNIST数据分类).
9.TensorFlow入门深度学习–09.tf.contrib.slim用法详解.
10.TensorFlow入门深度学习–10.VGGNets16(slim实现).
11.TensorFlow入门深度学习–11.GoogLeNet(Inception V3 slim实现).
12.TensorFlow入门深度学习–12.ResNet.
13.TensorFlow入门深度学习–13.图像风格转换.

13.1风格转换

图像风格转换是一个比较好的练手实例,首先将普通照片转换成具有艺术家风格的图像是一件很有意思的事情,然后图像风格转换会用到VGGNet、ResNet,对我这种新手通过实例来进行提高很有帮助,感谢TensorFlow平台及大神的开源代码,我们可以很快很容易的上手图像风格转换,自己做出好看的图片,好了不说废话了,开始学习吧。德国图宾根大学的Leon A.Gatys等人在2015年的NIPS会议上发表了名为A Neural Algorithm of Artistic Style的论文,提出了利用卷积神经网络将普通照片内容与艺术画绘画风格进行融合的图像风格转换方法,实现效果如下:
这里写图片描述
这里写图片描述

再次感受到了深度学习的强大魅力,那么Gatys是如何利用卷积神经网络实现风格迁移的呢,在转换图像风格时,可定是希望图像的内容与原来图像一致,但新图像的风格又与指定风格一致,这样的话,损失函数由两部分组成:

  1. 内容损失:输出图像像素的平方误差。内容的分布应该是不变的,并且是可以“精确”度量的,所以直接以像素点的平方误差作为损失函数的一部分。那么如何提取内容的图像特征呢,对于一个已经训练好的神经网络,每个卷积层都是对图像中某一方面特征的提取随着层次的加深,特征维数越小,越能代表图像本身,因此,深层网络提取的特征的集合可作为图像特征的表示,Gatys利用VGGNet19的5层卷积网络来提取图像特征,并原始图像和合成图像在relu4_2层输出的特征图的平方差作为内容损失:
    这里写图片描述

  2. 风格损失:输出图像Gram matrix的平方误差。风格是比较抽象的,并且风格的分布(比如梵高的画中特有“旋涡”纹理)位置应该是随意的,所以应该以图像的相关性来衡量风格的相似性,特征图可以整理成向量,而Gram matrix是用来描述向量相关性的,所以应该以特征图像的Gram matrix的平方误差来衡量风格的一致性。Gram Matrix实际上可看做是feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),其与相关系数的差别只有一个平移和缩放。Gatys利用风格图和生成图在relu1_1,relu2_1,relu3_1,relu4_1,relu5_1这5层输出的特征图的格拉姆矩阵的平方差作为风格损失函数:
    这里写图片描述

下图给出了VGGNet19的5层卷积网络在特征提取中的作用示意。
这里写图片描述

13.2 快速风格转换

在Gatys所提的图像风格转移网络模型中,目标图像是通过梯度下降逐步更新像素点的方法来实现的,因此对每个输入图像都要进行漫长的训练才能得到目标图像。后来,俄罗斯科学家Dmitry Ulyanov和李飞飞实验室的Justin Johnson都提出了一种快速风格转换方法,在Gatys所提方法的基础上,添加一个卷积神经网络来存储风格的纹理特征,然后再用Gatys的方法来计算损失,梯度下降法不会直接改变目标图像的像素,这样在模型训练好以后,可通过存储有纹理特征卷积神经网络的前向计算快速生成目标图像。
这里写图片描述

快速风格转换每次只针对一张风格图和多个内容图进行训练,一张风格图表示每个模型只能训练出特定图像风格的滤镜,而多个内容图是为了使风格能够对内容充分泛化,是风格能够适应任意图片内容,风格图像和训练图像都可任意选取,程序中对会将图像统一处理成256*256的3通道数据。Ulyanov在后续的研究中发现,使用上万张图片的训练集和常时间的训练反而会造成效果下降【指人眼视觉感受,而不是损失函数的收敛】,Ulyanov还指出,用16张或更少的图片以及恰当的提前中止训练出的风格效果特别明显。

TensorFlow实现 :https://pan.baidu.com/s/14A91inmZmSC55dgDv8ZZ3Q【待上传】

猜你喜欢

转载自blog.csdn.net/drilistbox/article/details/79813682