一种基于VGG神经网络实现图像风格迁移的方法
2022-09-20谢志明刘少锴蔡少霖
谢志明,刘少锴,蔡少霖
(汕尾职业技术学院工程学院,汕尾 516600)
0 引言
自1987年Alexander Waibel等人提出第一个卷积神经网络(CNN)——时延网络(TDNN),和1988年Zhang提出平移不变人工神经网络(SIANN),CNN仍然不被人们所熟知和关注,直到LeCun于1998年提出基于CNN构建的LeNet-5模型并成功应用于手写数字识别,该模型的成功使得CNN的应用得到空前的关注及大批学者参与研究。2006年深度学习理论提出后,CNN得到更进一步的研究,两者相辅相成,CNN的深入研究推动着深度学习不断快速向前发展。2015年Gatys等提出运用CNN来实现图像风格迁移这一目标,通过分类目标内容图像A的内容特征和参考风格图像B的风格特征实现图像风格迁移,获得了非常可观的艺术效果,此外关于这方面的诸多研究成果还成功转化成商业应用。为此,本文实验将依据VGG算法模型并结合TensorFlow2框架,利用神经网络迁移开展图像风格迁移应用研究。
1 VGG网络简介
VGGNet由牛津大学的视觉几何组(visual geometry group,VGG)提出,并在2014年举办的ILSVRC赛项中获得了定位任务第1名和分类任务第2名的成绩。VGGNet网络结构是通过改良AlexNet的层数得到的,AlexNet是2012年ImageNet竞赛目标识别任务赛项的冠军,该网络在LeNet思想启发下将CNN应用到更深更宽的网络中,效果提升明显。此后,VGGNet在AlexNet基础上对CNN网络进一步改良的过程中发现网络深度与性能的相关性,通过持续性地添加小尺寸卷积核来代替大卷积核,当网络堆叠到一定层数后,网络效果得到进一步改善。目前,主流的VGGNet网络结构主要有六种配置模式,其效果展示如表1所列。
从表1可以发现VGG六种配置中,VGG-16和VGG-19效果最好,由于VGG-16网络结构相较简单,比VGG-19少了3个卷积层,参数量也相对较少,因此从理论上来说更加适合神经网络迁移学习。后面我们将通过实验对其验证,找到最佳VGG模型并进行优化。
表1 VGGNet网络配置效果及参数量
2 VGG-19网络结构模型
VGG模型是由Simonyan等于2014年提出的,模型非常简单,只有卷积层、最大池化层和全连接层。VGG模型首次提出了小卷积核的优势,在卷积层使用小尺寸卷积核(3×3)可添加更多的卷积层,使得网络层次变得更深。VGG-19相比AlexNet的一个重要改进是采用连续的3×3的卷积核代替AlexNet中的较大卷积核(11×11,7×7,5×5),研究发现小卷积核的叠加可以使其感受野达到大卷积核的效果。比如2个3×3的卷积核叠加,它们的感受野等同于1个5×5的卷积核,叠加3个卷积核则感受野相当于1个7×7的效果,由于感受野相同,又使用ReLU激活函数,网络增加了非线性表达能力,从而可以提供更复杂的模式学习。
VGG-19共有16个卷积层,3个全连接层,比VGG-16多了3个卷积层,其全部采用3×3卷积核,步长和Padding统一为1,最大池化层为2×2,N个卷积层和后面紧接的最大池化层为一个block。VGG-19和VGG-16一样,都共有5个block,每个block的通道数一致,最大池化层减少特征图的尺寸。随着卷积层一层层的运算,卷积核输出的内容变得越来越抽象,特征图尺寸和留存信息变小变少。Block5完成后将特征图平铺成一维数据作为全连接层的输入。最后3层为全连接层,前2层每层具有4096个神经元,使用ReLU非线性激活函数,第3层有1000个神经元(1000个类别)使用softmax函数。VGG-19网络结构如图1所示。
图1 VGG-19神经网络模型结构
3 风格损失
Gatys等认为风格参考图片与生成图片之间会在不同的层激活过程中保留相似的内部相互关系。风格损失使用了CNN多个层,并从所有空间尺度上而非单一尺度上提取风格参考图像外观特征,依据特征之间相互关系映射在特定空间尺度下模式的统计规律,使用层激活的格拉姆矩阵(Gram matrix),即某一层特征图的内积。风格损失主要有以下两个特点:
(1)在目标内容图像和生成图像之间保持相似的较高层激活能够保留内容。卷积神经网络能够“看到”目标图像和生成图像包含相同的内容;
(2)通过在较低和较高的激活层中保持类似的内部相互关系能够保留风格。特征相互关系捕捉到的是纹理,生成图像和风格参考图像在不同的空间尺度上具有相同的纹理。
4 实验与分析
4.1 实验环境
本实验的实验环境为Windows7+Python3.8+TensorFlow2.3.0,CPU为3.40GHz的Inter i7-6700,内存为DDR4 16 G,显卡为NVIDIA GT-720 2 G,CUDA为10.2,使用的神经网络模型为VGG-16和VGG-19。
4.2 实验实现过程
(1)导入相关库,如TensorFlow,IPython,numpy,matplotlib和time模块;
(2)自定义编写图片预处理函数,将加载的图片解码成像素值数组并做归一化处理;
(3)从VGG中挑出风格层和内容层,风格层的输出旨在代表风格图片的特征,内容层的输出旨在表示内容图片的特征;
(4)对VGG模型输出重新定义,因为原始的VGG输出为分类结果,而风格迁移时需要输出的是两张图片的特征;
(6)建立风格迁移模型,得到风格图片的风格特征和内容图片的内容特征;
(7)定义优化函数和损失函数,模型训练不断迭代,得到风格迁移图片。
4.3 内容层和风格层选取
本组实验选取一张海龟为内容图片,随机选取康丁斯基的一幅抽象画为风格图片,同时选择多组内容层参数和风格层参数进行风格迁移实验,找到最佳的参数组合。如图2所示。
图2 不同内容层和风格层的图像风格迁移结果
通过实验我们找到最佳内容层和风格层组合为content_layers=[‘block5_conv2’],style_layers=[‘block1_conv1’,‘block2_conv1’,‘block3_conv1’,‘block4_conv1’,‘block5_conv1’],同时从图2中发现选取的内容层越靠前,内容图片保存的数据就越丰富,而要得到较好风格图片数据尽量选取各blocks的靠前卷积层,这样得到的风格数据会更多。
4.4 不同模型对风格迁移结果的分析
本组实验根据找到最佳内容层和风格层参数组合,选择VGG-16和VGG-19模型来对比图像风格迁移效果,内容图片和风格图片选取不变,根据训练迭代次数的不同,观察不同迭代次数迁移结果图像的色彩特征及纹理特征。如图3所示。
图3 不同模型不同迭代次数的图像风格迁移结果
从图3可以看出,VGG-16和VGG-19风格迁移效果都还是比较成功的,相比之下,VGG-19的图像色彩表现得更加丰富自然,纹理也更加清晰明亮,这和参数量多了6 M有一定的关系,实验过程还发现相同条件下训练迭代1000次后,VGG-19耗时会更长,比VGG-16多了500秒左右。
4.5 不同风格图像对风格迁移结果的分析
本组实验仍然选择同一张海龟为内容图片,并选取4张出自不同画家的风格图片,以风格迁移效果最优的VGG-19为网络模型,在相同的训练迭代次数(1000次)的情况下,得到的图像风格迁移结果分别如图4所示。
图4 不同风格图片迭代1000次的图像风格迁移结果
从图4可以看出,当采用同一内容图像,不同的风格图像,在相同的模型参数和训练次数的情况下,风格迁移结果也各不相同,展现的色彩特征、纹理特征等也存在较大差异;此外,我们还发现使用总变分损失可以有效减少因图片本身小而花纹经频繁卷积加强后被强化的噪声,因此有很好的降噪作用,这也正体现了VGG网络结构具有很好的鲁棒性和普适性。
5 结语
本文以TensorFlow2为深度学习框架、VGG为网络模型,通过实验分析图像风格迁移的有效性。VGGNet通过使用小卷积核代替大卷积核,有效地加深了网络深度,并使用ReLU作为激活函数,提升了复杂模式的学习能力。通过实验对比VGG-16和VGG-19两种网络结构,找到最佳的风格迁移效果模型为VGG-19;最后使用多张不同风格图片放到VGG-19模型中来验证图像风格迁移效果,发现迁移后的图像既保证了内容图像的完整性,同时具有风格图像的色彩、纹理等特性,符合图像风格迁移特点,效果较好。