论文地址: https://www.mrl.nyu.edu/projects/image-analogies/
Image Analogies
Image analogies 是一篇01年的老文章,但是其影响深远。Siggraph2019 的 Stylizing Video by Example依然有借鉴其思想,并取得了甚至能超过GAN网络的效果。而我在实习期间有幸读过这篇文章,现在有时间便将其整理记录。
概述
A.Hertzmann的这篇 Image anlogies 翻译过来就是图像类比。顾名思义这篇文章的主要工作如下图所示,我们有图对A:A’ 以及图像 B ,通过本文提出的方法找到图像 B’,使得 B:B’与A:A’之间满足相同的映射关系。非常适合用来解决 Example based 的风格迁移的问题。
图像类比
那么如何得到图像 B’ 呢,Image Analogies 是这样做的,先上Baseline:
这是整个Image Analogies的 Baseline 可见高亮的部分就是这个算法最关键的一步BestMatch。我们抛开一开始的高斯金字塔,先只看BestMatch。BestMatch找到了在 B’ 图中的每一个像素 q 所对应的 A’ 中的像素 p,再将 q 的值设置为 p。即完成了一个像素拷贝的过程。那么这篇文章的整体思路就比较清晰了,找到匹配像素,然后像素拷贝,完成风格迁移。
那么问题就转换为如何寻找最佳匹配像素即BestMatch,而寻找BestMatch像素 p 也是这篇文章的亮点。
最佳匹配
-可见 BestMatch 内部主要是由上图高亮的两部分组成,分别为 BestApproximateMatch 以及 BestCoherenceMatch 。他们分别得到不同的最佳匹配像素 papp 和 pcoh 。再比较这两个像素邻域的特征和q邻域的特征的距离 dapp 和 dcoh。由于计算方式的原因,dapp 总会比 dcoh 更小所以加上惩罚项放大,最终距离近的为最佳匹配。
最近邻匹配
- BestApproximateMatch 的本质是最近邻匹配,但使用用PCA降维和ANN加速。
- 使用高斯金字塔,获取不同尺度的信息。
- 采用邻域像素来表示特征。
这篇文章采用邻域像素来表示特征,并把金字塔中当前层和尺度更小的一层的特征结合起来。在金字塔的最大尺度层像素的5x5邻域提取特征,其余层则像素只使用3x3邻域。所以对于尺度最大层的像素其特征F 的长度为 5x5(Xl) + 3x3(Xl-1) + 55(X’l) + 33A(X’l-1) = 36 (X =A,B)。但是,需要注意的是在 B’ 像素 q 的邻域中只有一部分是合成完成的,还有一部分是是未合成的,如上图所示,所以实际上只能用已合成的像素,所以实际特征长度会比上面计算的要短。
一致性匹配
最近邻得到的像素 p 虽然在数值上与 q 距离最近,但是这样得到的像素不一定符合人的感知,看上去并不"和谐"。这篇文章引入了 BestCoherenceMatch即一致性匹配。使生成的图像更符合人类的感知。它的计算方法如下,则 BestCoherenceMatch p = s(r*) + (q - r*)。
其中 r 是 B’ 中像素 q 邻域里已经合成的一个像素,s( r) 则是在 A’ 中 r 对应的匹配像素。如下图所示,通过 output image 中的白色像素即 q 的邻域 r 找到 input image 中对应的阴影像素 s( r), 并通过 r 与 q 的相对关系找到黑色像素s( r) + (q - r), 最后比较所有黑色像素邻域与白色像素邻域的距离,得到 q 的最佳邻域像素,进而得到 q 的 BestCoherenceMatch p = s(r*) + (q - r*)。
BestCoherenceMatch 在一定程度上保证了图像的 spatial coherence。其主要思想在Synthesizing Natural Textures中有详细介绍。
总结
我理解的 Image Analogies 即在图像 B 的内容上使用最近邻匹配使生成的 B’ 风格上接近 A’ ,同时使用一致性匹配保证 B’ 具有一定空间上的连贯性,所以能够取得较好的效果。但是由于要对每个像素进行匹配,速度十分缓慢,不适合实时图像生成。