版权声明:本文为CSDN博主「张雨石」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/stdcoutzyx/article/details/46687471

参考文章:https://www.cnblogs.com/lijie-blog/p/10168073.html

参考文章:https://blog.csdn.net/Fire_Light_/article/details/79592804

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

论文地址:https://arxiv.org/pdf/1503.03832.pdf

1、FaceNet

与其他的深度学习方法在人脸上的应用不同,FaceNet并没有用传统的softmax的方式去进行分类学习,然后抽取其中某一层作为特征,而是直接进行端对端学习一个从图像到欧式空间的编码方法,然后基于这个编码再做人脸识别、人脸验证和人脸聚类等。去掉了最后的softmax,而是用元组计算距离的方式来进行模型的训练。元组的选择非常重要,选的好可以很快的收敛。

2、网络结构

这篇文章中,最大的创新点应该是提出不同的损失函数triplet,直接是优化特征本身,用特征空间上的点的距离来表示两张图像是否是同一类。网络结构如下:

上图是文章中所采用的网络结构,上图步骤可以描述为:

  1.前面部分采用一个CNN结构提取特征,

  2.CNN之后接一个特征归一化(使其特征的||f(x)||2=1,这样子,所有图像的特征都会被映射到一个超球面上),

  3.再接入一个embedding层(嵌入函数),嵌入过程可以表达为一个函数,即把图像x通过函数f映射到d维欧式空间。

  4.此外,作者对嵌入函数f(x)的值,即值阈,做了限制。使得x的映射f(x)在一个超球面上。

  5.接着,再去优化这些特征,而文章这里提出了一个新的损失函数,triplet损失函数(优化函数),而这也是文章最大的特点所在。

3、目标函数

所谓的三元组就是三个样例,如(anchor, pos, neg),其中,x和p是同一类,x和n是不同类。那么学习的过程就是学到一种表示,对于尽可能多的三元组,使得anchor和pos的距离,小于anchor和neg的距离。即:

所以,变换一下,得到目标函数

目标函数的含义就是对于不满足条件的三元组,进行优化;对于满足条件的三元组,就pass先不管。

4、三元组的选择

很少的数据就可以产生很多的三元组,如果三元组选的不得法,那么模型要很久很久才能收敛。因而,三元组的选择特别重要。

因此需要采取两种显而易见的方法避免这个问题:

(1)离线更新三元组(每隔n步)。采用最近的网络模型的检测点并计算数据集的子集的argmin和argmax(局部最优)。

(2)在线更新三元组。在mini-batch上选择不好的正(类内)/负(类间)训练模型。(一个mini-batch可以训练出一个子模型)

本文中采用上述第二种方法。本文中,采用以下方法:

(1)使用大量 mini-batch,从而得到几千个不好的训练模型。

(2)计算mini-batch上的argmin和argmax。

总结:以上所有过程博主概括为:为了快速收敛模型-->需要找到训练的不好的mini-batch上的差模型(负样本)-->从而找到不满足约束条件/使损失增大的三元组。

在本文中,训练集的每个mini-batch包含:

1. 每个身份的40个人脸

2. 随机放一些负样本人脸

5、网络模型

文中尝试了两个CNN结构,其参数如下:

网络1:Zeiler&Fergus architecture

网络2: GoogLeNet

