CAP-VSTNet: Content Affinity Preserved Versatile Style Transfer

概要

CAP-VSTNet由一个新的可逆残差网络和一个无偏线性变换模块组成,用于多样化的风格迁移。这个可逆残差网络不仅能保留内容亲和度(包括像素亲和度和特征亲和度),而且不会像传统的可逆网络那样引入冗余信息,从而实现更好的风格化。 借助 Matting Laplacian 训练损失,可以解决由线性变换导致的像素亲和力损失问题,所提出的框架适用于多种风格迁移。大量实验表明,与最先进的方法相比,CAP-VSTNet 可以产生更好的定性和定量结果。    

整体架构流程

给定内容图像和风格图像,该框架首先通过网络的前向推理将输入内容/风格图像映射到潜在空间,然后injective padding 模块通过沿通道维度的零填充来增加输入维度。前向推理是通过级联的可逆残差块(Reversible Residual Network)和空间压缩模块(Squeeze)执行的。之后,使用通道细化(Channel Refinement)去除内容/风格图像特征中的通道冗余信息,以实现更有效的风格转换。然后使用线性变换模块 (cWCT) 来传输内容表示以匹配样式表示的统计信息。最后,通过后向推理将风格化表示反向映射风格化图像。

图1 模型框架结构

技术名词解释

  • injective padding     
  • Reversible Residual Network(可逆残差网络)
  • Squeeze
  • Channel Refinement(通道细化)
  • Transformation Module(cWCT线性变换模块)

1.injective padding

使用单射填充模块增加潜在维度,以确保输入内容/风格图像特征通道可以被目标通道整除。

图2 injective padding

Injective padding是一种用于图像处理中的填充方法。在卷积神经网络(Convolutional Neural Network,CNN)中,卷积操作通常会导致输入特征图的尺寸减小,而为了保持尺寸一致性,需要对输入进行填充。Injective padding是一种特殊的填充方法,它可以在保持特征图尺寸的同时,还能保持输入和输出之间的一对一映射关系。

传统的填充方法(如Zero padding)会在输入的边缘周围添加固定数量的零值像素,从而增加特征图的尺寸。这种填充方式会导致输入和输出之间的像素位置不一一对应,从而可能丢失一些细节信息。

Injective padding的思想是通过在特征图的边缘插入适当的像素,使得输入和输出之间的像素位置保持一对一映射。这种插入像素的方式可以根据需要进行调整,以便使得输入和输出的特征图大小相同,并且每个像素位置都有对应。

使用Injective padding的好处是可以保持图像信息的完整性和准确性,特别是在一些对位置信息敏感的任务中,如物体检测和图像分割。它可以减少信息损失,提高模型的性能和精度。

总而言之,Injective padding是一种特殊的填充方法,它在保持特征图尺寸的同时,保持输入和输出之间的一对一映射关系,以提高模型的性能和精度。

2.Reversible Residual Network(可逆残差网络)

当我们训练一个模型时,为了获得更好的表现效果,提升网络的宽度和深度成为了一个最常见的手段。但提升网络复杂度的同时也会带来计算速度的减慢以及增大对显存的需求。这里要介绍的RevNet(Reversible Residual Network)是一个以时间换空间的策略,它在显存占用量减少几倍的前提下训练速度慢了30%到50%,同时准确率并没有明显的下降。这在很多场景下还是非常有实用价值的。

在残差网络中,当我们对其进行BP(反向传播)时,模型需要知道每一层的激活值(activations,激活函数的输入)和模型的损失,然后通过链式法则从输出层到输入层逐层实现模型参数的更新。在传统的深度学习网络中,我们需要在显存中存储模型中所有的激活值。随着模型宽度和深度的增大,我们需要更大显存的GPU来保存模型,显存的需求甚至比计算速度更能成为限制AI从业人员的门槛。如果速度慢的话,你可以多跑一段时间,但是如果显存不够的话,模型你是永远不能运行起来的。而且模型占用显存更小的话意味着我们可以使用更大的batchsize,这在训练过程中带来的训练速度的收益要比计算速度带来的速度损失大很多。

而RevNet的当前层的激活结果可以由每个block的最后一层的结果计算得出,也就是说如果我们知道模型的每个block的最后一层结果,我们便可以反向推出每一层的结果。RevNet的这个特性使得我们只需要保存模型的每个block的最后一层结果即可,这极大的节约了显存的占用,使得我们可以在有限的显存空间上将模型的深度增加到无限深。

每个可逆残差块执行一对输入 x1, x2 → y1, y2 的函数,可以表示为以下形式:

x_{1},x_{2}=split(x)

y_{1}=x_{1}+F(x_{2}),y_{2}=x_{2}

该算法使用通道分区方案,将输入沿着通道维度分成两个大小相等的部分。由于可逆残差块一次只能处理一半的通道维度,因此有必要打乱特征图的通道维度。经过实验发现频道改组是有效且高效的:y = (y2, y1)。每个块都可以通过减去残差来反转:

