吴恩达《深度学习》第四门课(4)特殊应用:人脸识别和神经风格迁移
4.1什么是人脸识别
(1)人脸验证(face verification):1对1,输入一个照片或者名字或者ID,然后判断这个人是否是本人。
(2)人脸识别(face recognition):1对多,判断这个人是否是系统中的某一个人。
4.2One-shot学习
(1)比如一个公司的员工,一般每个人只给一张工作照(如4个人),这时网络输出五个单元,分别代表他们以及都不是。这样设计会有两个明显的问题:第一是每个人只给了一张照片,训练样本太少;第二是如果这时候又来了一个员工,那么网络的输出得重新调整,显然不合理。
(2)实际使用的方法,是训练一个差异度函数(degree of difference between images)的网络,给网络输入两张照片,如果是同一个人则输出很小的值(差异很小),如果不是同一个人则输出很大的值,这时只要将来的人与系统中的照片逐一比较即可。同时如果来了新员工,也只需要将他的照片放入到系统中就可以了。
4.3Siamese网络
(1)Siamese的输出不经过softmax激活函数做分类,直接就是输出一个向量,相当于把每个人映射成一个向量,然后判断两张图片是否是同一个人时只需要,分别输入这同一个网络,然后求输出向量的范数,如下所示:
4.4Triplet损失
(1)首先训练集中必须有相同人的照片(网络应用的时候没这个要求),三张照片为一组(分别叫做Anchor,Positive,Negative),如下图所示:
(2)损失函数如下,将两张相同的图片的距离比两张不同图片的距离的差值(注意此处差值已经是一个负值了)小于某个阈值时,其误差视为0:
4.5面部验证与二分类
(1)可以用二分类的思想来训练上面的Siamese网络,同样是用同一个网络,输出两张照片的向量,这时候在后面将向量对应元素做差的绝对值作为一个特征,再创建一层逻辑回归即可,输出0、1,如下等式所示:
(2)用这种方法训练网络,每次是使用两张照片,而不是三张照片了。
(3)不管是上面提到的两种训练方式的哪一种,当在应用网络的时候,不需要在系统中存储大量的照片,可以提前把照片输入网络计算出来的向量存在系统中即可,这样在实际应用时就非常的快乐。
4.6什么是神经风格转换
(1)下面就是一个风格转换的例子,左边是内容图(C),右边是风格图(S),下面是生成图(G)
4.7什么是深度卷积网络
(1)浅层检测到简单的一些边缘,越到后面,图形越来越复杂。
4.8代价函数
(1)相似度越好,代价函数越小,所以就是最小化下面的代价函数,包括内容相似度和风格相似度,(α,β是调节两者的权重,其实一个就够了):
(2)生成图G一开始就是随机初始化,下面是生成图随着最小化代价函数的变化过程(其中1是内容图,2是风格图):
4.9内容代价函数
(1)用隐含层l来计算内容代价,如果l是一个很小的数,比如说隐含层1,这个代价函数就会使你的生成图片像素上非常接近你的内容图片。如果你用非常深的层,那么如果内容图上有狗,那么它就会确保生成图片里面有一只狗。所以在实际中,这个l既不会选择太浅也不会选择太深。用预训练的VGG网络模型。取中间的l层,这时将内容图与生成图分别输入到VGG中得到第l层的激活值,然后求其相似度,就是按元素对应相减:
4.10风格代价函数
(1)需要着重理解:一个通道是由一个卷积核卷积生成的,假如这个卷积核擅长识别垂直的线段,那么这个通道将会有很多垂直线段,另一个通道的卷积核擅长识别橙色,那么这个通道可能就表现出许多橙色,如下图所示:
(2)那么什么是通道间的相关性呢?如果一个通道出现垂直线的地方,更容易出现橙色,即二者同时出现或者不出现的概率大那么二者就相关了。
(3)说两张图的风格相似,可以看成两张图各自不同通道之间的相关性是相同的,那么这两张图就风格相同(或者类似)。
(4)以下是一种不是很标准(之所以说不标准是因为没有减去各自的均值再相乘)的求相关系数的方法,即两个通道间对应元素相乘,然后求和,最后结果越大说明越相关:
(5)最后只要把风格图和生成图在隐含层l层的各自的相关系数做差再求范数即可(前面的归一化可要可不要,因为还有超参数α、β):
(6)最后就形成了总的代价函数:
4.11一维到三维推广
(1)一维数据,如心电图,这时候的卷积核如下所示,一个14维与一个5维卷积核卷积形成一个10维输出:
(2)三维数据,如CT图,一个3D对象,如14*14*14(这里没有出现通道数,宽度和深度是后面两个),这时候5卷积核比如说5*5*5*1(假设输入照片是1通道的),这时候输出10*10*10*5。需要时刻记住的是卷积核的通道数一定要和输入的通道数相同。
转载于:https://www.cnblogs.com/ys99/p/9332519.html
吴恩达《深度学习》第四门课(4)特殊应用:人脸识别和神经风格迁移相关推荐
- 吴恩达深度学习4.4笔记_Convolutional Neural Networks_人脸识别和神经风格转换
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...
- Stanford CS230深度学习(六)目标检测、人脸识别和神经风格迁移
在CS230的lecture 6中主要吴恩达老师讲述了一些关于机器学习和深度学习的tips,用一个触发词台灯的例子教我们如何快速的解决实际中遇到的问题,这节课主要是偏思维上的了解,还是要实际问题实际分 ...
- 温州大学《深度学习》课程课件(十、人脸识别与神经风格迁移)
这学期我上的另一门课是本科生的<深度学习>,主要用的是吴恩达老师的<深度学习>视频课的内容. 使用教材:吴恩达<深度学习>课程笔记 课外参考书:<深度学习&g ...
- 在等吴恩达深度学习第5课的时候,你可以先看看第4课的笔记
大数据文摘作品 编译:党晓芊.元元.龙牧雪 等待吴恩达放出深度学习第5课的时候,你还能做什么?今天,大数据文摘给大家带来了加拿大银行首席分析师Ryan Shrott的吴恩达深度学习第4课学习笔记,一共 ...
- 吴恩达深度学习第四课第一周 卷积神经网络
文章目录 前言 一.计算机视觉(引言) 二.边缘检测示例(过滤器) 三.更多边缘检测内容(由亮到暗还是由暗到亮?) 四.Padding(Valid.Same.p) 五.卷积步长(s) 六.三维卷积(通 ...
- 《吴恩达深度学习》第一课第四周任意层的神经网络实现及BUG处理
目录 一.实现 1.吴恩达提供的工具函数 sigmoid sigmoid求导 relu relu求导 2.实现代码 导包和配置 初始化参数 前向运算 计算损失 后向运算 更新参数 组装模型 3.问题及 ...
- 吴恩达深度学习笔记——第一课第四周
深层神经网络 内容概述 深层神经网络概述 前向传播和反向传播(Forward and backward propagation) 前向传播 反向传播 搭建神经网络块 超参数 代码作业--helper ...
- 吴恩达深度学习课程完整笔记(DeepLearning.ai)
为了方便学习深度学习课程,转载一个吴恩达老师的一个深度学习笔记,转载的网站是下面这个 https://blog.csdn.net/red_stone1/article/details/80207815 ...
- 【深度学习】吴恩达深度学习-Course1神经网络与深度学习-第四周深度神经网络的关键概念编程(下)——深度神经网络用于图像分类:应用
在阅读这篇文章之前,请您先阅读:[深度学习]吴恩达深度学习-Course1神经网络与深度学习-第四周深度神经网络的关键概念编程(上)--一步步建立深度神经网络,这篇文章是本篇文章的前篇,没有前篇的基础 ...
- 吴恩达深度学习课程之第四门课 卷积神经网络 第二周 深度卷积网络
本文参考黄海广主编针对吴恩达深度学习课程DeepLearning.ai <深度学习课程 笔记 (V5.1 )> 第二周 深度卷积网络 2.1 为什么要进行实例探究?(Why look at ...
最新文章
- 看了《为什么你应该写博客》有感
- 从特殊到一般-C#中的类
- C/C++ OpenCV之Sobel边缘检测
- HttpModule的认识
- Python爬虫教程之Scrapy 框架
- VS C# 获取文件夹下的所有文件
- 容器技术Docker K8s 47 服务网格(ASM)-阿里云服务网络概述
- 用简道云做一个可以账号密码登陆和找回密码并查询修改已填信息的公开表单
- 产品经理面试必问(附解析)
- 贴片晶振邻层挖空背后的原理
- php 支付宝用户信息授权,支付宝登录获取用户信息授权
- Redhat之NIS
- MX550性能怎么样 mx550 属于什么档次的显卡
- 路由器的CPU和存储器
- 如何把一个qmake的Ubuntu手机应用打包为一个snap应用
- nba app android,NBA app官方版
- 启明星辰携手联想云 共建企业云服务新生态
- 领峰:如何通过今日黄金市场价格制定交易策略
- 如何用计算机算余数,数学余数在计算机的用途
- 企业在ERP系统下的全面预算管理系统的实现
热门文章
- 你真的理解图像处理算法SIFT吗?
- 好消息 | 顶级 AI 华人学者拟加入清华大学自动化系!
- AI算法工程师手册!
- 《Python编程从入门到实践》记录之字典嵌套
- 2019年财政收支分析_2019年模锻行业经济运行情况分析
- (转)C++ main函数中参数argc和argv含义及用法
- 差分隐私 python_[宜配屋]听图阁
- person p = new person();_Python函数__new__及__init__作用及区别解析
- linux eclipse gtk,Ubuntu+Eclipse下开发GTK+应用程序
- endpointimpl怎么填参数_python爬虫19 | 爬虫遇到需要的登录的网站怎么办?用这3招轻松搞定!...