机器学习:利用卷积神经网络实现图像风格迁移 (一)

相信很多人都对之前大名鼎鼎的 Prisma 早有耳闻,Prisma 能够将一张普通的图像转换成各种艺术风格的图像,今天,我们将要介绍一下Prisma 这款软件背后的算法原理。就是发表于 2016 CVPR 一篇文章,

“ Image Style Transfer Using Convolutional Neural Networks”

算法的流程图主要如下:

总得来说,就是利用一个训练好的卷积神经网络 VGG-19,这个网络在ImageNet 上已经训练过了。

给定一张风格图像 a 和一张普通图像 p,风格图像经过VGG-19 的时候在每个卷积层会得到很多 feature maps, 这些feature maps 组成一个集合 A,同样的,普通图像 p 通过 VGG-19 的时候也会得到很多 feature maps,这些feature maps 组成一个集合 P,然后生成一张随机噪声图像 x, 随机噪声图像 x 通过VGG-19 的时候也会生成很多feature maps,这些 feature maps 构成集合 G 和 F 分别对应集合 A 和 P, 最终的优化函数是希望调整 x 让 随机噪声图像 x 最后看起来既保持普通图像 p 的内容, 又有一定的风格图像 a 的风格。

content representation

在建立目标函数之前,我们需要先给出一些定义: 在CNN 中, 假设某一 layer 含有 Nl 个 filters, 那么将会生成 Nl 个 feature maps,每个 feature map 的维度为 Ml , Ml 是 feature map 的 高与宽的乘积。所以每一层 feature maps 的集合可以表示为 Fl∈RNl×Ml , Flij 表示第 i个 filter在 position j 上的 activation。

所以,我们可以给出 content 的 cost function:

Lcontent(p,x,l)=12∑ij(Flij?Plij)

style representation

为了建立风格的representation,我们先利用 Gram matrix 去表示每一层各个 feature maps 之间的关系,Gl∈RNl×Nl , Glij 是 feature maps i,j 的内积:

Glij=∑kFlikFljk

利用 Gram matrix,我们可以建立每一层的关于 style 的 cost :

El=14N2lM2l∑i,j(Glij?Alij)2

结合所有层,可以得到总的cost

Lstyle(a,x)=∑l=0LwlEl

最后将 content 和 style 的 cost 相结合,最终可以得到:

Ltotal(p,a,x)=αLcontent(p,x)+βLstyle(a,x)

α,β 表示权值,在建立 Lcontent 的时候,用到了 VGG-19 的 conv4_2 层,而在建立 Lstyle 的时候,用到了VGG-19 的 conv1_1, conv2_1, conv3_1, conv4_1 以及 conv5_1。

下一篇博客里,我们将介绍基于 TensorFlow 的代码实现。

时间: 2024-11-05 12:24:55

机器学习:利用卷积神经网络实现图像风格迁移 (一)的相关文章

Distill详述「可微图像参数化」:神经网络可视化和风格迁移利器!

