吴恩达深度学习笔记五:卷积神经网络 人脸识别和风格迁移部分

2023-11-10

1、人脸识别

人脸验证(Face Verification):输入图片和模板图片是否为同一人,一对一问题。
人脸识别(Face Recognition):输入图片,检测是否为多个模板图片中的一个,一对多问题。

一般来说,人脸验证由于范围较小难度较小,而人脸识别需要进行一对多的比对难度较大准确率也较低。

One-Shot Learning: 由于人脸数据库的容量 K 并不固定,如果使用以前的分类方法,在全连接层后面进行softmax分类的话,一旦容量 K 变动,那么需要重新修改和训练模型,代价太大。因此需要一种方法通过卷积模型定义一个编码方式之后可以只进行一次训练,即可以获取输入图片的输入结果,对输入结果进行比较得出识别结果。

现在一般使用 相似函数(similarity function) 来比较两个图片的编码结果:其差异 d 小于某个阀值时认为相同,否则认为不同。

d(img1,img2)τd(img1,img2)>τ d ( i m g 1 , i m g 2 ) ≤ τ → 相 同 d ( i m g 1 , i m g 2 ) > τ → 不 同

Siamese Network: 确定比较方法之后,可以对编码结果进行直接比较。我们知道卷积过程实际上是提取图片特征的过程,全连接层可以看做图片特征的某种编码结果,因此直接使用 全连接的神经元参数 计算,而再不进行softmax等分类。网络结果如下。

这里写图片描述

得到图片 x(1)x(2) x ( 1 ) 和 x ( 2 ) 的 编码(卷积)结果 f(x(1))f(x(1)) f ( x ( 1 ) ) 和 f ( x ( 1 ) ) 后,其相似函数可以表述为编码结果差值的范数

d(x(1),x(2))=||f(x(1))f(x(2))||2 d ( x ( 1 ) , x ( 2 ) ) = | | f ( x ( 1 ) ) − f ( x ( 2 ) ) | | 2

显示为同一个人时 d 值应该很小,不同是 d 应该较大。

Triplet Loss(三重损失函数): 如果任选一张和其他图片进行比较,显然不相同的比例很大,此时模型错误认为不相同的代价太小,不利于模型的训练。因此一次训练引入三张图片:靶(Anchor)、正例图片(Positive)和反例图片(Negative)。
这里写图片描述

因为人脸相同时相似函数 差值d 小,不同时 差值d 大,因此:

d(A,P)d(A,N)=||f(A)f(P)||2||f(A)f(N)||20 d ( A , P ) − d ( A , N ) = | | f ( A ) − f ( P ) | | 2 − | | f ( A ) − f ( N ) | | 2 ≤ 0

然而上式当两个都为0时总成立,这不是我们希望看到的,引入边界(Margin)量:, α α ,有:
||f(A)f(P)||2||f(A)f(N)||2+α0 | | f ( A ) − f ( P ) | | 2 − | | f ( A ) − f ( N ) | | 2 + α ≤ 0

也就是说当人脸不相同时 上式 >=0 , 可以将其作为惩罚因子,Triplet (有三个对象)损失函数为(max函数表示取其中最大值):

L(A,P,N)=max(||f(A)f(P)||2||f(A)f(N)||2+α,0) L ( A , P , N ) = m a x ( | | f ( A ) − f ( P ) | | 2 − | | f ( A ) − f ( N ) | | 2 + α , 0 )

扩展得到 m 个样本的代价函数(cost function):

J=i=1mL(Ai,Pi,Ni) J = ∑ i = 1 m L ( A i , P i , N i )

然后即可以通过梯度下降训练神经网络。另外为了提高准确性需要给模型增加难度,例如不随机选取A,P,N三张图片,选择(A,P)相差较远(如换发型),而(A,N)相差较近的图片。

人脸验证(Verification)可以作为二分类问题处理, 将两张图片输入同一个模型得到全连接层,然后对两个子全连接层进行计算得到二分类结果:相同或是不同。

这里写图片描述

2、神经风格迁移

神经风格迁移(Neural style transfer)的过程很好的体现了卷积网络的工作原理。在卷积得到的第一层特征图(Feature Map)中遍历找到使激活函数值最大(特征最明显?)的9x9块图像区域如下, 其主要提取了一些形状和颜色特征

这里写图片描述

下面是有浅层到深层的变化:

这里写图片描述

放大第五层可以发现,越深的层其检测出的特征越全代表性越强:

这里写图片描述

神经风格迁移生成的图片其内容分别来自内容图和风格图:

这里写图片描述

使用类似人脸识别Triplet Loss的思想,将内容代价函数(Content cost function)和风格代价函数(Style cost function)两个组合作为训练的依据, α,β α , β 是调整权重的超参数:

