相信很多人都对之前大名鼎鼎的 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 的代码实现。

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

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

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

  2. python神经网络构建图_如何用卷积神经网络构建图像?

    原标题:如何用卷积神经网络构建图像? 原标题 |Everything you need to know to master Convolutional Neural Networks 作者 | Tir ...

  3. 深度学习-卷积神经网络实现图像风格转换

    盛夏,闲鱼式的生活也越发充满味道.烈日,在高高的天上散发着火炉的气息.小浪怀念着在海边度假的日子,但是内心的使命感把他拉回了现实. 卷积神经网络可以实现图像风格的转换.小浪也来写个程序,实现下这个功能 ...

  4. 基于卷积神经网络实现图片风格的迁移 1

    卷积神经网络详解 一.实验介绍 1.1 实验内容 Prisma 是最近很火的一款APP,它能够将一张普通的图像转换成各种艺术风格的图像.本课程基于卷积神经网络,使用Caffe框架,探讨图片风格迁移背后 ...

  5. 基于神经网络的图像风格迁移解析与实现

    概述 最近对图像风格迁移这种技术突然非常感兴趣,大概是之前读到了一篇关于对抗生成网络生成逼真人脸的论文文献,于是对这种技术很是好奇,大致了解了一下这个领域.我大致将其分为三个研究领域: 基于传统的机器 ...

  6. 卷积神经网络识别图像,卷积神经网络图像处理

    如何通过人工神经网络实现图像识别 人工神经网络(Artificial Neural Networks)(简称ANN)系统从20 世纪40 年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储.并 ...

  7. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  8. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

  9. 卷积神经网络精确率不增反降_姿态跟踪论文研读--(1)利用卷积神经网络学习人体姿态估计特征...

    摘要 本文介绍了一种新的结构,就是利用多层卷积神经网络结构和模块化学习技术来习得低维特征和高维弱空间模型,以此来进行人体姿态估计.无约束的人体姿态估计是计算机视觉领域中最困难,最棘手的问题之一,而我们 ...

最新文章

  1. PHP获取毫秒时间戳,利用microtime()函数
  2. Android Studio(十二):打包多个发布渠道的apk文件
  3. Resharper 5.0 注册码
  4. php mysql 常用语句_PHP mysql基本语句指令
  5. mysql innodb 死锁_mysql innodb 死锁分析
  6. 陶晶驰stm32_陶晶驰串口屏学习日记(1)
  7. c#初学12-12-为什么mian函数必须是static的
  8. 作者:吴东亚(1972-),女,中国电子技术标准化研究院信息技术研究中心高级工程师、副主任,国家OID注册中心副主任。...
  9. android qq空间 sdk,Android中使用腾讯的SDK完成分享图文到qq空间
  10. Unix安装BerkeleyDB
  11. 转载:牛客练习赛17 c 规律题
  12. 第十三章 Spring消息(待续)
  13. Python迭代器的生成与学习笔记
  14. Windows远程桌面连接(有密码和无密码连接)
  15. Ubuntu下gcc安装及使用
  16. 驴妈妈旅游携手法大大,打造分销商签约新体验
  17. 【5G UP】5G QoS参数那点事儿
  18. WeaveSocket框架-Unity太空大战游戏-客户端-3
  19. 树莓派开发板入门学习笔记2:[转]树莓派系统在VM中能做什么
  20. 《惢客创业日记》2020.11.15-17(周日)谁有谁的四十不惑?

热门文章

  1. 哈哈!12万行代码堆出来个「蔡徐坤」
  2. 基本运算电路之---反向比例运算电路(1)
  3. 【EA-MT4】外汇程序化交易之枢轴点
  4. 为什么学习信息学竞赛?
  5. CA认证的原理和流程以及https完整通信过程
  6. 万字详解整个数据仓库设计体系
  7. 登出(logout.jsp) - Cookie清除无效问题
  8. 2022年安全员-B证考试题及安全员-B证证考试
  9. 细思极恐!家中电视机正在监视所有联网设备
  10. bat - 批量替换文件名字符