【计算摄影】浅析图像风格迁移背后的核心技术

大家好,这是专栏《计算摄影》的第八篇文章,这一个专栏来自于计算机科学与摄影艺术的交叉学科。

                                            作者&编辑 | 言有三

今天要介绍的一个问题是计算机视觉领域中的一个老问题了,即图像风格化领域中的图像风格迁移及其背后的核心技术。

1 图像风格迁移基础 

1.1 图像风格化

首先我们来看图像风格化,所谓风格化的重点就在于风格,它一定不是普通的图片,而是对普通图片进行处理后,得到的拥有特殊风格的作品,以Photoshop软件为例,很早就内置了非常多的滤镜风格,可以分为两大类。

第一类是基于基于边缘的风格化,可以突出轮廓,创建出特殊的效果,如下图1。

图1 PS的边缘风格

上图展示了Photoshop中几种常见的基于边缘的风格化效果,从左到右分别是原图,查找边缘,等高线,浮雕效果,虽然各自效果有所不同,但是其中最核心的技术仍然是寻找到主体的边缘。为了实现以上的风格,首先要检测到主体边缘,可以使用传统的边缘检测方法,如Sobel、Canny检测算子,也可以采用深度学习方法进行检测。

第二类风格就是基于颜色的风格化,它通过更改像素值或者像素的分布,可以创造出特殊的风格,如油画、波纹,下图2从左到右分别是原图,波纹,凸出,油画效果。

图2 PS的颜色风格

以上的风格化,基于特定的图像算法规则,模式固定,只能处理特定数量的风格。而随着深度学习技术的发展,基于深度学习的风格化方法被广泛研究并且取得了非常好的效果,开启了一个新的研究领域,风格迁移。

1.2 风格迁移

风格迁移的重点在于迁移,它是将一幅图中的风格,迁移到另一幅图中。2015年德国图宾根大学科学家在论文《A Neural Algorithm of Artistic Style》[1]中提出了使用深层卷积神经网络进行训练,创造出了具有高质量艺术风格的作品。

该网络将一幅图作为内容图,从另外一幅画中抽取艺术风格,两者一起合成新的艺术画,从而使得神经网络风格迁移领域( Neural Style Transfer)诞生。

图3 Neural Style Transfer

图3中A图就是内容图,B图左下角就是风格图,B图大图就是融合了A图的内容和风格图的风格,从而可以实现任意风格的迁移,不必局限于特定的算法,下图4展示了一些案例,每一种风格都有着独特的美感,主体和背景的处理都非常好。

图4 多种Neural Style Transfer风格

1.3 风格迁移算法原理

生物学家证明了人脑处理信息具有不同的抽象层次,人的眼睛看事物可以根据尺度调节抽象层次,当仔细在近处观察一幅图时,抽象层次越低,我们看到的是清晰的纹理,而在远处观察时则看到的是大致的轮廓。实际上卷积神经网络就是实现和证明了这样的分层机制的合理性。将各个神经元看做是一个图像滤波器,输出层就是由输入图像的不同滤波器的组合,网络由浅到深,内容越来越抽象。

研究者基于此特点提出图片可以由内容层(content)与风格层(style)两个图层描述,内容层描述图像的整体信息,风格层描述图像的细节信息。

所谓内容,指得是图像的语义信息,即图里包含的目标及其位置,它属于图像中较为底层的信息,可以使用灰度值,目标轮廓等进行描述。

而风格,则指代笔触,颜色等信息,是更加抽象和高层的信息。

图像风格可以用数学式子来描述,其中常用的是格拉姆矩阵(Gram Matrix),它的定义为n维欧氏空间中任意k个向量的内积所组成的矩阵,如下:

基于图像特征的Gram矩阵计算方法如下:

Glij向量化后的第l个网络层的特征图i和特征图j的内积,k即向量的长度。

格拉姆矩阵可以看做特征之间的偏心协方差矩阵,即没有减去均值的协方差矩阵。内积之后得到的矩阵的对角线元素包含了不同的特征,而其他元素则包含了不同特征之间的相关信息。因此格拉姆矩阵可以反应整个图像的风格,如果我们要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可。

假设我们有两张图,一张是欲模仿的风格图s,一张是内容图c,想要生成图x,风格迁移转换成数学问题,就是最小化下面这个函数。

