Neural Style Transfer Review IV

Neural Style Transfer Review IV

数据集

Flickr 30k

30k 图片,每张图片 5 句标注,并且和图中的实体有对应关系。但像 “outside, parade” 这样的场景或者事件信息没有对应的实体标注。

MS COCO

200k 有标注,每个图片 5 句标注,但多是以物体为主。

Google’s Conceptual Captions

使用互联网上带有 Alt-text HTML 标签的图片,做一定的预处理之后得到 3M 图片

Photorealistic Style Transfer

Controlling Perceptual Factors

Gatys et al. CVPR 2017.

之前的风格迁移很难控制或者预测视觉感受,作者提出的方法可以对转换的结果进行更加细致的控制和预测,以达到更好的视觉效果。

空间控制

通过使用“空间指导通道”,也就是 MASK 来控制风格迁移的区域或者实现整张图片结合不同的风格, content mask 中为 1 的区域将会得到对应 style mask 中为 1 区域的风格。

可以通过 mask 乘对应的 feature map 实现需要的结果。对于不同 layer 中使用的 mask,可以通过下采样的方式得到,但效果不好。作者实验发现使用腐蚀操作能得到更好的效果。

颜色控制

图片中的颜色信息相对笔锋大小或者几何形状等信息比较独立,所以能够做到相对独立地在迁移过程中控制颜色信息。有些时候我们仅仅希望内容图片得到风格图片的纹理特征而不引入颜色分布(例如风格图片是一张夜景图片,我们仅仅希望内容图片得到纹理而不会整张图片都变成夜景)。

由于人的眼睛对亮度的敏感性大于色彩,一种方案是使用亮度与色彩信息分离的颜色空间,使用原来的风格迁移算法作用于亮度,得到新亮度再加原色彩得到迁移之后的风格。

第二种方法是先对风格图片和内容图片进行直方图匹配,这里使用线性变换 $p_s^{‘} = Ap_s+b$,目标是新的风格图片的像素均值方差等于风格图片,之后用这张新的风格图片进行迁移。

尺度控制

有的时候希望在粗粒度上使用一种风格,在细粒度上使用另一种风格。此时不能简单地使用不同尺度的 CNN feature(高层次的 CNN feature 包含了一部分低层次的语义)。作者提出了建立新的风格图片,这是由粗粒度风格作为内容图片,细粒度风格作为风格图片先做一次风格迁移得到新风格,再用这个新风格和内容图片做一次风格迁移得到的。

在高分辨率下的迁移。高分辨率下也希望得到比较明显的风格迁移结果,作者发现使用 VGG-19 网络效果最好的输入大小在 500500 像素左右,对于高分辨率的效果不好。于是作者选择先将高分辨率的图片下采样至 500\500 像素,再上采样回去,用这样处理的图片进行风格迁移,能够更快收敛并去除一定噪声,会得到较好的效果。

在其他模型上的应用

可以将空间控制,颜色控制等加入到前向传播网络的 loss 中,改善这些工作的效果。

Deep Photo Style Transfer

Luan et al. CVPR 2017.

作者想解决的还是真实照片中的风格迁移问题,希望效果尽量真实,细节符合真实观感。作者的工作基于 Gatys 的慢速风格迁移,在损失函数中加入正则化项(平滑),并且合理使用图像的语义标签进一步提升迁移效果。

平滑操作主要通过希望相同内容邻域之内的像素尽量相似,使用 Matting Laplacian 进行建模:

其中,$V_c[O]$ 是输出图片通道 $c$ 的向量化形式,$\mathcal{M}_I$ 是由输入内容图片计算而来的矩阵。

合理利用语义标签能做到更精确的风格转换,只提取希望区域的风格。作者自己生成了一些风格标签分类,包含常见的场景分类(天空,建筑物,海洋等等),之后使用 Gram 矩阵求风格的时候加入包含语义的 MASK 即可 (具体细节可能得参考代码)

缺点,基于优化的慢速风格迁移比较慢,内容风格差异较大时迁移效果不好。

A Closed-form Solution to Photorealistic Image Transfer

Li et al. ECCV 2018.

之前的 neural style transfer 在艺术作品的风格迁移方面表现较好,但是在真实照片中的表现较差,经常出现空间扭曲等不协调的情况。Luan et al. 提出在原有的损失函数上加入正则化项,效果有所改进,但部分细节还是与对应的语义不符。作者提出的方法在效果上和速度上都比 Luan et al. 有很大提升。

主要处理步骤为风格转换+平滑处理。

风格转换部分基于 WCT 算法:

即令输出图片的协方差匹配风格图片的协方差,但这样输出图片可能会有一定的扭曲现象。于是作者提出了 PhotoWCT,考虑到 encode 时的 max-pooling 操作会丢失很多空间特征信息,而传统的上采样(插值+卷积)很难恢复这些被破坏的空间特征,所以作者提出使用 unpooling (之前有工作中采用 unpooling 效果很好,能恢复一定的空间信息) 代替 upsampling,实验中也发现这样的 PhotoWCT 效果好于 WCT,但还不能到达令人满意的程度。

