今天我给大家带来一篇来自谷歌的文章,众所周知,谷歌是全世界最有情怀,最讲究技术的公司,比我们天朝的莆田广告商良心多了。还有就是前段时间的最强大脑,莆田广告商的那个小机器,也就忽悠忽悠行外人了,懂的人深深知道。感觉自己就是黑子,当然,最强大脑节目组本身就是演员。

传统的进行人脸识别的模型一般都是这样:

但是现在我们要换个思路了,facenet直接学习图像到欧式空间上的映射,那么如果两张图片在欧式空间的距离很近,是不是说明就是很相似?如果离得远就不相似,也就不是同一个人?

下面的图详细的说明了,具体过程。

你看如果是一个人的照片,他们的距离就会低于这个阀值,此处应该是1.05左右。这个有点类似于LDA的思想了。类内的距离就小,类间的距离就大,其实本质上并没有什么差别。

Facenet的结构如下图:

前面就是一个传统的卷积神经网络,然后在求L2范数之前进行归一化,就建立了这个嵌入空间,最后的损失函数,就是本文的最大亮点。

Triplet loss三重损失函数:以前我们的损失函数一般都是一个的,或者是两个的。这里弄三个,结构图如下:

我来带大家理解这个结构图。现在我们有一个样本名字叫anchor,还有两个样本名字叫positive,另外一个叫Negative。一开始啊,我们都以为这个三个人是亲兄弟,但是呢Negative一个是隔壁老王的,而且这个人和我们的Anchor关系很好,这不行,这是仇人的孩子,我们得让这两个人远离,于是我们就让神经网络学习,让positive和anchor近一点,让Negative滚蛋。(当然例子可能取的不恰当,还请见谅,哈哈)

课外补充:在高维或者无穷维中,距离的度量没有意义的,因为他们都在一个超球面上,你又如何度量他们的远近呢(这就是为什么不能直接用KNN分类的原因,他在处理高维数据就玩不转了),所以我们才要用深度卷积神经网络进行训练啊,至于其中的原理,神经网络就是一个黑匣子,我不懂啊,鬼知道他是怎么玩的。

记住下面的所有数据都是经过归一化的,没有经过归一化求距离就是胡扯!

分别代表三个不同的样本,我们一定想要:

这个是我们前面所说的参数。

那么我们的优化函数就出来了:

优化问题解决:

但是呢,知道这些还不够,为什么呢,一个算法的优劣,还要通过他的时间复杂度来判断,这里一定要确保他的收敛速度。

那么我们怎做呢,其实也很简单,假设给你一个anchor,我们找一个positive就要在这一类中找到一个最难分类的,什么样叫最难分类呢,就是在欧式空间距离最远的那个,但是属于一类,这叫hard_positive,另外找nepositive那就找最近的,这样不就完美解决了么。当然在找nepositive很容易产生局部最优,所以我们要满足:。这叫semi-hard,防止找到他一类里了。

本文的CNN结构:

一种是来自M. D. Zeiler and R. Fergus. Visualizing and understanding convolutional networks. CoRR, abs/1311.2901, 2013. 2, 4, 6。

结构:

另一种来自:C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed,D. Anguelov, D. Erhan, V. Vanhoucke,and A. Rabinovich.Going deeper with convolutions. CoRR, abs/1409.4842,2014. 2, 4, 5, 6, 9

结构:

结果在LFW上正确率很高,在这里我就不说了。

论文:FaceNet: A Unified Embedding for Face Recognition and Clustering

FaceNet---深度学习与人脸识别的二次结合的更多相关文章

  1. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  2. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  3. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  4. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  5. 基于深度学习的人脸识别系统Win10 环境安装与配置(python+opencv+tensorflow)

    一.需要下载的软件.环境及文件 (由于之前见识短浅,对Anaconda这个工具不了解,所以需要对安装过程做出改变:就是Python3.7.2的下载安装是可选的,因为Anaconda已经为我们解决Pyt ...

  6. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

    摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择人脸图片.视频进行检 ...

  7. face recognition[翻译][深度学习理解人脸]

    本文译自<Deep learning for understanding faces: Machines may be just as good, or better, than humans& ...

  8. 深度学习课程笔记(十二) Matrix Capsule

    深度学习课程笔记(十二) Matrix Capsule with EM Routing  2018-02-02  21:21:09  Paper: https://openreview.net/pdf ...

  9. 【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)

    上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...

随机推荐

  1. docker mac 安装并初始化GO环境

    mac 环境下,安装docker 下载链接:https://download.docker.com/mac/stable/Docker.dmg 下载完毕后,直接双击安装,下一步直到最后 创建docke ...

  2. XML解析之DOM解析技术案例

    Java代码: package com.xushouwei.xml; import java.io.File; import javax.xml.parsers.DocumentBuilder; im ...

  3. Javascript正则表达式完全学习手册

    正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...

  4. 最简化模型2——css3分阶段动画效果(经过实测)之转动的div

    @keyframes mymove{    0%{top: 0;left: 0;transform:rotate(50deg);}    10%{top: 100px;left: 50px;trans ...

  5. docker的资源限制cpuset cpuquota memory

    总结 目前,公司7u已经不再使用lxc,转而使用libcontainer 即native docker对cpuquota的支持目前是有问题的,一般大家使用docker的时候,主要是对memory,cp ...

  6. Notification的功能与用法

    Notification是显示在手机状态的通知——手机状态栏位于手机屏幕的最上方,那里一般显示了手机当前的网络状态.时间等.Notification所代表的是一种具有全局效果的通知,程序一般通过Not ...

  7. Eclipse中应用的调试

    作为编程人员,程序的调试是一项基本功.在不使用IDE的时候,程序的调试多数是通过日志或者输入语句(System.out.println)的方式.可以把程序运行的轨迹或者程序运行过程中的状态显示给用户, ...

  8. js控制公共模板中,不同页面中的导航选中效果-判断当前的url

    用js的做法也很多.比较推荐的方法是判断当前的url,然后根据url在nav中的位置,来对nav中的某个导航增加选中样式,代码如下: <!doctype html> <html la ...

  9. 《微信小程序七日谈》- 第六天:小程序devtool隐藏的秘密

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩: 第五 ...

  10. Google中Gson的使用解析json数据-------学习篇

    之前写过一篇Gson解析json数据的基本应用,这里不多说,直接上例子. 有兴趣的可以先阅读下之前那篇,这里附上链接: http://www.cnblogs.com/Ant-soldier/p/632 ...