因此当我们要实现一个滤镜算法时,只需要提取风格图的风格,提取要使用滤镜的图的内容,然后合并成最终的效果图。

目前风格迁移主要有两大类方法,基于图像优化的风格迁移算法和基于模型优化的风格迁移算法。

2 基于图像的风格迁移算法

本节我们来介绍基于图像优化的风格迁移算法,这是最早期的风格迁移算法。

基于图像优化的方法是在图像像素空间做梯度下降来最小化目标函数,以Gary等人提出的经典算法[1]为例,下图5是该算法的原理图。

图5 Neural Style Transfer算法原理

图中包含了2个输入通道,分别用于进行内容重建(Content construction)和风格重建(Style construction)。

(1) 内容重建通道。选择某一个抽象级别较高的特征层计算内容损失,它的主要目标是保留图像主体的内容和位置,损失计算如下,使用了特征的欧式距离,Fijl和Pijl分别是第l层生成图和内容图的特征值。

内容重建之所以不使用多尺度,是因为内容图本身只需要维持可识别的内容信息,多尺度不仅会增加计算量,还引入噪声,抽象层次较低的低尺度关注了像素的局部信息,可能导致最终渲染的结果不够平滑。

(2) 风格重建通道。与内容重建不同,CNN从底层到高层的每一层都会对风格有贡献,因为风格采用格拉姆矩阵进行表述,所以损失也是基于该矩阵计算,每一层加权相加,第l层的损失定义如下。

整个的风格损失函数就是各层相加,

风格重建使用多尺度不仅有利于模型的收敛,而且兼顾了局部的纹理结构细节和整体的色彩风格。

图6 Neural Style Transfer算法优化

当然最原始的迁移算法也存在着一些固有的缺陷,包括无法保持目标的颜色,纹理比较粗糙,无法识别语义内容导致目标风格不完整,或者出现错乱,比如将天空的风格迁移到大地等,后续的研究者们对其提出了许多的改进,其中最具有代表性的是Adobe公司[2]的真实场景风格转换,它们只迁移图像的颜色而不改变纹理,作者称之为照片风格迁移(photo style transfer)。

图7 photo style transfer

更多的基于图像优化的风格迁移算法,读者可以自行拓学习。

3 基于模型优化的风格迁移算法

基于图像优化的方法由于每个重建结果都需要在像素空间进行迭代优化,这种方式无法实时,因此研究人员开始研究更加高效的方法,即基于模型优化的方法,它的特点是首先使用数据集对某一种风格的图进行训练得到一个风格化模型,然后在使用的时候只需要将输入图经过一次前向传播就可以得到结果图,根据模型与风格数量可以分为许多方向,下面分别介绍。

3.1  单模型单风格及其改进

Justin Johnson等人提出的方法[3]是一个典型的单模型单风格框架,通过图像转换层(Image Transform Net)来完成整个的渲染过程,在损失网络(VGG16 Loss Network)的约束下,分别学习内容和风格。该模型用于训练的风格图数据集必须属于同一种风格,而内容图则可以任意选择。

与基于图像优化的方法相比,基于模型优化的方法不需要反复地迭代,速度快了两三个数量级,下图8所示是它的模型结构。

图8 基于模型的风格化

这个模型可以分为两部分,Image Transform Net是图像转换网络,VGG16是损失网络。图像转换网络输入x,输出y,它和风格图ys,内容图yc经过同样的网络,分别计算风格损失和内容损失,注意这里的yc实际上就是输入图x。

内容损失采用的是感知损失,风格损失与基于图像优化的方法一样采用Gram矩阵来定义,都已经介绍过许多次了,就不再赘述。

3.2 单模型多风格

单模型单风格对于每一种风格都必须重新训练模型,这大大限制了它们的实用性,因此研究人员很快便开始研究单模型多风格框架。Style bank[4]是其中的一个典型代表,它使用了一个滤波器组来代表多个风格,原理如下图9:

图9 Style bank框架

从图可以看出,输入图I首先输入一个编码器得到特征图,然后和StyleBank相互作用。StyleBank包括n个并行的滤波器组,分别对应n个不同的风格。每一个滤波器组中的每一个通道可以被看作是某一种风格元素,比如纹理类型,笔触类型。