J(G)=αJcontent(C,G)+βJstyle(S,G) J ( G ) = α ⋅ J c o n t e n t ( C , G ) + β ⋅ J s t y l e ( S , G )

由前面的卷积过程解释可以看出, 每一层的输出 al a l 都是原始数据的特征编码,同人脸识别一样,比较两个图片的编码 al a l 可以得到其差异。并且由于随着 l l 的加深 al a l 越能更全面具体的反映原图,因此,为了能够减少加入风格迁移引起的差异,一般使用中间层数的 l l , 内容代价函数为:

Jcontent(C,G)=12a[l](C)a[l](G)2 J c o n t e n t ( C , G ) = 1 2 ‖ a [ l ] ( C ) − a [ l ] ( G ) ‖ 2

卷积神经网络的一个重要特征是参数共享,也就是说一次卷积时按一次特定的规则对整个图片提取特征,不同的通道是不同方式提取特征的结果,如果一个特征在多个通道中出现且值较大,其所代表的风格(形状(扭曲)和颜色等)也就越明显。反过来,风格明显的区域卷积之后不同通道 al a l 中的对应的激活值都比较大,因此可以是以乘积来表示两个通道间的特征相关性,获取图片的风格矩阵

G[l]kk'=i=1n[l]Hj=1n[l]Wa[l]ijka[l]ijk G [ l ] k k ′ = ∑ i = 1 n H [ l ] ∑ j = 1 n W [ l ] a i j k [ l ] ⋅ a i j k ′ [ l ]

风格代价函数计算风格图(S)和生成图(G)的风格矩阵间的差异:

J[l]style(S,G)=12n[l]Hn[l]Wn[l]Ck=1n[l]Ck'=1n[l]CG[l][S]kk'G[l][G]kk'2 J s t y l e [ l ] ( S , G ) = 1 2 n H [ l ] n W [ l ] n C [ l ] ∑ k = 1 n C [ l ] ∑ k ′ = 1 n C [ l ] ‖ G k k ′ [ l ] [ S ] − G k k ′ [ l ] [ G ] ‖ 2

可能是由于不同通道间提取到的特征的相似度较低,可以使用多层的风格矩阵相加如下, λ λ 是权重超参:

Jstyle(S,G)=λ[l]J[l]style(S,G) J s t y l e ( S , G ) = ∑ λ [ l ] ⋅ J s t y l e [ l ] ( S , G )

3、多维卷积

主要在于大小(维度)的变化, 输入时什么维度,滤波器也是什么维度,通道数保持一致,滤波器个数随意。

二维:

这里写图片描述

一维:

这里写图片描述

三维:

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

吴恩达深度学习笔记五:卷积神经网络 人脸识别和风格迁移部分 的相关文章

  • leetcode——189.轮转数组(C语言2种思路)

    文章目录 1 题目 2 解法1 开辟新数组 2 1 思路 2 2 代码实现 3 解法2 翻转法 3 1 思路 3 2 代码实现 1 题目 给定一个整数数组 nums 将数组中的元素向右轮转 k 个位置 其中 k 是非负数 示例1 输入 nu

