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

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

但是现在我们要换个思路了,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. Hibernate常见异常

    1.数据库编码问题 主要错误信息 WARN: SQL Error: 1366, SQLState: 22001 ... ERROR: Data truncation: Incorrect string ...

  2. js如何准确获取当前页面url网址信息

    1.window.location.href(设置或获取整个 URL 为字符串) var test = window.location.href;alert(test);返回:http://i.cnb ...

  3. 函数返回值 return

    return 返回值 (后面跟的是数据类型) // 数字.字符串.布尔.函数.对象(元素.[].{}.null).未定义return:返回值 1)函数名+括号:fn1() ==> return ...

  4. Linux编程之PING的实现

    PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICM ...

  5. js之Math对象

    ; var num1 = Math.floor(num); // 向下取整 var num2 = Math.ceil(num); // 向上取整 document.write(num2+'-<b ...

  6. asp.net权限认证:Windows认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  7. cmake工具链

    命令project() enable_language()try_compile() 变量CMAKE_<LANG>_COMPILERCMAKE_<LANG>_COMPILER_ ...

  8. Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'

    这是相机调用方法的时候参数错误

  9. HUST 1586 数字排列

    1586 - 数字排列 时间限制:1秒 内存限制:128兆 91 次提交 36 次通过 题目描述 现有n个k位的数字,你的任务是重新安排数字每一位的位置,使得重新安排后这n个数字中最大的数字和最小的数 ...

  10. Unity编程标准导引-Unity中的基本概念-2.1界面概览

    Unity中的基本概念 本文我们介绍Unity中的基本概念,包括:场景.游戏对象.组件.预制件.资源等. 2.1.界面概览 打开Unity之后,我们大概可以看到以上画面,以上画面中即显示了我们最常用到 ...