近日,期刊平台 Distill 发布了谷歌研究人员的一篇文章,介绍一个适用于神经网络可视化和风格迁移的强大工具:可微图像参数化.这篇文章从多个方面介绍了该工具. 图像分类神经网络拥有卓越的图像生成能力.DeepDream [1].风格迁移 [2] 和特征可视化 [3] 等技术利用这种能力作为探索神经网络内部原理的强大工具,并基于神经网络把艺术创作推进了一小步. 所有这些技术基本上以相同的方式工作.计算机视觉领域使用的神经网络拥有图像的丰富内部表征.我们可以使用该表征描述我们希望图像具备的特性(如

图像风格迁移原理

所谓图像风格迁移,是指利用算法学习著名画作的风格,然后再把这种风格应用到另外一张图片上的技术.著名的图像处理应用Prisma是利用风格迁移技术,普通用户的照片自动变换为具有艺术家风格的图片. 一.图像风格迁移的原理 1.原始图像风格迁移的原理 在学习原始的图像风格迁移之前,可以在先看看ImageNet图像识别模型VGGNet(微调(Fine-tune)原理).事实上,可以这样理解VGGNet的结构:前面的卷积层是从图像中提取“特征”,而后面的全连接层把图片的“特征”转换为类别概率.其中,VGGN

Neuromation新研究:利用卷积神经网络进行儿童骨龄评估

近日,Neuromation 团队在 Medium 上撰文介绍其最新研究成果:利用卷积神经网络(CNN)评估儿童骨龄,这一自动骨龄评估系统可以得到与放射科专家相似或更好的结果.该团队评估了手骨不同区域,发现仅对掌骨和近端指骨进行评估,得到的结果与对整个手骨进行评估的结果相差无几.为了克服放射图像的质量和多样性问题,该团队引入了严格的清理和标准化过程,以增强模型的鲁棒性和准确率,提升骨龄评估的准确率.提高结果的可复现性以及临床医生的效率. Alexander 的论文<Pediatric Bone

图像风格迁移

样式迁移 如果你是一位摄影爱好者,也许接触过滤镜.它能改变照片的颜色样式,从而使风景照更加锐利或者令人像更加美白.但一个滤镜通常只能改变照片的某个方面.如果要照片达到理想中的样式,经常需要尝试大量不同的组合,其复杂程度不亚于模型调参. 在本节中,我们将介绍如何使用卷积神经网络自动将某图像中的样式应用在另一图像之上,即样式迁移(style transfer)[1].这里我们需要两张输入图像,一张是内容图像,另一张是样式图像,我们将使用神经网络修改内容图像使其在样式上接近样式图像.图9.12中的内容

机器学习三 卷积神经网络作业

本来这门课程http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html 作业是用卷积神经网络做半监督学习,这个还没完全解决,于是先从基础的开始,用keras 实现cifar10. 以下是代码 1 # -*- coding: utf-8 -*- 2 __author__ = 'Administrator' 3 4 5 from keras.datasets import cifar10 6 from keras.utils import np_uti

卷积神经网络在图像、语言、时间序列的的应用&mdash;&mdash;笔记

本文内容来自名为convolutional networks for images, speech, and time-series的论文 作者:Yann LeCun, Yoshua Bengio 由于BP网络在复杂.高维.非线性上强大的学习分类能力,被广泛应用于图像识别.语言识别等领域.在.在传统有模式识别的模型中,通常是先用一个人工设计的特征提取器从输入中提取相关的特征,消除掉不相关的特征,然后再把提取到的特征送给传统的分类器.而现在我们可以用一个多层的全连接的网络来代代替这两者.具体做法是

利用卷积神经网络对大规模可穿戴传感器数据进行运动分类

Exercise Motion Classification from Large-scale Wearable Sensor Data Using Convolutional Neural Networks 本文使用CNN来对可穿戴传感器收集的大规模运动数据进行分类,同时对传感器数据转换为不同的图像格式输入做出了比较.最佳性能配置以92.1%的准确率将50种健身房运动分类. 作者在这里使用的是CNN而不是RNN(常用来处理时序数据),是因为每次的重复运动练习(如举哑铃)是花费的时间是非常短的少

利用卷积神经网络处理cifar图像分类

这是一个图像分类的比赛CIFAR( CIFAR-10 - Object Recognition in Images ) 首先我们需要下载数据文件,地址: http://www.cs.toronto.edu/~kriz/cifar.html CIFAR-10数据集包含10个类别的60000个32x32彩色图像,每个类别6000个图像.有50000张训练图像和10000张测试图像. 数据集分为五个训练批次和一个测试批次,每个批次具有10000张图像.测试批次包含每个类别中恰好1000张随机选择的图像

Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_训练模型

原理就不多讲了,直接上代码,有详细注释. #coding:utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data',one_hot=True) #每个批次的大小 batch_size = 100 n_batch = mnist.train._num_examples // batch_