什么是人脸识别:人脸验证和人脸识别的区别,如下图:

        One-shot learning:人脸识别所面临的挑战就是需要解决一次学习(one-shot learning)问题。这意味着在绝大多数人脸识别应用中你需要通过单单一张图像或者单单一个人脸图像就能去识别这个人,因为大多数人脸识别系统中每个人可能只有一张图像。要让人脸识别能够做到一次学习,需要做的是学习相似(similarity)函数,如下图,输入两张图像然后输出两张图像的差异值。在识别过程中,如果两张图像的差异值小于某个阈值τ(是一个超参数),那么这时就能预测两张图像是同一个人,如果差异值大于τ,就能预测这是不同的两个人。这是解决人脸验证问题的一个可行办法。

        Siamese网络:学习相似函数的一个方式是用Siamese网络,如下图,输入图像x1,然后通过一系列卷积、池化和全连接层,最终得到特征向量,假如它的长度为128,图像编码。假如你要比较两张图像的话,例如这里的第一张和第二张图像,你需要做的就是将第二张图像输入到有同样参数的同样的神经网络,然后得到一个不同的128维向量。然后你需要定义这两种图像的距离d,可把d看作距离函数,即范数来计算它们的差值,这一般被称为Siamese神经网络架构。如DeepFace系统。

        Triplet loss:要想通过学习神经网络的参数来得到优质的人脸图像编码,一个方法就是定义三元组损失函数(triplet loss function)然后应用梯度下降。为了应用三元组损失函数,你需要比较成对的图像,如下图,看一个anchor图像和一个positive图像距离很接近;看一个anchor图像和一个negative图像距离很远。三元组损失代表你通常会同时看三张图像。你想要的网络的参数或编码能够满足以下特性:‖||f(A)-f(P)||2+α≤‖||f(A)-f(N)||2, α也是超参数。为了确保网络对于所有的编码不会总是输出0,也为了确保它不会把所有的编码都设成互相相等的,需要一个α。

三元组损失函数的定义基于三张图像A、P、N,如下图,L(A,P,N)=max(||f(A)-f(P)||2-||f(A)-f(N)||2+α, 0),最小化损失函数L(A,P,N)。代价函数(cost function)是训练集中单个三元组损失的总和。训练学习算法,对代价函数应用梯度下降。为了定义三元组的数据集,需要成对的A和P。为了构建训练集,尽可能选择难训练(hard to train)的三元组A、P、N,即所有的三元组都满足条件:d(A, P)+ α≤d(A,N)并且d(A,P)≈d(A,N),不能随机地选择三元组。

    Face verification and binary classification:将人类识别当成一个二分类问题,可以选取Siamese网络,如下图,使其同时计算比如128维的向量,然后将其输入到逻辑回归单元,然后进行预测,如果是相同的人,输出为1,若是不同的人输出为0,这就把人脸识别问题转换成一个二分类问题。训练这种系统时,可以替换triplet loss的方法。

GitHub: https://github.com/fengbingchun/NN_Test

吴恩达老师深度学习视频课笔记:人脸识别相关推荐

  1. 吴恩达老师深度学习视频课笔记:逻辑回归公式推导及C++实现

    逻辑回归(Logistic Regression)是一个二分分类算法.逻辑回归的目标是最小化其预测与训练数据之间的误差.为了训练逻辑回归模型中的参数w和b,需要定义一个成本函数(cost functi ...

  2. 吴恩达老师深度学习视频课笔记:总结

    吴恩达老师深度学习视频课网址为:https://mooc.study.163.com/smartSpec/detail/1001319001.htm/?utm_source=weibo.com& ...

  3. 吴恩达老师深度学习视频课笔记:深度卷积网络

            Why look at case studies?:过去几年,计算机视觉研究中的大量研究都集中在如何把卷积层.池化层以及全连接层这些基本构件组合起来形成有效的卷积神经网络.找感觉最好的 ...

  4. 吴恩达老师深度学习视频课笔记:卷积神经网络

            计算机视觉:包括图像分类(image classification).目标检测(object detection).风格迁移(neural style transfer)等等.     ...

  5. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)

            进行误差分析:可进行人工统计或可同时并行评估几个想法.进行误差分析时,你应该找一组错误例子,可能在你的开发集里或者在你的测试集里,观察错误标记的例子,看看假阳性(false posit ...

  6. 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架

            Tuning process(调试处理):神经网络的调整会涉及到许多不同超参数的设置.需要调试的重要超参数一般包括:学习率.momentum.mini-batch size.隐藏单元( ...

  7. 吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)

            多隐含层神经网络的推导步骤非常类似于单隐含层神经网络的步骤,只不过是多重复几遍. 关于单隐含层神经网络公式的推导可以参考: http://blog.csdn.net/fengbingc ...

  8. 吴恩达老师深度学习视频课笔记:单隐含层神经网络公式推导及C++实现(二分类)

    关于逻辑回归的公式推导和实现可以参考: http://blog.csdn.net/fengbingchun/article/details/79346691 下面是在逻辑回归的基础上,对单隐含层的神经 ...

  9. 吴恩达老师深度学习视频课笔记:序列模型和注意力机制

    基础模型:比如你想通过输入一个法语句子来将它翻译成一个英语句子,如下图,seq2seq模型,用x<1>一直到x<5>来表示输入句子的单词,然后我们用y<1>到y&l ...

最新文章

  1. Nagios 安装文档
  2. BZOJ1086 [SCOI2005]王室联邦 【dfs + 贪心】
  3. 【知识星球】Attention网络结构上新,聚焦才能赢
  4. 17天代码 品优购_品优购(IDEA版)-第一天
  5. vlc集成c#_C#WinForm程序调用VLC异常
  6. 每天进步一点点——Linux系统时间来处理
  7. iOS-UICollectionView自定义布局
  8. 微软 Build 2019 对开发者意味着什么?
  9. 解决了一个堆破坏问题
  10. 缩短与时间服务器同步时间,局域网内时间服务器架设与客户端设置
  11. 【杂谈】蓝屏修复杂谈
  12. 关于解决miui10国际版刷入之后无法认证的问题
  13. Beetl页面模板文档
  14. 每日学习笔记(13)
  15. HomeKit 设备接入协议
  16. 如何写论文的report(一)
  17. 基于BP神经网络使用开盘价、最高价、最低价预测收盘价
  18. 解析二分查找时间复杂度
  19. 传图取字:微信小程序自动把图片上的文字提取出来
  20. LFI/RFI漏洞相关

热门文章

  1. CloudCompare 的简单的使用说明
  2. 基于caffe的度量学习实现(Siamese network Triplet network)
  3. Linux那些事儿 之 戏说USB(15)设备
  4. epoll ET模式服务器和客户端源码例子
  5. 接入层的流程和非接入层
  6. C++的STL 堆 实现获取数组堆第K大的数
  7. OpenC 仿射变换
  8. 关于命名空间namespace
  9. mysql like 命中索引
  10. 【机器学习基石笔记】八、噪声和错误