随机推荐

  • maven 打包时后缀加时间

    规范的包名对开发及运维人员的记录及备份是有益的 如何在maven 打包时后缀加时间 在原有打包plugin后面加如下代码
  • 数据结构:面试题目-专项练习-栈-习题练习

    1 下列关于栈叙述正确的是 正确答案 D 你的答案 D 正确 算法就是程序 设计算法时只需要考虑数据结构的设计 设计算法时只需要考虑结果的可靠性 以上三种说法都不对 解析 A 程序是数据结构 算法 错 B C 设计一个算法时 考虑的因素很多
  • 迅为i.MX6ULL开发板Platform设备驱动运行测试

    文章目录 1 编译驱动和设备程序 2 编译应用测试程序 3 运行测试 1 编译驱动和设备程序 和前面章节中驱动测试程序一样需要一个Makefile文件 只是将obj m的值改为led device o led driver o Makefi
  • vue项目初始化出现tar ENOENT: no such file or directory错误的解决办法。

    在npm install时 出现了tar ENOENT no such file or directory报错 原因 node的版本问题 解决办法 全局环境下更新node版本 或者使用公司内部包装过后的的 node 按照顺序运行下面的语句
  • 认识磁盘阵列柜性能

    一个 SCSI 硬盘的平均故障间隔时间 MTBF Mean Time Between Failure 都在数万 小时以上 在正常使用情况下 要坏掉一个硬盘已经很不容易了 在同一系统内 两个磁 盘驱动器同时坏掉的机率 更是微乎其微 但是 如果
  • Python中 ddt 数据驱动的小细节

    文章目录 前言 一 什么是DDT 二 安装ddt 三 基本原理和用法 总结 前言 记录ddt用法的一些小细节 一 什么是DDT DDT是 Data Driven Tests 的缩写 数据驱动测试 既然是测试 那么就要与单元测试框架一起使用
  • IDEA 4种解决控制台中文乱码问题

    前言 IntelliJ IDEA 如果不进行配置的话 运行程序时控制台中文乱码问题会非常严重 严重影响我们对信息的获取和程序的跟踪 我总结以下 4 点用于解决控制台中文乱码问题 希望有助于大家 注意 下面根据我日常工作的经验总结 排序的先后
  • 什么是吉布斯采样(Gibbs Sampling)

    目录 1 蒙特卡洛方法 1 1 蒙特卡洛方法的作用 1 2 非均匀分布采样 1 3 分布p x 不好采样怎么办 2 什么是吉布斯采样 2 1 马尔可夫链 2 1 1 什么是马尔可夫链呢 2 1 2 为什么我们要引入马尔可夫链 2 1 3 对
  • 快速学会git版本管理——创建分支和合并分支

    首先创建分支 git创建分支只需要使用switch 命令 git switch c 分支名 创建分支并切换到该分支 大家看后面的括号里已经变成了dev 说明我们切换成功了 然后想要合并分支就在 创建的分支中 进行提交修改的内容 还是通过 a
  • 5G QoS控制原理专题详解-QoS控制原理(2)

    相关文章会在公众号同步更新 最近工作忙 更新完公众号后 经常容易忘记再CSDN上再发 公众号上的文章更新的能快一些 各位同学有兴趣可以关注一下 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避
  • OOM(内存溢出)造成原因及解决方案

    一 概念 内存溢出 Out Of Memory 简称OOM 是指应用系统中存在无法回收的内存或使用的内存过多 最终使得程序运行要用到的内存大于能提供的最大内存 二 造成原因 2 1 内存泄漏 由于长期保持某些资源的引用 垃圾回收器无法回收它
  • first season seventh episode,The entire city is blacked out!(全城大停电,Chandler有好事???)

    Scene Central Perk Rachel is introducing Phoebe who is playing her guitar for the crowd Rachel Everybody Shh shhh Uhhh C
  • 【Java项目】多文件传输

    1 前言 为了实现一个C S框架应用 客户端向服务器请求资源 采用传统的BIO模式传输 问题 但当客户端数量增加 传输效率下降 尤其是多个客户端请求1G文件时 传输大概有十多分钟 问题分析 客户端所需要的资源都是通过服务器单独发送 当请求增
  • Angular6项目构建

    Angular6项目构建 安装Nodejs长期支持版本 LTS 设置npm淘宝代理 npm config set registry https registry npm taobao org npm install g angular cl
  • linux 使用chomd给文件授权 报错 -bash: chomd: 未找到命令

    1 简介 chmod是一个Linux Unix命令 用于更改文件或目录的权限 2 解决方案 以下是一些常见的解决方案 输入命令时检查有无拼写错误 确认您是否具有执行该命令所需的权限 检查您的系统是否已安装此命令 您可以尝试使用whereis
  • 忘记iPhone锁屏密码?三种方法帮你顺利解决!

    不论是苹果手机用户还是安卓手机用户 如果开机的锁屏密码忘记的话 应该是比较麻烦的一件事情 iPhone用户如果连续尝试6次密码都不对的话 iPhone将会自动锁死 也就变成了我们常说的 砖机 不过在iPhone锁死之前 我们还有三种方法可以
  • 在WindowsXP系统下搭建PPPoE服务器总结

    对与路由器的测试中遇到一个问题就是PPPoE的测试 具体如下 一 组网图如下 二 要确保WindowsXP系统的服务中Workstation Telephony Remote Access Connection Manager Routin
  • 已获万赞,最新Android通用流行框架大全

    前言 2021全年从开头到结尾似乎就没多少好消息 这里我说的是整个互联网行业 并没有单单挑出某个公司或者某个细分领域 而对于广大Android开发者来说 找工作似乎也变得越来越难了 2021年1月 我在51job搜索了一下北京地区的Andr
  • 基于STM32 的IIC 模拟主机编写

    最近在学习STM32 的IIC IO 模拟主机方式 好像失败了 include myiic h include delay h MCU VERSION DATA 作者 other Function IIC
  • 吴恩达深度学习笔记五:卷积神经网络 人脸识别和风格迁移部分

    1 人脸识别 人脸验证 Face Verification 输入图片和模板图片是否为同一人 一对一问题 人脸识别 Face Recognition 输入图片 检测是否为多个模板图片中的一个 一对多问题 一般来说 人脸验证由于范围较小难度较小