4.4特殊应用:人脸识别和神经网络风格转换

觉得有用的话,欢迎一起讨论相互学习~Follow Me

4.6什么是神经网络风格转换neural style transfer

  • 将原图片作为内容图片Content,风格图片Style,生成的图片用Generated image 表示。


4.7深度卷积神经网络在学什么What are deep ConvNets learning

Zeiler, Matthew D., and Rob Fergus. "Visualizing and understanding convolutional networks." European conference on computer vision. Springer, Cham, 2014.

  • 假设你在学习的神经网络结构如图:
  • 将训练集中的所有图片都经过神经网络,然后弄明白哪一张图片最大限度的激活了神经网络中的特定单元。
    • 原文如下:

      • Pick a unit in layer 1.Find the nine image patches that maximize the unit's activation.
      • Repeat for other units.
    • 个人理解:
      • 对于第一层卷积层,将数据集中的所有图片都通过第一层卷积层。输出其通过第一层卷积层后的数值,挑选出最大的九个数值对应的九张图片块(个人理解为是一张图片经过感受野所得到的子图片)。将这个算法运用到第一个卷积层上的所有神经元上,输出一个缩略特征图。

  • 其中更深层次的神经元可以看见数据集原始图像中更大的区域,可以假设,每一个神经元都会影响神经网络更深层的输出

Layer1

Layer2

Layer3

Layer4

Layer5


4.8神经风格迁移系统Cost function

Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.

  • 对于神经网络风格迁移系统,判断所生成的图片G的好坏很重要,需要有一个函数J作为损失函数(cost function)用来评价风格迁移的好坏。

    • 首先将J(G)风格迁移损失函数切分为两个部分一个是内容图片部分(Content),另一个是生成图片的部分(Generated image G).然后会把结果加上一个风格代价函数,一个关于(Style)S和(Generated image)G图片的函数--用来描述风格图片S和生成图片G的相似度。
    • 然后使用\(\alpha\)和\(\beta\)两个参数来权衡内容代价和风格代价之间的权重。
    • \[J(G)=\alpha J_{Content}(C,G)+\beta J_{style}(S,G)\]

算法流程

  1. 初始化生成图像G:

    • 尺寸为\(100*100*3\),或者是\(500*500*3\)或者是任何你想要的尺寸。
  2. 使用梯度下降最小化损失函数J(G)
    • 即 \[G=G-\frac{\alpha}{2G}J(G)\]

示例

  • 如果原始图像为如下左图,风格图片为如下右图:
  • 图片迭代改变过程如下图所示:

4.9神经网络风格迁移内容代价函数 Content cost function

图像内容代价函数

Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.

\[J(G)=\alpha J_{Content}(C,G)+\beta J_{style}(S,G)\]

  • 使用第l个隐藏层上的值来计算内容代价函数

    • 如果l值很小,那么生成的图像在像素上很像内容图像
    • 如果使用的l很大,那么生成的图像会偏风格化,而模糊原始图像的内容
    • 所以一般l不会选的太深也不会太浅,会选择在网络中层数的中间位置
  • 使用\(a^{[l](C)}和a^{[l](G)}\)表示层数l的激活值。
    • 如果这两个值相似,则表示这两张图片上的内容相似
    • \(J_{content}(C,G)=(a^{[l](C)}-a^{[l](G)})^{2}\)

4.9神经网络风格迁移风格代价函数 Content cost function

Gatys L A, Ecker A S, Bethge M. A Neural Algorithm of Artistic Style[J]. Computer Science, 2015.

  • 假设使用神经网络模型中的深度l作为风格的深度测量

    • 则把第l层不同通道之间激活值的相关系数作为风格--Define style as correlation between activations across channels.
  • 对于一个具有5个通道的激活值特征图而言,不同通道对应位置可以组成激活函数值对。通过不同通道上下对应位置的激活函数值对可以计算不同通道之间的相关系数。
  • 不同的通道对应不同的特征子图,对应不同卷积核上神经元识别的特征结果
  • 两个通道的激活值具有很大的相关性,意思是:而。当两个神经元的激活值具有很大的

图像风格诠释

  • 红色框中的神经元识别的是具有竖直条纹的特征
  • 黄色框中的神经元识别的是具有橙色纹理的特征
  • 假如红色和黄色框中的激活值具有很大的相关性,表明具有竖直条纹的子图很可能是橙色纹理的
  • 如果相关性不大,表明竖直条纹的子图很大概率不是橙色的
  • 相关性即是表明两个特征同时出现的概率

