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. ThinkPHP - 6 - 学习笔记(2015.5.4)

    解决:OneThink 站点无法被友言uyan后台识别 打开友言uyan插件功能,但OneThink站点无法被友言uyan后台检测到.页面生成的uyan代码为: <!-- UY BEGIN -- ...

  2. os模块大全详情

    python常用模块目录 一:os模块分类: python os.walk详解 二:os模块大全表 序号 方法 方法 1 os.access(path, mode) 检验权限模式 2 os.chdir ...

  3. IT工具使用

    linux 其他知识目录 常用快捷键总结 博客view  code 删除,先删除,再清除格式

  4. 两张神图介绍python3和 2.x与 3.x 的区别

    有感与第一张图, 做了第二张图.

  5. LeetCode 888. Fair Candy Swap(C++)

    题目: Alice and Bob have candy bars of different sizes: A[i] is the size of the i-th bar of candy that ...

  6. PSP表格记录功能

    关于王者荣耀交流协会的PSP表格记录功能,就是针对我们平时做表格时候遇到问题的简化与解决.这部分功能可以记录我们开始时间,暂停时间,结束时间,并自动计算出各个时间段的净时间.只要你开始工作时点一下开始 ...

  7. SGU 126 Boxes(模拟题|二进制)

    Translate:Sgu/126 126. 盒子 time limit per test: 0.5 sec. memory limit per test: 4096 KB 有两个盒子. 第一个盒子里 ...

  8. DP---基本思想 具体实现 经典题目 POJ1160 POJ1037

    POJ1160, post office.动态规划的经典题目.呃,又是经典题目,DP部分的经典题目怎就这么多.木有办法,事实就这样. 求:在村庄内建邮局,要使村庄到邮局的距离和最小. 设有m个村庄,分 ...

  9. 第5题 查找字符串中的最长回文字符串---Manacher算法

    转载:https://www.felix021.com/blog/read.php?2040 首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一 ...

  10. 第14章 Linux账号管理与ACL权限设置

    Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和 ...