机器学习: 基于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 xc∈Rwc×hc 以及一张 style image xx∈Rws×hs,我们希望合成一张图像 x∈Rwc×hc, 将 style image的风格迁移到 content image 的 layout,并且利用 MRF 使得合成图像的 local patchs 与 style image 的类似,我们可以建立如下的能量函数:
我们需要求解上面的优化函数得到最优的 x
Es 表示 style loss function,Φ(x) 表示神经网络中某些层里 feature maps 的一个集合,Ec 表示 content loss function,Υ(x) 是一个正则化选项,用来平滑最终的合成图像。接下来,我们可以看看每一个 loss function 的具体表达式:
这里 m 表示Ψ(Φ(x)) 的基数,即local patch 的个数, Ψi(Φ(x)) 表示 Φ(x) 的一个local patch,而 ΨNN(i)(Φ(xs)) 表示 Φ(xs) 中 与 patch Ψi(Φ(x)) 最匹配的一个 patch,即
简单来说,就是将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 之间的欧氏距离:
正则化选项的表达式如下:
这个相当于在水平方向和垂直方向做差值。
将这三项结合起来,利用BP算法,求最终的合成图像 x.
机器学习: 基于MRF和CNN的图像合成的更多相关文章
- 基于Pre-Train的CNN模型的图像分类实验
基于Pre-Train的CNN模型的图像分类实验 MatConvNet工具包提供了好几个在imageNet数据库上训练好的CNN模型,可以利用这个训练好的模型提取图像的特征.本文就利用其中的 “im ...
- FaceRank-人脸打分基于 TensorFlow 的 CNN 模型
FaceRank-人脸打分基于 TensorFlow 的 CNN 模型 隐私 因为隐私问题,训练图片集并不提供,稍微可能会放一些卡通图片. 数据集 130张 128*128 张网络图片,图片名: 1- ...
- 基于区域的CNN(R-CNN)
基于区域的CNN(R-CNN) Region-based CNNs (R-CNNs) 基于区域的卷积神经网络或具有CNN特征的区域(R-CNN)是一种将深度模型应用于目标检测的开创性方法.在本节中,将 ...
- 李宏毅机器学习笔记5:CNN卷积神经网络
李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...
- 基于MatConvNet的CNN图像搜索引擎PicSearch
简介 Picsearch是一种基于卷积神经网络特征的图像搜索引擎. Github:https://github.com/willard-yuan/CNN-for-Image-Retrieval Web ...
- 基于pytorch的CNN、LSTM神经网络模型调参小结
(Demo) 这是最近两个月来的一个小总结,实现的demo已经上传github,里面包含了CNN.LSTM.BiLSTM.GRU以及CNN与LSTM.BiLSTM的结合还有多层多通道CNN.LSTM. ...
- 吴裕雄--天生自然 python数据分析:基于Keras使用CNN神经网络处理手写数据集
import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mp ...
- 基于卷积神经网络CNN的电影推荐系统
本项目使用文本卷积神经网络,并使用MovieLens数据集完成电影推荐的任务. 推荐系统在日常的网络应用中无处不在,比如网上购物.网上买书.新闻app.社交网络.音乐网站.电影网站等等等等,有人的地方 ...
- 基于TensorFlow理解CNN中的padding参数
1 TensorFlow中用到padding的地方 在TensorFlow中用到padding的地方主要有tf.nn.conv2d(),tf.nn.max_pool(),tf.nn.avg_pool( ...
随机推荐
- (转)c++ 中的using namespace std是什么意思,什么时候用
使用std命名空间 98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题.举一个实例,请注意以下两个头文件: // one.hchar func(char);c ...
- (转载)iis7下站点日志默认位置
转自http://www.cnblogs.com/mincyw/p/3425468.html iis7下站点日志默认位置 在iis6时,通过iis管理器的日志配置可以找到站点日志存储的位置. 但是 ...
- php语法同java语法的基本区别(实例项目需求,php才能熟)
php语法同java语法的基本区别(实例项目需求,php才能熟) 一.总结 看下面 二.PHP基本语法以及和Java的区别 .表示字符串相加 ->同Java中的. $作为变量的前缀,除此之外,变 ...
- <h2>1. mongodb介绍</h2>
1. mongodb介绍 2. ppt下载地址 http://download.csdn.net/detail/u014285882/7807105 阅读全文 本文已收录于下面专栏: mongodb使 ...
- 一次修复IncrediBuild Coordinator服务的经历
作者:朱金灿 来源:http://blog.csdn.net/clever101 早上发现部门的分布式编译服务的服务端崩溃了,原来是IncrediBuild Coordinator服务启动不了.启动该 ...
- [ES7] Convert Any Function into an Asynchronous Function
Any function can be made asynchronous, including function expressions, arrow functions, and methods. ...
- 重拾c语言之动态内存分配
动态内存分配 传统数组的缺点: 1数组长度必须事先制定,且仅仅能是长整数不能是变量 2传统形式定义的数组该数组的内存程序无法手动释放 3数组一旦定义,系统就会为该数组分配的存储空间就会一直存在直到该函 ...
- php实现 删除字符串中出现次数最少的字符
php实现 删除字符串中出现次数最少的字符 一.总结 一句话总结:数组排序是改变数组的,而其它函数一般不改变原数据,比如str_replace(); 1.单案例测试通过而多案例测试不通过怎么办? 检 ...
- Linux下停Tomcat服务器,出现Connection refused错误解决办法
错误内容如下 : 2010-9-19 16:09:58 org.apache.catalina.startup.Catalina stopServer 严重: Catalina.stop: java. ...
- STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL
开发环境: Java 1.8 Spring Tool Suite 3.6.4 Spring faramework 4.1.6 Hibernate 4.3.8 Maven 2.9 数据库是MySQL 5 ...