y_{2},y_{1}=split(y)

x_{2}=y_{2},x_{1}=y_{1}-F(x_{2})

图 1(a) 和 (b) 分别显示了可逆残差块的前向和后向推理的图示。残差函数 F 由内核大小为 3 的连续 conv 层实现。每个 conv 层后跟一个 relu 层,最后一个除外。通过堆叠多层和块来获得大的感受野,以捕获密集的成对关系。放弃了归一化层,因为它对学习风格表示提出了挑战。为了捕获大规模风格信息,挤压模块用于将空间信息减少 2 倍,并将通道维度增加 4 倍。结合可逆残差块和挤压模块来实现多尺度架构。

3.squeeze modules

Squeeze模块是多尺度架构中的一个组件,用于实现神经网络中的空间信息的捕捉和增强。"Squeeze"这个术语是指这些模块执行的操作,即在增加通道数的同时压缩输入特征图的空间维度。

Squeeze模块的主要目的是提高信息流的效率,并在网络中实现更好的特征表示。通过压缩空间维度,squeeze模块旨在捕捉输入数据的更紧凑表示,使后续层可以专注于更高层次的特征和关系。

通常,一个squeeze模块由卷积层和池化操作的组合组成。卷积层负责减少通道数,而池化操作则减小空间维度。最终得到的特征图用于后续的处理和分析。

4.Channel Refinement(通道细化)

CAP-VSTNet 中的级联可逆残差块和压缩模块设计导致前向推理过程中冗余信息积累,因为压缩模块呈指数极增加通道。冗余信息会对图像的风格迁移产生负面影响。为了解决这个问题,改为使用更适合的通道细化模块 (CR)去连接级联可逆残差块。

图3 CR结构图

如图3所示,CR模块首先使用注入式填充模块(IP)增加潜在维度,以确保输入的内容/风格图像特征通道可以被目标通道整除。然后,它使用可逆残差模块(RBB)来集成大场景信息,并将通道信息扩展到空间维度的一个补丁中。对于这个CR模块,有几种备选设计方案。基于MLP的点对点层也可以用于信息提炼。初步实验发现,当采用点对点层(例如全连接层或反向残差)时,可能会出现混叠伪影(请参见图4中CR-MLP和CR-IR生成的结果),但采用的CR-RRB设计没有这个问题。

图4 CR-MLP和CR-IR生成的结果

5. Transformation Module(cWCT线性变换模块)

现有的真实感方法通常采用 WCT作为转换模块,其中包含白化和着色步骤。以上两个步骤都需要计算奇异值分解(SVD)。然而,通过计算\frac{1}{min_{\sigma (i\neq j)}\sigma _{i}^{2}-\sigma _{j}^{2}} ,梯度取决于奇异值 σ。如果内容(风格)特征图的协方差矩阵\sum _{c}=f_{c}f_{c}^{T}(\sum _{s}=f_{s}f_{s}^{T})具有相同的奇异值,或者任意两个奇异值之间的距离接近于0,则梯度变为无穷大。会进一步导致WCT模块失效,模型训练崩溃。

梯度变为无穷大的情况通常出现在神经网络的训练过程中,特别是在使用反向传播算法计算梯度时。当内容(风格)特征图的协方差矩阵具有相同的奇异值,或者任意两个奇异值之间的距离接近于0时,会导致梯度变为无穷大的现象。

这种现象被称为梯度爆炸(Gradient Explosion)。它发生的原因是在反向传播算法中,梯度通过链式法则从输出层向输入层传播。在每一层中,梯度会与该层的权重矩阵相乘,然后再传递到前一层。如果梯度在每一层中都变得非常大,那么在传播到前面的层时,它们会指数级地增长,最终导致梯度变为无穷大。

当特征图的协方差矩阵具有相同的奇异值或者奇异值之间的距离接近于0时,意味着特征之间的相关性非常高。这种高度相关性会导致协方差矩阵的条件数变得非常大,条件数是最大奇异值与最小奇异值之比。条件数的增加会使梯度在反向传播过程中指数级地增长,从而导致梯度爆炸的问题。

梯度爆炸可能会导致网络无法稳定地进行训练,甚至使网络的权重溢出范围,导致数值不稳定。为了解决梯度爆炸问题,可以采取一些方法,如梯度裁剪(gradient clipping)或者使用正则化技术(如L2正则化)来限制权重的增长,以稳定训练过程。此外,使用批归一化(batch normalization)等技术也可以帮助减轻梯度爆炸的问题。

这篇论文使用基于Cholesky分解的无偏线性变换来解决这个问题。Cholesky分解的导数依赖于\frac{1}{\sigma }的梯度。

与奇异值分解(SVD)不同,这种方法不要求两个奇异值相等,因此更加稳定。为了避免溢出,我们可以用一个单位矩阵来正则化它:ˆΣ=Σ+ϵI。Cholesky分解的另一个优点是其计算量远低于奇异值分解。因此,采用基于Cholesky分解的小波变换(简称CWCT)更稳定、更快。 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值