王 婷 李 航 胡 智
(沈阳师范大学软件学院 辽宁 沈阳 110034)
图像风格迁移是指利用机器学习算法学习艺术画作的风格,并将这种风格应用到另一幅图片上的技术[1]。简单来讲,风格迁移和纹理生成是紧密相关的[2],这种技术的趣味性就是将一幅照片在内容保持不变的情况下被渲染成有艺术风格的新画作。
图像风格迁移主要包括基于图像迭代和基于模型迭代两个方面[2]。传统的图像风格迁移都是基于图像局部特征的统计模型手动建模,旧式的手工数学建模方法耗时耗力、效果不佳。2015年,Gatys等[5]开创性地提出基于神经网络的图像迁移算法后,图像的风格迁移已不再局限于只基于笔触、物理模型的绘制和纹理合成的非参数图像迁移。文中的基于图像迭代和基于模型迭代两大创新点引起了热潮,这一技术越来越多地应用于众多应用领域。文献[6]提出一种利用内容图和训练好的前向网络结合的方法,通过求解全局最优解转换成用前向网络接近最优解来合成具有新纹理的网络。文献[7]利用GAN(Generative Adversarial Networks)网络对抗训练模型,增加了图片转换的多样性。文献[8]提出采用感知损失函数代替逐像素差距的损失函数,实现实时风格转换和图像超分倍率重建。文献[9]提出了N个风格共用一个模型的方式,缓解了模型存储所消耗的空间问题,实现实时的风格插补并可应用在视频上。文献[10]设计了一种转换神经网路U-StyleNet,并采用迁移学习的方法解决了网络参数初始化导致输出图像有黑块或亮块的问题,同时加快了网络的训练速度。2016年上线的手机APP Prisma综合了图像风格迁移技术和人工智能技术,获取世界的艺术大师和主要流派的艺术风格,它是基于深度学习的图像风格化应用非常成功的实例。Artisto APP可直接将视频处理为艺术性的风格化,从抽象主义到现代派大师毕加索的立体主义。
本文主要基于图像迭代的图像迁移方法,采用预训练卷积神经网络[11](Visual Geometry Group-Network,VGG-Net)模型和快速灵活的Keras深度学习框架作为核心组件来实现图像风格迁移。预训练的VGG-19卷积模型[12]具有较快的收敛速度和更好的泛化特性,整个VGG19网络的卷积核对一幅图片的轮廓线条的刺激以及颜色刺激更为敏感。实验证明基于VGGNet的图像风格迁移算法将损失度降低至最低时,VGGNet模型的性能最好,合成图片的匹配度最佳,并降低了实现复杂度。
在机器学习中,卷积神经网络(Convolutional Neural Network,CNN)是一种深度前馈人工神经网络。它的人工神经元可以响应一部分覆盖范围内的周围单元,包括卷积层、池化层和全连接层等。CNN的基本结构包括两层:特征提取层和特征映射层。卷积神经网络以其局部权值共享的特殊结构在图像处理、图像识别、图像分割等有着独特的优越性。权值共享降低了网络的复杂性,多维输入向量的图像可直接输入网络,避免了复杂的数据重建。
卷积神经网络中被证明图像识别能力出色的VGGNet在2014年ILSVRC比赛中取得定位任务第一名和分类任务第二名的优异成绩,具有较好的泛化能力。因此,实现图像风格迁移的过程中,使用含19个参数的标准VGG网络,包含16个卷积层和5个池化层。VGG19和普通的VGGNet稍有区别,VGGNet通常是利用全连接层输出物体类别,而VGG19在图像风格迁移中提取特征时,通过输入特征后直接输出对应这种特征的图片。选择深层’block5_conv2’卷积层提取内容特征;选择’block1_conv1’至’block5_conv1’的五个从低维到高维过渡的卷积层提取样式特征。图1为VGG19网络在图像风格迁移中的工作流程,图2为VGG19网络结构图。
图1 VGG19网络在图像风格迁移的工作流程
图2 VGG19网络结构图
VGG19的拓展性较强,迁移到其他图片数据集上的泛化性较好;结构简单,整个图2网络结构使用相同尺寸大小为3×3的卷积核和池化尺寸大小2×2。三个3×3的卷积核相当于一个7×7卷积核的感受域,数量更少、模型更具有判别性、便于加快训练;池化层选择平均池化代替最大池化,利用RELU激活函数提高优化率。因此,在实现图像风格迁移中,选择VGG19可有效地缩短训练时间、提高图像识别的精度。
深度学习的模型很难看到其中的内部结构,但是对于卷积神经网络来说,它能以可视化的形式看到内部特征表示。常见的三种可视化方法为卷积核输出的可视化、卷积核的可视化和热度图的可视化。使用可视化方法可以使图像风格迁移过程中卷积核感受图像的方式,以及通过热度图定位图像中物体的位置更加容易。
VGG19中卷积的过程就是特征提取的过程,每一个卷积核代表着一种特征。在可视化卷积核的过程中,低层次的卷积核对目标图像的颜色、边缘信息感兴趣,提取的特征是简单的检测点和线等。随着层次的不断加深,内容越来越抽象和复杂,卷积层感知图像中的物体位置更准确,提取的特征通常是复杂的特定物体。图3为VGG19网络第一层和第四层的可视化对比。
图3 VGG19网络第一层和第四层的可视化对比
图像风格迁移算法通过内容、样式和风格三方面给每张图片编写损失函数。为了开始改变生成的图像以最大限度地减少损失函数,本文算法使用不同的权重进行图像迁移的实现。算法设计过程中,使用多个内容图层,伴随VGG19感受野的增大,精确内容相似度;使用多个风格图层,在损失函数中添加更多不同风格的图片;加入全变分去噪,缓解合成图像中含有不必要的颗粒情况。
图片风格化的算法主要包含最重要的三部分:内容重构、风格表示和样式转换。风格本质是各种空间尺度中图像的纹理、颜色、视觉图案等。本文算法通过定义内容损失函数保证从上层看生成的图片与原始图片类似;通过风格损失函数尝试获取所有空间比例的样式图片的外观;利用L-BFGS算法优化最终的总变化损失值。Gram矩阵计算在特定空间尺度模式下不同维度之间特征激活值的相关性,保证合成图和样式图具有相同的纹理。
(1)
(2) 风格表示。利用Gram矩阵计算样式图片中的纹理、颜色和视觉图案信息,公式如下:
(2)
(3)
样式损失函数为:
(4)
(3) 风格转换。利用L-BFGS梯度下降算法优化生成的总损失度,调整α和β权重系数可调整content或style在生成图中的比重。总损失函数为:
(5)
本文的核心思想是利用卷积神经网络将目标图像的内容特征表示和风格图像的特征表示进行分离,最后进行高度化合成。在实现过程中,分别将内容图像和艺术风格图像输入到预训练好的VGG19模型,接收图像的VGG19模型分别提取这两幅图片中的全局特征和抽象特征,计算这两种图片和生成图片的图层激活函数值。神经网络中不同层级的激活值使得图像内容在各种空间尺度上进行分解,使用三幅图上计算的图层激活值来定义内容损失值、样式损失值和总损失值loss。从随机噪声图像开始,利用基于Scipy库的L-BFGS优化算法设置随梯度下降过程并最小化的总损失函数值,设置迭代次数后生成具有原内容和新风格的合成图像。具体的技术实现流程如图4所示。
图4 图像风格迁移技术的实现流程
实验使用Keras框架搭建网络,本实验中Keras框架由纯Python编写的基于Tensorflow为后端。它是一个高层神经网络的API,可以迅速地将想法转换为结果,允许简单而快速的原型设计,更适配卷积神经网络,模型库中含有很多经典的模型使得深度学习的建模与算法设计较为方便。实验硬件平台为Intel(R) Core(TM) i7-4790 CPU主频3.60 GHz,16 GB内存,AMD Radeon R5 340 CPU。
为验证不同内容图片与不同艺术风格的迁移效果,本文进行了大量的实验。为突出研究的趣味性和艺术性,本文仅仅给出了选择素描人像、上海外滩作为目标内容图片,选择具有代表性的梵高作品《星月夜》和色彩鲜明的油画两种风格作为艺术风格图作为案例。
实验1选择素描人像作为目标内容图片,色彩鲜明的油画作为艺术风格图。
实验1使用了两幅素描人像图像和油画风格图像。图5为原始人像图、油画和迭代优化20次生成的合成效果图。设置迭代训练次数20次,style weight=1,content weight=0.025。通过实验效果得知,图像风格迁移算法在本组实验图片中可有效的实现,但存在训练速度较慢、图片有失真现象,以及不能自然地将样式转移到原始图片中并结合等问题。
(a) 内容图(b) 样式图(c) 合成图图5 迭代20次后的人像合成图
实验2选择上海外滩作为目标内容图片,梵高的《星月夜》作为艺术风格图。
在实验2中分别选择上海外滩和梵高画作《星月夜》分别作为内容图和风格图。实验设置环境与实验1相同,但迭代优化次数增加至150次。图6中,(a)为目标图上海外滩、(b)为艺术风格图星月夜、(c)为合成效果图。图7中,生成第45张图的损失值1.017 29e+08最低,第46次到第150次迭代中,损失值从9.981 48e+07降低至4.217 42e+07。这说明迭代45次时,两幅图像合成的匹配度最高,但样式不够清晰,随着迭代次数的增加,样式转移度越来越高,但纹理清晰度下降。
(a) (b) (c)图6 上海外滩和梵高-星月夜的内容图、样式图和合成图
(a) 原始图(b) 迭代14次(c) 迭代50次(d) 迭代150次 Loss value:1.01729e+08 Loss value:9.20596e+07 Loss value:4.21742e+07图7 目标内容图、迭代次数为44、50、150的合成图
为测试文中算法的有效性,改进实验1的不足,在本组实验中增加了VGGNet网络中的VGG16模型。具体模型区别如下:VGG16包含13个卷积层,VGG19包含16个卷积层。两种模型均迭代150次,对比实验结果如表1所示。
表1 不同网络模型在不同迭代次数下的总损失度
可以看出,VGG16和VGG19模型均在迭代45次时损失度最低,合成匹配度最高。但随着迭代次数增加至150次,VGG19模型的合成损失度明显低于VGG16模型。图8为VGG16和VGG19两种模型的合成图。通过150次迭代优化后,明显看出VGG19图像迁移的合成图效果更好,而VGG16合成图出现明显的失真效果。本文提出的算法对于层数较高的卷积神经网络VGG19模型具有一定的优势,虽然利用两种不同的VGGNet模型,但匹配程度最佳均为第45次迭代,VGG19在合成图片的过程中准确率更高,合成效果更优。
(a) VGG16合成图(b) VGG19合成图图8 对比VGG16和VGG19两种模型合成图
依据风格转换总损失函数公式,调整content和style的所占比重,可看出不同效果的实验结果图。合理选择比重所占比,才可实现匹配度较佳的风格迁移技术。表2为VGG19训练图片迭代次数45次的不同content和style占比损失度表。图9为三种不同权重占比合成效果图。增加内容权重占比可提高合成图中的内容原始度,设置style weight=0.025、content weight=1,样式图星月夜迁移效果明显下降。设置style weight=1、content weight=0.5时,内容图上海外滩较清晰。设置style weight=1、content weight=0.025时实现图像迁移算法后的合成匹配度最佳、损失度最低。
表2 VGG19迭代45次下调整权重占比损失度
(a) style weight=0.025 content weight=1 (b) style weight=1 content weight=0.5(c) style weight=1 content weight=0.025图9 三种不同权重占比合成效果图
本文在Gatys等提出的Gram矩阵算法基础上,采用灵活性较好的VGG19网络作为核心模型,提出了一种基于VGGNet的图像风格迁移算法设计与实现,有效地实现了不同风格图像间的风格迁移。实验表明,本文算法适用于风格迁移,能够生成逼真的艺术性合成图像,在深度学习Keras框架的基础上,实现过程较为简单,选择合理的迭代训练次数可使得损失度降到最低、合成图片的匹配度最佳。生成对抗网络和变分自编码器(Variational Auto-encoder,VAE)网络的诞生可能对解决这些问题有很大帮助,需进一步研究和讨论。