精致的像素级别的风格转换 ----- Deep Image Analogy

总说

精致的像素级别的风格转换 ----- Deep Image Analogy_第1张图片
一般情况下,我们只有两幅图片, A B 。如果以 A 为主体,我们希望得到的图像在内容上与 A 相似,但是一些图像属性(比如颜色,纹理等)与 B 相似,我们记这样的图为 A ,同理我们也可以定义 B

与以前风格转换的异同:
以前style transfer的风格是全局的,指的是一种”画风“,这种转换与局部内容关系不大,比如古代山水画的画风或是抽象派的画风等等,是图像全局的风格的表达”。 如果是图像属性之间的转换, 是pixel级别的风格。
比如上图 A 具有 A 的轮廓,相应位置的内容几乎是一样的。但是整幅图像的属性(比如颜色,纹理)都变成了 B 的,即变成了暗黄色以及脸部的纹理也抹去了很多。

基本想法

A:A::B:B

其中 A B 是未知的。这样的表示有以下两个约束:
1. A A 是完全对齐的,同理 B B 也是。
2. A B 在图像属性上是近似的。(比如颜色,纹理)。
精致的像素级别的风格转换 ----- Deep Image Analogy_第2张图片

作者们认为直接学到从 A B 的映射是困难的(红色)。这是因为 A B 具有视觉效果的差异性,在像素上存在misalignment。如果把这种映射分解为
1. AA 的相同位置的映射。(这个是对齐的,spatial位置上,这是后面为什么可以用 A 重建出 A 的内容的原因)
2. 到以及 AB 的风格映射。(这个存在着misalignment,所以使用NNF搜索)

现在定义两个映射。 Φab 如果表示 AB 的映射,即其将 A 的一个 p 位置的点映射到 B p 位置上。那么由于 AA 本身是相同位置点的映射(完全对齐的), B B 也是对齐映射。所以 Φab 的映射可以认为是 A 或者 A B 或者 B 的映射。同理可以定义 Φba

A(p)=B(Φab(p))andA(p)=B(Φab(p))1

上面前半部分的意思是,对于 A 图的 p 点,如果该点映射到 B 图的 p 点,其中 p=Φab(p) 。那么这两个点应该是相同的。当然为了加强一下对称性约束,可以加上双向约束: Φba(Φab(p))=pΦab(Φba(p))=p

构建 A B

由于 A B 我们是有的,如果我有也有 A B , 那么我们就可以得到映射 Φab Φba 。理想的 A 是即具有 A 的内容结构,又具有 B 的细节。 现在想,如果 A A 是对齐的,只有细节不同(局部纹理,颜色等),那么 A A 在CNN的高层上的特征是及其相似的。所以在最高层特征,直接假设 A A 相等,然后在CNN的浅层逐步恢复 A ,恢复的方法是取当前层的 A 的特征与 B 的特征进行融合,同理可以构建当前层的 B 。通过一层一层往前构建,最终得到输入层的 A B

Deep PatchMatch

输入 A B , 那么我们可以得到 l 层的 A B 的特征,这是预先计算的。 给定latent images A B (加上输入的两幅,所有的4幅图像已经有了),我们可以定义映射 Φab Φba 就是一次NNF(Nearest-neighbor Field)搜索。上面已经讲到,在网络的最高层,我们可以直接认为 A A , B B 相同。现在考虑:
如果我们已经有了第 L 层的4幅图的特征。对于 L1 层的 A 特征,我们想法是将 L 层的 A 的特征与 L 层的 B 的特征进行融合的。由于 A A 形状是基本一样的(只是细节不同),所以我们可以将第 L 层的 A 的特征乘以某个权值,作为第 L1 层的 A 特征的一部分,那么 B 的特征也要在构建 A 起作用,毕竟 B 是给 A 提供细节的。前面说到, B A 不是对齐的!所以我们需要对 B 进行一个映射,使得映射后的特征与 A 对齐,这样就可以融合了。
那么这个对 B 的映射是什么呢?就是 L 层已经计算出来的 Φab , 见公式(1)

算法具体步骤

精致的像素级别的风格转换 ----- Deep Image Analogy_第3张图片
输入 A B ,可以预先计算得到每一层的 FlA 以及 FlB 。然后我们假设第5层(最高层)的 F5A=F5A F5B=F5B 。那么我们首先可以NNF搜索计算第5层的 ϕ5ab 以及 ϕ5ba 。然后再根据 ϕ5ab F5B 进行修改(使之在空间位置上与 A 的特征相匹配)得到 FLB(ϕ5ab) ,但是值得注意的是,网络用的是VGG。一般取层,层与层之间是经过pooling的。所以我们得到的 FLB(ϕ5ab) F4A 的一半大小,如上图所示。如果我们直接将上采样 ϕ5ab ,使之放大两倍得到 ϕ5ab ,再 FLBϕ5ab) ,其实是会出现问题的。在下面会更仔细讲解。

预处理