对于 PhotoWCT 之后的图像,需要进一步进行平滑操作。平滑的目标是:

  • 内容图片中,邻域内相同内容的像素在输出图片中要尽可能相似;
  • 平滑之后的图像跟 PhotoWCT 不能相差太远。

首先定义 affinity matrix 表征各像素间的相似关系,之后优化目标被定义为:

其中,$y_i$ 是在 PhotoWCT 处理后的图片中像素 i 的颜色,$r_i$ 是输出图片中像素 i 的颜色,$d_ii = \sum_{j}w_{ij}$ 相当于是一个归一化项,$\lambda$ 控制前后两项 loss 的权重关系。

损失函数的灵感来源于 graph-based ranking algorithms,之后对这个二次凸优化问题可以求得闭式解:

其中,$\alpha = \frac{1}{1+\lambda}$,$S = D^{-\frac{1}{2}}WD^{-\frac{1}{2}}, D=diag\{d_{11},d_{22}, d_{33}, \dots, d_{NN}\}$ 为从 $I_c$ 推导而来的标准化的拉普拉斯矩阵,由于 $W$ 比较稀疏,能很快求解得到结果。

对于 $W$ 的选择,比较流行的方法是基于每个像素八邻接的 GaussianAff: $w_{ij} = e^{-|I_i-I_j|^2/\sigma^2}$,其中 $I_i, I_j$ 是 i 像素和它相邻的 j 像素的 RGB 值,$\sigma$ 是需要选择的超参数,但实验发现这个参数非常难选择,很容易造成过平滑(整张图片都被平滑,细节丢失严重)或者不同区域的平滑效果差异显著,风格不同一,于是作者选用 matting affinity,两个图片的相似性是由 local window 中像素的均值和方差决定的,这样避免了超参数选择,实际效果很好。

训练集使用 MSCOCO,值得注意的是算法可以使用语义标签信息来达到更好的转换效果。可以使用语义标签来明确内容和风格图片中对应的匹配区域,并且由于区域平滑的存在,不需要很精确的 mask 就能达到很好的效果。

缺点是在含有花纹的风格转换中,效果很差,很难将花纹转换过来,这可能是因为提出的方法使用了很多平滑效果,导致花纹消失。

A Closed Form Solution to Natural Image Matting

Levin et al. CVPR 2006.

抠图的主要思想是将原始图片建模为前景和背景的加权,目标是提取前景。作者的主要假设是前景和背景在局部小窗口内都是平滑的,也就是近似为常数,那么通过对一个二次能量函数的优化,就可以得到哪些部分属于前景(希望抠出来的部分),哪些属于背景。

Matting matrix $L_{(i,j)}$:

其实可以看作是决定该像素值或者是否为前景的时候,周围像素对其的加权,这也就是上面的 Photo Style Transfer 中使用了 Matting matrix 的原因,无需手动决定参数,权重自动由邻域的方差均值决定。

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Network

Zhu et al. 2018.

图像风格迁移任务存在缺乏成对的有标注训练数据的问题,而作者提出的 Cycle-GAN 能在一定程度上解决缺乏成对标注数据的问题。诸如风格迁移、图像到油画、油画到图像等任务都可以归结于为 image-to-image translation 的任务。该任务可以被定义为,关于源数据,目标数据 $X, Y$,找到映射 $G: X \rightarrow Y, s.t. \hat{y} = G(x)$ 无法与 $y \in Y$ 区分。但由于这样的映射只能保证分布是一样的,不能保证每个个体 $x$ 映射之后可能会映射到 $Y$ 中的任意一个个体,不会都能达到我们想要的效果,所以作者在这个想法的基础上提出考虑逆映射 $F: Y \rightarrow{X}$,并且希望 $F(G(x)) \approx x, G(F(y)) \approx x$,将这个损失加入到原来的 GAN 损失中,能够得到很好的效果。

训练的时候将对数似然改为平方误差,generative networks 使用的是 Johnson 的网络,discriminator networks 使用的是 PatchGAN。

Style Transfer 任务中,作者使用 Cycle-GAN 学习画家的所有作品的绘画风格,而不是一部作品的风格。

Season Transfer 任务中,作者使用 Flickr 的 API 收集了一个公园不同季节的照片,用来训练。

缺陷:一些物体转换出现结构变形,背景内容颜色改变较大等。

Text-to-Image

Generative Adversarial Text to Image Synthesis

Reed et al. ICML 2016.

之前的图像生成工作都是将不同物体具有区分性的特征编码到一个向量里面,再用反卷积等方式生成图像,但生成这样的向量可能需要很多领域知识(指定特征)。于是作者希望能在描述语料中提取出图像的特征,并生成图像。主要目标是建立一个 words -> image 的映射。

网络结构如下:

image-20200427111232916

主要思路就是使用 text-encoding + 随机噪声 经过反卷积生成 $\hat{x}$,之后通过卷积全连接并加入 text-encoding 给出判断为真实的概率。