人脸识别算法FaceNet论文解读相关推荐

  1. 人脸识别:FaceNet论文详解

    引入 随着深度学习的出现,CV领域突破很多,甚至掀起了一股CV界的创业浪潮,当次风口浪尖之时,Google岂能缺席.特贡献出FaceNet再次刷新LFW上人脸验证的效果记录. 本文是阅读FaceNet ...

  2. 人脸识别算法实验:facenet人脸识别率测试

    前言 本文记录对人脸识别算法facenet在亚洲人脸数据集上准确率的详细测试结果. 2020-4-7 日更新每个人三张底片 2020-4-2 日更新每个人一张图片作为数据和两张图片作为数据. 数据集 ...

  3. 【华为云技术分享】人脸识别算法的训练之路(下)

    人脸识别算法的训练之路(上) 人脸识别 人脸识别问题本质是一个分类问题,即每一个人作为一类进行分类检测,但实际应用过程中会出现很多问题.第一,人脸类别很多,如果要识别一个城镇的所有人,那么分类类别就将 ...

  4. 基于深度学习的人脸识别算法

    基于深度学习的人脸识别算法 简介 Contrastive Loss Triplet Loss Center Loss A-Softmax Loss 参考文献: 简介 我们经常能从电影中看到各种神奇的人 ...

  5. 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法

    出处"来自微信公众号:我爱计算机视觉" 新思路!商汤开源利用无标注数据大幅提高精度的人脸识别算法 这篇论文解决的问题与现实中的人脸识别应用场景密切相关,其假设已经有了少量已经标注的 ...

  6. 3d人脸识别算法opencv_热招职位算法类

    1.资深算法工程师leader-AI平台 地点:深圳 工作职责 1.推进机器学习及计算机视觉领域的核心算法: 2.构建机器学习及计算机视觉领域的关键应用: 3.将算法于实际应用场景相结合,构建算法和应 ...

  7. 人脸识别(Facenet)

    人脸识别是目前应用非常广泛的一种生物识别技术,与其他生物识别技术(指纹识别,掌形识别,眼虹膜识别和声音识别)相比,人脸识别具有以下优势: 其他每种生物识别方法都需要一些人的配合动作,而人脸识别不需要被 ...

  8. 深度篇——人脸识别(一)  ArcFace 论文 翻译

    返回主目录 返回 人脸识别 目录 下一章:深度篇--人脸识别(二) 人脸识别代码 insight_face_pro 项目讲解 目录内容: 深度篇--人脸识别(一) ArcFace 论文 翻译 深度篇- ...

  9. 有了它,你的照片能“屏蔽”人脸识别算法

    [导语]:一款保护个人照片隐私的 AI 工具. 简介 如今强大的面部识别系统的激增对个人隐私构成了真正的威胁.人人都可以在互联网上搜索数据,可以在个体不知情的情况下训练出高度精确的人脸识别模型.我们需 ...

最新文章

  1. python压缩与解压缩
  2. cefsharp已停止工作_windows资源管理器已停止工作怎么解决
  3. oracle表压缩比,oracle的compress 特性介绍
  4. git 分支管理策略 与 物理实现 --author by阮一峰 小鱼
  5. Web App开发入门
  6. SLAM--搭建自己的视觉里程计VO-RGBD相机(一)
  7. Smartbi:用Excel制作移动端的九型人格测试
  8. C语言中 malloc函数介绍
  9. ObjectARX_AutoCAD创建矩形功能实现
  10. AI健身,是消费者的伪命题还是资本的好生意?
  11. 对 云寻觅贴吧(http://tieba.yunxunmi.com/)的简要分析
  12. AWD准备的一些脚本和工具及其使用方法
  13. 可以添加Google adsense广告和阿里妈妈的博客汇总
  14. 学计算机的什么是镜像,一、什么是windows镜像?什么是Ghost?它们有什么优缺点?...
  15. 林轩田机器学习基石课程个人笔记-第六讲
  16. 2.3.2 浮点数的加减运算
  17. 初学者完成HBuilder X网站制作
  18. MySQL--数据模型
  19. 使用 HBuilderX 打包IOS 和 安卓
  20. 简繁转换API接口,免费好用

热门文章

  1. 文件上传漏洞ED01-CMS v20180505 存在任意文件上传漏洞
  2. Python编程思想(9):条件语句(if)
  3. html 图片是块元素吗,HTML+CSS:html元素分类之块级元素、内联元素、内联块级元素...
  4. 编辑本段陈安之经典语录
  5. c语言递归法解释,给我解释一下C语言递归函数?
  6. IOS开发之——企业版IDP的申请及“In House”发布
  7. Oracle中nvl(), nvl2()函数的区别
  8. QT设计中,样式不一致的问题(以QComboBox的下拉箭头为例)
  9. 应用于车内消毒杀菌的UVC便携灭菌灯
  10. 随便想到,群聊天的数据库简单设计