采用的是VGG的每一个“block”的第一层的卷积层后面的Relu层。就是 reluL1 ,即relu1_1, relu2_1,….relu5_1。neural style中也是默认采用这5层作为style层。上面已经讲了预处理怎么做了。

对于第 L 层,定义:

ϕLab(p)=argminqxN(p),yN(q)(F¯¯¯LA(x)F¯¯¯LB(y)2+F¯¯¯LA(x)F¯¯¯LB(y)2)

其中 N(p) p 点为中心的小patch。当 L=5,4,3 时,取3x3; L=2,1 时取5x5。 F¯¯¯L(x)=FL(x)|FL(x)|
当得到 ϕLab 时,我们要构建 L1 层的 FL1A
FL1A=FL1AWL1A+RL1B(1WL1A)

其中 RL1B FLB 经过变换得到的。刚才已经说了,我们利用 L 层得到的 ϕLab , 将其上采样,得到 ϕLab , 再作用于 FLB ,得到 FLB(ϕLab) ,作为 RL1B 。这样得到的 RL1B FL1A 是不对齐的。这是因为 ϕLab ϕL1ab 之间有pooling,因此它们之间并不是简单的上采用就可以得到(而且L-1层与L层之间是经过卷积等其他操作的)。这就陷入一个难题: 我们要得到 FL1A , 不仅需要 FLA , 还需要 FLB 的细节指导。前者是预先计算得到的,后者是与其不对齐的。所以要重建。我们虽然可以用 ϕLab 的映射,但是这毕竟不是 ϕL1ab ,而且 ϕL1ab 不能由 ϕLab 简单上采样得到。

最终重建 A 的唯一障碍就是:怎样利用 ϕLab 以及 FLB 得到与 FL1A 对齐的 RL1B
反过来思考,如果我们已经得到了 RL1B ,它应该有什么特点。它应该经过 L1 层到 L 层之间的计算后,得到的应该就是 FLB(ϕLab)

定义 CNNLL1() L1 层到 L 层之间的子网络。那么 CNNLL1(RL1B) 显然是要与 FLB(ϕLab) 尽量接近。因此利用这一点可以得到:

LRL1B=CNNLL1(RL1B)FLB(ϕLab)2

从而近似求出 FLB(ϕLab) .

重建A’(或B)

上面唯一的问题就在于 WL1A 的得到了,其实就是手动选的。显然 WL1A 越大则说明我们希望 FL1A 利用更多的 FLA 的内容结构,利用更少的 FLB 的细节特征。
具体选择方法是:

WL1A=αL1ML1A

其中 ML1A 就是 FL1A 归一化之后,再经过一个sigmoid函数,从而得到。
ML1A(x)=11+exp(κ×(|FL1A(x)|2τ))

其中 κ=300,τ=0.05

因此 A(B) 的重建就是三个过程:将当前层的特征warp上当前层的映射,然后反卷积得到上一层的特征,然后融合。如下图所示:
精致的像素级别的风格转换 ----- Deep Image Analogy_第4张图片

Nearest-neighbor Field Upsampling

前面已经说了直接从 ϕLab 上采样得到的映射 ϕL1ab 无法作为 ϕL1ab ,但是可以作为 ϕL1ab 的初始化值。 ϕL1ab 必须是由 L1 层的4幅图的特征通过NNF搜索精调整得到的。在第 L1 层的NNF搜索,只在 ϕL1ab 映射关系的p点周围一定的范围内进行随机搜索,从而微调 ϕL1ab ,得到 ϕL1ab 。对于{4,3,2,1}层,搜索范围半径分别是{6,6,4,4}。由于整个过程是corase-to-fine的一个过程,因此后一层的这种映射对于前一层的映射是有一定指导作用的。如果随机初始化不利用后一层的指导信息,那么无法得到好的 A 的重建。
精致的像素级别的风格转换 ----- Deep Image Analogy_第5张图片
从上图可以看到,如果是layer independent的话,重建出来的图会乱掉。

算法伪代码

精致的像素级别的风格转换 ----- Deep Image Analogy_第6张图片

我们可以通过一层一层往下计算,得到 ϕ1ab ,然后直接将 ϕ1ab 作为 Φab (伪代码第倒数第三行)。这是因为 ϕ1ab 与输入层之间是没有pooling之类的。spatial size是一样的。当得到 Φab 之后,就可以重建 A A(p)=1nxN(p)(B(Φab(x)) ,其中n=5。同理可以重建出 B

效果展示

精致的像素级别的风格转换 ----- Deep Image Analogy_第7张图片

效果比Deep photo style transfer还好,不错。

并且这种素描与真实图的转换,效果也不错。
精致的像素级别的风格转换 ----- Deep Image Analogy_第8张图片

精致的像素级别的风格转换 ----- Deep Image Analogy_第9张图片

参考论文:Visual Attribute Transfer through Deep Image Analogy

你可能感兴趣的:(Paper,Reading,Deep,Learning,深度学习论文阅读)