作者认为 text-encoding 中捕捉了图片的内容信息(比如花的形状和颜色),而很少有图片的风格信息(背景颜色等)。所以作者提出可以用来做风格迁移,text-encoding 提供内容,噪声 z 提供风格。可以将希望迁移的风格 + 内容 text-encoding 生成为一张新图片。可以训练一个风格编码器 $S$:

思路是如果 $z$ 能代表风格,那么生成出来的图片 $G(z,\phi(t))$ 经过风格编码器 encode 之后的风格应该和 z 相似。

训练好之后风格转换,对于给定风格图像 $x$,内容 $t$,可以生成:

另外可以使用 symmetric structured joint embedding 预训练 text-encoding,学习分类器 $f_t$ 最小化如下损失:

其中,$\Delta$ 是 0-1 损失,$v_n, t_n, y_n$ 是图像、文本描述和类标签。

直觉上为给定文本描述或图像后,选择另一个描述中与之关联性最强的作为类别。

可以预训练来加速之后 GAN 的训练过程。

个人观点:

  • 如果想要较强的泛化能力,那么需要学习较多的词向量以获取词之间的相似性;
  • 并且对于风格迁移,是否可以参考之前的 neural style transfer 来衡量风格差异;
  • text 表示内容,image 表示风格是一个很好的想法,但不能假设所有的 text 都是比较局限的形式,如果使用 text 指导风格转换呢?

Semantic segmentation

Unified Perceptual Parsing for Scene Understanding

T. Xiao et al. ECCV 2018.

文章的思路来源于人可以轻松对所看到的场景和场景内的各种物体以及物体的信息作出准确的判断,作者提出 UPerNet,希望做到从单一图片识别出尽可能多的场景、物体等语义信息。

image-20200507211720900

目前各种语义识别和分割大多数都是单一任务,而统一的识别分割任务存在以下难点:

  • 没有数据集是同时包含所有需要的语义标注的;
  • 数据集的标注尺度也是不同的,有的是 pixel-level,有的是 image-level.

训练数据

为了解决数据的问题,作者使用了 Broden dataset,里面包括 ADE20K, Pascal-Context, Pascal Part, OpenSurface, Describable Texture Dataset. 作者使用了相似概念合并、去除低频概念及图片以及类别平衡化处理等手段得到一个比较合理的数据集。

模型思路

使用层次化模型,高层次用来预测场景语义,低层次用来预测物体、材质、纹理等语义。

训练时,对于特定的训练数据,只更新用于识别该数据的对应 layers.

image-20200507214254413

最上层的 Pyramid Pooling Module 用来增强空间结构信息。

关于 texture,作者采取的方法是当整个网络在其他任务上训练好之后,对 texture 进行单独训练,并且梯度不回传到主干网络。

因为 texture label 是 image-level 并且 non-natural 的,直接与正常的图片混合进行训练可能会使模型的表现下降。而且 texture 的识别不需要高层次的语义信息,所以直接使用低层次的 feature 输入,对其进行判定。

从语义分割中建立语义信息图(考虑通过这种方式建立相关 word embedding?):

image-20200507221122285

image-20200507222310917

Semantic Image Synthesis with Spatially-Adaptive Normalization

T. Park et al. CVPR 2019 (Oral).

主要应用的任务是 semantic segmentation mask to photorealistic image translation. 这篇工作的主要贡献是提出了 spatially-adaptive normalization,这种归一化与之前的 BN 和 IN 相比,能更好地保存输入的语义和空间信息。

作者观察到之前的 CIN, AdaIN 以及各种普通的归一化会损失语义和空间信息,在真实场景风格迁移中表现不好,而后面会看到 SPADE 能够更好地保留语义特征。

image-20200507115612515

问题定义和任务

问题定义:$m \in \mathcal{L}^{H\times W}$,这里 $\mathcal{L}$ 是语义标签集,$H, W$ 是图像的长和宽。$m$ 中的每个位置都表示该像素的语义标签,任务是把该输入转换为一张真实场景图片。

SPADE Design

$h^i$ 表示经过第 i 个 CNN-layer 得到的 feature,$C^i, H^i, W^i, N$ 分别为通道数,高度,宽度,batch_size,SPADE 将 BN 改为:

其中,$\gamma_{c, y, x}^{i}, \beta_{c, y, x}^{i}$ 是根据输入 semantic mask 生成的均值和偏移,可以看出这是一个位置有关的变量。

当输入空间不变的语义图片时,SPADE 退化为 CBN (Conditional Batch Normalization); 当输入变为一张风格图片时,令 $\gamma, \beta$ 空间不变,batch_size 为 1,SPADE 退化为 AdaIN.

模型采用的是 GAN 的训练方式。

SPADE 结构:

image-20200507124928769

Res 结构:

image-20200507124941283

Generator 结构:

image-20200507124951759

Discriminator 结构:

image-20200507125013941

风格迁移任务:

image-20200507125227475

image encoder 结构:

image-20200507125302355

参考文献

[1] Flickr 30k Entities.

[2] Google’s Conceptual Captions

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 Bowen
  • Powered by Hexo Theme Ayer

请我喝杯咖啡吧~

支付宝
微信