机器学习: 基于MRF和CNN的图像合成

前面我们介绍了基于卷积神经网络的图像风格迁移,利用一张content image 和 style image,可以让最终的图像既保留content image的基本结构,又能显示一定的style image的风格,今天我们介绍另外一篇类似的文章: Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis,这篇文章与之前的 Image Style Transfer Using Convolutional Neural Networks 的区别在于引入了 Markov Random Fields, 不再是像素的一一对应了,利用MRF,可以将feature maps 分成很多的patch,找 patch之间的匹配。

给定一张content image xcRwc×hc 以及一张 style image xxRws×hs,我们希望合成一张图像 xRwc×hc, 将 style image的风格迁移到 content image 的 layout,并且利用 MRF 使得合成图像的 local patchs 与 style image 的类似,我们可以建立如下的能量函数:

E=Es(Φ(x),Φ(xs))+α1Ec(Φ(x),Φ(xc))+α2Υ(x)

我们需要求解上面的优化函数得到最优的 x

x=argminxEs(Φ(x),Φ(xs))+α1Ec(Φ(x),Φ(xc))+α2Υ(x)

Es 表示 style loss function,Φ(x) 表示神经网络中某些层里 feature maps 的一个集合,Ec 表示 content loss function,Υ(x) 是一个正则化选项,用来平滑最终的合成图像。接下来,我们可以看看每一个 loss function 的具体表达式:

Es(Φ(x),Φ(xs))=i=1mΨi(Φ(x))ΨNN(i)(Φ(xs))2

这里 m 表示Ψ(Φ(x)) 的基数,即local patch 的个数, Ψi(Φ(x)) 表示 Φ(x) 的一个local patch,而 ΨNN(i)(Φ(xs)) 表示 Φ(xs) 中 与 patch Ψi(Φ(x)) 最匹配的一个 patch,即

NNi=argminj=1,2...msΨi(Φ(x))Ψj(Φ(xs))|Ψi(Φ(x))||Ψj(Φ(xs))|

简单来说,就是将feature maps 的集合 Φ(x) 生成很多local patch,这些 local patch 组成一个 patch 的集合 Ψ(Φ(x)), 在这个 patch 的集合中,每一个patch Ψi(Φ(x))Ψ(Φ(xs)) 都有一个最佳的匹配,Es(Φ(x),Φ(xs)) 计算的不是 pixel 之间的平方差,而是 patch 与 patch 之间的平方差,所有比起之前的图像合成算法,这个方法利用了MRF, 去寻找patch 与 patch 之间的关系,这样可以更好的保留局部的信息,但是算法也变得更加复杂。

content loss function 和之前的一样,计算feature maps 之间的欧氏距离:

Ec(x)=Φ(x)Φ(xc)2

正则化选项的表达式如下:

Υ(x)=i,j((xi,j+1xi,j)2+(xi+1,jxi,j)2)

这个相当于在水平方向和垂直方向做差值。

将这三项结合起来,利用BP算法,求最终的合成图像 x.

原文地址:https://www.cnblogs.com/mtcnn/p/9412426.html