基于卷积神经网络图像风格迁移的设计与实现
2022-07-01黄光辉李锦朋卓俊涛陈雨鑫黄贻望
黄光辉,李锦朋,卓俊涛,陈雨鑫,黄贻望
(铜仁学院大数据学院,铜仁 554300)
0 引言
图像风格迁移是指将原始风格图像的艺术风格迁移到另一张没有该风格的图片上,然后生成一张新的艺术风格图像,图像在进行风格迁移后没有太大的内容损失,而且具有新的艺术风格。在早期,风格迁移主要包括基于纹理的合成和非真实感渲染。通过纹理合成的方法有Julesz 提出的基于纹理建模的特征提取方法,特征相似性表示视觉差异,获取像素用于阶信息统计。通常情况下,参数化的纹理建模是通过滤波器提取图像的纹理特征,然后通过重新采样方法来合成新的纹理。Lum 提出了非真实感渲染方法通过处理笔划的混合颜色、拖尾和交叉,把原始图像渲染成一个多色立体风格图像;使用转换色彩、通过显著性的细节层次绘制、冲击模拟、湿画效果模拟等方法,生成图像风格还原性比较高的水彩风格图像。但是,基于笔划的算法只能设计指定的风格,不能模拟任何风格,具有很大的局限性。然而,基于卷积神经网络(CNN)的图像样式传输技术并不存在这些问题。利用vgg16网络模型提取原始图像和风格迁移图像的风格和内容,然后合成原始风格图像的风格纹理和待风格迁移图像的内容,从而生成新的风格化图像。早期的图像样式迁移是基于纹理合成和非真实感渲染的。当需要生成新的样式图像时,需要重写样式迁移代码和合成算法,生成的样式迁移图像会扭曲高分辨率图像。基于卷积神经网络(CNN)的图像风格传递可以通过训练将每个训练结果保存为一个模型。每次样式转换只需训练即可保存模型,无需再次编写代码,保存的模型还可以执行快速图像样式转换。CNN 网络模型的结构非常适合于图像处理,因此能够很好地适应高分辨率图像。
本文的主要内容是实现了Gatys 等提出的使用卷积神经网络进行图像风格迁移,能对任意图像的风格进行提取,并生成新的风格化图像,将模型保存后,能实现快速图像风格迁移。实现快速图像风格迁移后,需要更友好的使用体验以满足日常使用和推广,所以本文实现了一个基于卷积神经网络(CNN)图像风格迁移的Web应用。
1 理论基础
1.1 实现原理
图像的风格迁移始于2015年Gatys 的论文“Image Style Transfer Using Convolutional Neural Networks”,所做的工作非常容易描述,就是由一张内容图片和一张风格图片进行融合之后,得到经风格渲染之后的合成图片,如图1所示。
Gatys使用经典的vgg19网络。从图1可以看出,vgg19 可分为五个块。每个块由几个卷积层和后续池层组成。这五个块的池层是最大池,但卷积层的数量不同。第一个块有两层卷积(conv1_1 和conv1_2),第二个块也是两层卷积,接下来的三个块是4层卷积,最后是两个完全连接的层(FC1 和FC2)和一个用于分类的softmax层。但是,样式迁移任务与对象识别不同,因此不需要最后两个完整连接层和softmax 层。最左边的两个输入图像,一个作为内容输入,另一个作为样式输入,分别通过vgg19 的五个块。从浅层和深层可以看出,所获得的特征图的高度和宽度逐渐减小,但深度逐渐增加。为了让人们更直观地看到每个块提取的特征,Gatys 做了一个技巧,即特征重建,将提取的特征可视化。然而,我们可以看到,内容图片特征的提取在很大程度上保留了原始图片的信息,而对于风格图片,则基本看不到原始图片的外观,但可以粗略地认为风格是提取出来的。事实证明,这两张图片的特征提取处理是不同的,如图2所示。
图 1 图像风格迁移合成过程[2]
图2 实现步骤及原理
1.2 损失函数
在内容损失上,只取conv4_2 层的特征用来计算噪声图片特征和内容图片特征之间的欧式距离,公式为:
在风格损失上,计算方式与内容损失不同。上面已经知道,噪声图片→经过VGG19网络的5个块得到的特征记为F,F的gram 矩阵记为G,风格图片a经过VGG19 网络的5 个块得到的特征,再计算gram 矩阵后得到的内容记为A,之后计算G和A之间的欧式距离,其中gram 矩阵的公式为:
则风格损失的公式为:
计算风格损失时,5个块提取的特征参与了计算,而计算内容损失,实际上只用到第四个块提取出来的特征。这是因为每个块提取到的风格特征都是不一样的,都参与计算可以增加风格的多样性。而内容图片每个块提取到的特征其实相差不大,所以只需要取一个就好,而且使用哪一个也并没有明确规定,这与各人审美有关。总损失即为内容损失和风格损失的线性和,改变和的比重可以调整内容和风格的占比。
代码中还使用了一个trick,总损失的计算还会加上一个total variation loss 来降噪,让合成的图片视觉上更加平滑。
2 实验仿真与分析
2.1 数据集介绍
对图像的风格迁移离不开图像对风格和内容的提取,本文使用COCO 数据集对模型进行内容提取和风格纹理提取的训练。COCO数据集是一个非常大型的数据集,它有丰富的物体识别、图像分割和字幕数据集。这个数据集以scene understanding 为目标,其中图像有91 类目标,328000个视频影像和2500000个标签。目前为止它是语义分割的最大数据集,提供了80 个类别,超过33 万张图片,其中20 万张有标注,数据集中个体的数目超过150 万个。
2.2 图像风格迁移的实现
本文使用tensorflow+VGG16 和coco 数据集,实现了图像风格迁移系统,并成功对图像进行了风格迁移。在对风格迁移的图像中,均有不错的效果。
从表1的图可以看到,本文对图像进行了有效的风格迁移,没有失真、模糊、内容缺失等情况,本文一共训练了7 个模型,7 个模型均有效地对图像的风格进行了迁移。因为排版问题,本文对图像进行了缩放,所以可能会对参考有一些影响。
表1 图像风格迁移
3 图像风格迁移技术的Web应用
3.1 基于Flask的Web应用
本文将实现代码加入Flask 框架之中,通过Flask 实现了一个基于卷积神经网络(CNN)图像风格迁移的Web 系统,该代码实现在项目的webapp 之中。本文之所以使用Flask 框架,是因为它是一个非常轻量级且高度自定义的框架,该框架使用Python 语言编写,比同类型框架更为灵活、轻便、安全且容易上手。Flask 有非常高的可定制性,开发者可以轻松地将自己想要的框架或者功能集成到其中。
3.2 Web前端
本文的Web 应用使用前后端分离的架构,所有功能均通过API 接口方式访问后台实现,js中使用当下比较流行的前端技术,如JQuery、Vue等框架,
JQuery是一个js框架,JQuery提供一个万能的“$”符号,它可以很轻松地操作HTML 的DOM 结构,也可以很方便地发起一个AJAX 请求,可以在开发的时候加快开发进度。
图3 图像风格迁移技术的Web应用
4 结语
本文实现基于卷积神经网络(CNN)图像风格迁移,并在此基础上实现了一个基于卷积神经网络(CNN)图像风格迁移的Web 应用,该应用实现了在Web 上进行快速图像风格迁移的功能、以及模型的训练、美图欣赏等功能。本文虽然实现了基于卷积神经网络(CNN)图像风格迁移,但是在Web 应用上,因为使用了同一个模型,会造成卡顿现象,接下来应该考虑是否使用分布式来处理模型的训练以及图像的风格迁移。后续实验将使用生成对抗网络来进行图像风格迁移,对比实验是否能达到更好的效果。优化模型,调整模型参数,让训练更加优化,加快模型的收敛速度。