图像风格矩阵

  • 为了研究风格图像或者生成图像的风格,使用第l层神经元的激活值来测量图片的风格。
  • i,j,k分别表示该位置的高度和宽度以及对应的通道数,则第l层,(i,j,k)位置处的激活函数值可被表示为:\(a^{[l]}_{(i,j,k)}\)
  • 用\(G^{[L](S)}_{K,K'}\)表示S代表风格图片风格计算,L表示在第L层上计算图像风格,K和K'是用来计算相关性的L层的两个通道。风格图片的风格计算公式可如下表示:
    \[G^{[L](S)}_{K,K'}=\sum^{n^{[l]}_{H}}_{i=1}\sum^{n^{[l]}_{W}}_{j=1}a^{[l](S)}_{i,j,k}a^{[l](S)}_{i,j,k'}\]
    生成图像的风格计算公式可如下表示:
    \[G^{[L](G)}_{K,K'}=\sum^{n^{[l]}_{H}}_{i=1}\sum^{n^{[l]}_{W}}_{j=1}a^{[l](G)}_{i,j,k}a^{[l](G)}_{i,j,k'}\]
  • 在线性代数中,图像风格矩阵(Style matrix)也被称为“Gram matrix”,\(G^{[l]}\)是最终计算出的图像风格,其大小为\(n^{[l]}_{c} * n^{[l]}_{c}\)正方形的矩阵,其中\(n^{[l]}_{c}\)表示第l层特征图的通道数。即\(G^{[l]}\)会由\(G^{[L](S)}_{K,K'}\)生成,其中参数k和k'会遍历\(n^{[l]}_{c}\),即L层上特征图中的所有通道。

图像风格代价函数

  • 当然如果对每一层都是用风格代价函数会让结果变得更好,此时表达式可表示为:
    \[J_{style}(S,G)=\sum_{l}\lambda^{[l]}J_{style}^{[l]}(S,G)\]
  • 其中,S表示风格图像,G表示生成图像,l表示遍历所有层,\(\lambda\)表示一些额外的超参数,这样能够在考虑风格切换的代价函数时同时考虑浅层的低级和更深层的高级特征。

风格迁移总体代价函数

  • 如果在所有层上都计算风格迁移的内容和风格代价函数,则其可表示为:
    \[J(G)=\alpha J_{content}(C,G)+\beta J_{style}(S,G)\]

[DeeplearningAI笔记]卷积神经网络4.6-4.10神经网络风格迁移的更多相关文章

  1. [DeeplearningAI笔记]卷积神经网络3.10候选区域region proposals与R-CNN

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.10 region proposals候选区域与R-CNN 基于滑动窗口的目标检测算法将原始图片分割成小的样本图片,并传入分 ...

  2. [DeeplearningAI笔记]卷积神经网络2.9-2.10迁移学习与数据增强

    4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9迁移学习 迁移学习的基础知识已经介绍过,本篇博文将介绍提高的部分. 提高迁移学习的速度 可以将迁移学习模型冻结的部分看 ...

  3. [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...

  4. [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...

  5. [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...

  6. [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...

  7. [DeeplearningAI笔记]卷积神经网络4.1-4.5 人脸识别/one-shot learning/Siamase网络/Triplet损失/将面部识别转化为二分类问题

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.1什么是人脸识别 Face verification人脸验证 VS face recogniti ...

  8. [DeeplearningAI笔记]卷积神经网络2.5-2.7 Network in Network/1*1卷积/Inception网络/GoogleNet

    4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Inception网络 --Szegedy C, Liu W, Jia Y, et al. Going deepe ...

  9. [DeeplearningAI笔记]卷积神经网络2.3-2.4深度残差网络

    4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 [残差网络]--He K, Zhang X, Ren S, et al. Deep Residual Learni ...

随机推荐

  1. daterangepicker时间段插件

    1.序言: daterangepicker是Bootstrap的一个时间组件,使用很方便 用于选择日期范围的JavaScript组件. 设计用于Bootstrap CSS框架. 它最初是为了改善报表而 ...

  2. nginx配置,php安装

    yum -y install libxml2 libxml2-develyum -y install libxslt-devel yum -y install bzip2-devel yum -y i ...

  3. Python:模块学习——os模块

    os模块提供了多个访问操作系统服务的功能 os模块中一些重要的函数和变量 os.name 显示当前使用平台 os.getcwd() 显示当前Python脚本工作路径 os.listdir('dirna ...

  4. firefox插件Firebug的使用教程

    什么是Firebug 从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每个页面模块:要调试 javascript给页面增加一 ...

  5. android入门 — Service

    Service完全在后台运行,没有用户界面.使用的时候先创建Service子类,然后在AndroidManifest.xml中进行注册,同时可以通过<intent-filter.../>进 ...

  6. (打补丁 )patch

    前言: diff:逐行比较文件的不同,并且显示出来. patch: 打补丁工具,将补丁打到老文件里面,也就是diff左边的那个文件,使得老文件和新文件一样 格式:diff [选项] 老文件 新文件 格 ...

  7. jdbc 1.0

    1. jdbc : java数据库连接技术 2.主要用到的类及接口 Class Driver ManagerDriver Connection Statement PreparedStatement ...

  8. PSP 进度条 柱状图 饼状图

    9号 类别 开始时间 结束时间 间隔 净时间 燃尽图 8::00 8:20 0 20分钟 站立会议 8:20 8:50 0 30分钟 读构建之法 9:20 13:20 120分钟 120分钟 四人小组 ...

  9. paoding rose controller包及文件名命名规则

    1.包命名规则:xxx.xxx.controllers(否则扫描不到)

  10. JMeter脚本强化之检查点

    上一篇讲述了对脚本做参数化的两种方法,并对参数化设置结果做了简单的验证,就是通过添加断言.本篇将详细一点介绍怎么使用断言做文本检查,或者叫做设置检查点. 首先来看看下面的三个图,这三个图是用查看结果树 ...