• 机器学习: 基于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.

  • 相关阅读:
    Spring Boot+Vue前后端分离(1):准备环境 +项目启动
    Git使用SSH协议clone项目及SSH简介
    Intelij ideas windows版本快捷键整理
    Spring Boot配置—— yml 配置map
    Nginx配置——多站点配置
    String分割
    Spring日志处理——logger占位符
    Java缓存经验
    maven项目——maven跳过单元测试maven.test.skip和skipTests的区别
    Java工具类——Hutool Java
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412426.html
Copyright © 2020-2023  润新知