模型总共包含两个分支,第一个是从编码器到解码器,它要求重建的图像O和输入图像I在内容上一致,因此采用的损失函数就是逐个像素的均方误差损失。

另一个分支是从编码器到风格化滤波器到解码器,它要求对于不同的风格生成不同的风格输出。对于这一个分支,包括一个内容损失,一个风格损失,以及一个平滑损失, 具体的内容损失和风格损失与Gatys论文中一样。

在具体训练的时候,针对K个不同的风格,首先固定编解码器分支,对风格化分支训练K轮。然后固定风格化分支,对编码器分支训练1轮。

StyleBank方法的特点是:

(1) 多个风格可以共享一个自编码器(Auto-encoder)。

(2) 可以在不更改自编码器(Auto-encoder)的情况下对新的风格进行增量学习。

另外还有的方法通过学习实例归一化(Instance Normalization)后的仿射变换系数的方法[5]来控制不同风格的图像,实例归一化表达式如下:

取对应某风格的缩放系数和偏移系数就实现了对应风格的归一化。

图10 Instance Normalization

3.3 单模型任意风格

单模型多风格框架在增加新的风格时总需要重新训练模型,单模型多风格算法可以通过学习实例归一化的仿射变换系数来控制多种风格的转换,研究表明[6]这种仿射参数其实可以由风格图本身的统计信息来替代,用风格图图像的方差和均值分别替代,就可以生成任意风格的图像,该层被称为AdaIN层,其定义如下式。

其中x是内容图,y是风格图,可以看出使用了内容图的均值和方差进行归一化,使用风格图的均值和方差作为偏移量和缩放系数,整个模型原理图如下图。

图11 基于AdaIN的风格迁移

损失包括内容损失和风格损失两部分。内容损失的计算是比较AdaIN层的输出与最终的输出图之间的L2损失,风格损失则使用了VGG不同特征层的均值和方差的L2损失而不是使用基于Gram矩阵的损失,形式更加简单。

3.4 小结

目前AdaIN层已经在图像风格化,图像生成等领域中被广泛应用,属于图像风格迁移的标配技术,单模型任意风格在实际应用中也更加有效。

当前风格迁移模型还存在着一些重难点,包括:

(1) 高效率地学习到任意的风格。

(2) 如何对不同区域进行精确的风格控制。

(3) 如何控制风格化的笔触大小。

(4) 如何根据需要保留颜色或者纹理。

(5) 如何保留图像中重要的信息,如深度。

(6) 基于GAN的风格迁移模型。

本文参考资料:

[1] Gatys L A, Ecker A S, Bethge M. Image style transfer using convolutional neural networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2414-2423.

[2] Luan F, Paris S, Shechtman E, et al. Deep photo style transfer[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 4990-4998.

[3] Johnson J, Alahi A, Fei-Fei L. Perceptual losses for real-time style transfer and super-resolution[C]//European conference on computer vision. Springer, Cham, 2016: 694-711.

[4] Chen D, Yuan L, Liao J, et al. Stylebank: An explicit representation for neural image style transfer[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1897-1906.

[5] Dumoulin V, Shlens J, Kudlur M. A learned representation for artistic style[J]. arXiv preprint arXiv:1610.07629, 2016.

[6] Huang X, Belongie S. Arbitrary style transfer in real-time with adaptive instance normalization[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 1501-1510.

更多内容细节和实践,请参考我最近出版的新书,《深度学习之摄影图像处理》,介绍如下:

言有三新书来袭,业界首本深度学习计算摄影书籍,科技与艺术的结合

总结

本文介绍了基于神经网络的风格迁移,这是一个没有标准的真值标签的任务,但深度学习模型依然展现出了非常强大的学习能力,尽管评估它相对于图像分类,目标检测等任务更难,值得对视觉技术感兴趣的朋友了解学习。

有三AI秋季划-图像质量组

图像质量小组需要掌握与图像质量相关的内容,学习的东西包括8大方向:图像质量评价,图像构图分析,图像降噪,图像对比度增强,图像去模糊与超分辨,图像风格化,图像深度估计,图像修复。了解详细请阅读以下文章:

【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?

转载文章请后台联系

侵权必究

往期精选

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值