人脸识别的一般步骤:人脸检测->人脸对齐->人脸特征提取->(计算人脸的差值)三元组损失/中心损失->差值小于某一阈值则为同一个人,差值大于某一阈值则不是同一人。

本文将对每一个步骤的技术现状,进行分析,并尝试实现其中最优的几种技术。

一、现有算法

    1.非监督学习算法

2. 监督学习算法

从以上描述可以看出

1) 传统人脸检测方法能在CPU上也能达到很高的速度,其中libfasedetection,速度达到367/1533FPS

且在100的误检率基础上,召回率高到0.8236

2) 深度学习算法虽然FasterRCNN的精度很高,但是速度却非常满,只有GPU 3FPS,只能用在竞赛环境。

SFD的精度高达0.9438,而且在GPU上的速度能达36FPS,速度也能满足要求。

还有fastMTCN/ICC-CNN/MTCNN性能都不错,都可以进行尝试。

二、本文尝试的算法

1.MTCNN

    1.1 MTCNN的网络结构

MTCNN 由三个神经网络组成,分别是P-Net,R-Net,O-Net。在使用这些网络之前,首先要先将原始图片缩放到不同尺度,形成一个“图像金字塔”,然后在分别通过P-Net,R-Net,O-Net。如下图所示:

       

            

      1.2 MTCNN的损失函数

针对人脸判定部分使用交叉熵损失,针对框回归和关键点判定使用L2损失

  人脸判定部分:

人脸框:

人脸关键点:

总损失函数:这三部分损失各自乘以自身的权重再加起来,就形成最后的总损失。

在训练P-Net和R-Net时,更关心框位置的准确性,而较少关注关键点判定的损失,因此关键点判定损失的权重很小。对于O-Net,关键点判定损失的权重较大。

1.3 使用MTCNN进行人脸检测   

            (1) 数据集:

              使用LFW 人脸数据库,在 LFW 数据库中人脸的光照条件 、姿态多种多样,有的人脸还存在部分遮挡的情况,因此识别难度较大 。现在 , LFW 数据库性能测评已经成为人脸识别算法性能的一个重要指标 。
                 1) 下载数据集:在网站 http ://vis-www.cs.umass.edu/lfw/lfw. tgz 下载 LFW 数据库,该数据是完全开源的。
                 2)  解压数据集:

cd ~/datasets
mkdir -p lfw/raw
tar xvf ~/Downloads/lfw.tgz -C ./lfw/raw --strip-components=1

3) 查看数据集:每个文件夹代表一个人名

(2)在LFW 数据库上的人脸检测和对齐

                1) 下开源代码:git clone https://github.com/davidsandberg/facenet.git

2) 进行人脸检测和对齐:

python src/align/align_dataset_mtcnn.py \~/datasets/lfw/raw \~/datasets/lfw/lfw_mtcnnpy_160 \--image_size 160 --margin 32 \--random_order

该命令会创建一个../lfw/lfw_mtcnnpy_160的文件夹,并将所高对齐好的人脸图像存放到这个文件夹中,数据的结构和原先../lfw/raw 中相同 。 参数 --image_size 160 --margin 32 的含义是在MTCNN 检测得到的人脸框的基础上缩小32像素(训练时使用的数据偏大),并缩放到 160× 160 大小 。 因此最后得到的对齐后的图像都是 160 x l60 像素的 。这样的话,就成功地从原始图像中检测并对齐了人脸 。

(3)源码介绍

MTCNN 的实现主要在文件夹facenet/src/align 中。其中, detect_ face.py中定义了 MTCNN 的模型结构,由 P-Net 、R-Net 、O_Net 三部分组成 。这三部分网络已经提供好了预训练的模型,模型数据分别对应文件 detl.npy 、det2.npy 、 det3.npy 。 align_ dataset_mtcnn.py 是使用 MTCNN 的模型进行人脸的检测和对齐的入口代码  该文件夹中还有两个文件 align_dataset. py 和align_ dlib.py ,官们都是使用 dlib 中的传统方法对人脸进行检测,性能比MTCNN 稍差。

2. SFD

3. fastMTCNN

4. FasterRCNN

5. 非深度学习的libfasedetection.

【参考论文】

1.人脸检测(十九)--人脸检测综述(2018.2):   https://blog.csdn.net/App_12062011/article/details/80537518

2.OpenCV学习笔记(11):libfacedetection人脸检测的配置与使用 :https://blog.csdn.net/cv_jason/article/details/78819088

3.人脸检测:MTCNN https://blog.csdn.net/tinyzhao/article/details/53236191

4.《21个项目玩转深度学习:基于TensorFlow的实践详解》

人脸识别之人脸检测算法相关推荐

  1. 基于matlab活体检测,人脸识别中活体检测算法综述.PDF

    人脸识别中的活体检测算法综述 SIGAI 2018.9.19 原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 1. 什么是活体检测? --> 判断捕捉到的 ...

  2. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  3. CVPR 2020 | 腾讯优图17篇论文入选,含类比学习、人脸识别、物体检测、行人重识别等领域...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文来源:腾讯优图 全球计算机视觉顶级会议CVPR2020  (IEEE Conf ...

  4. 深度学习自学(八):人脸识别主要场景与算法实现

    人脸识别流程 众所众知,严格定义上的人脸识别分为四个步骤: ①人脸检测:从图片中准确定位到人脸 ②人脸矫正(对齐): 检测到的人脸,可能角度不是很正,需要使其对齐 ③特征提取:对矫正后的人脸进行特征提 ...

  5. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  6. 人脸识别(7)---国内人脸识别技术 十大算法公司排名

    国内人脸识别技术 十大算法公司排名 科技特讯11月18日讯:1.云从科技 背靠"计算机视觉之父",中科院实验室创业团队创立云从科技 云从科技团队成员除了来自中科大的校友外,还来自中 ...

  7. 基于虹软使用Java实现人脸识别、人脸比对、活性检测等

    基于虹软使用Java实现人脸识别.人脸比对.活性检测等 虹软: 免费,高级版本试用 支持在线.离线 有 Java SDK,C++ SDK 一.注册虹软开发者平台 点击注册 注册完成后可在"我 ...

  8. Android实现人脸识别(人脸检测)初识

    title: Android实现人脸识别(人脸检测)初识 categories: Android tags: 人脸识别 人脸检测 相机处理 date: 2020-05-21 11:35:51 介绍 本 ...

  9. 如何评价美颜api中人脸识别和人脸检测的准确度?

    人脸识别和人脸检测识别是美颜api中的技术支撑之一,在理想状态下,人脸识别准确率越高越好,但实际情况中,经常会受到逆光.暗光.强光.识别角度等诸多实际因素的影响,因此,脱离使用场景单独考量算法的识别准 ...

  10. Python | 人脸识别系统(人脸识别、活体检测、背景模糊、关键点检测)

    本博客为人脸识别系统项目简介 项目GitHub完整源代码地址:Su-Face-Recognition: A face recognition for user logining 一.运行环境 本系统能 ...

最新文章

  1. Py之lightgbm:lightgbm的简介、安装、使用方法之详细攻略
  2. XenDesktop7.12配置StoreFront使用HTTPS
  3. ACM公选第六节下DP基础(当复习了)2020.4.16-5.10补
  4. vscode 新建python 终端
  5. mockjs语法规范、设置mockjs拦截响应时间、Mock.Random占位符生成随机数据
  6. 【Tyvj1185】【codevs1296】【BZOJ1588】营业额统计,Splay练习
  7. Net-Snmp安装配置
  8. 「管理数学基础」4.3 模糊数学:模糊关系与模糊矩阵、模糊关系的运算与合成、模糊等价关系
  9. java面试题 返回值类型不同,可以重载吗,为什么?
  10. 批处理 批量s扫1433_批处理批量字符替换
  11. 华中农业计算机硕士就业,华中农业大学好就业吗?附华中农业大学就业率最高的专业名单...
  12. 《经济学通识》一、前言
  13. 怎么定位门面位置_教您,如何在高德和腾讯定位自己的店铺位置
  14. unity+cardboard细节总结
  15. IOS 监控屏幕旋转
  16. 计算机算法——进入计算机世界
  17. PSIM中的光伏阵列使用(solar module)
  18. 为什么机器人不会抢走你的工作?
  19. hiberfil文件的删除
  20. 移动平均法的两个版本

热门文章

  1. Java线程池及其实现原理
  2. 制作无线充电器以及对功率参数的测量
  3. MATLAB排序滤波
  4. mysql 安装 大_MYSQL安装问题amp;使用大收集 - 包子 - ITeye博客
  5. java web前端_JavaWeb前端: JavaScript 简介
  6. upload组件多个文件上传、自定义文件列表显示及手动上传
  7. 乘车码小程序全面上线?公交卡呢?不需要的!
  8. 关于婚姻你不能不知的事
  9. 苹果iPhone Xs发布之后,手机圈的大佬纷纷长舒一口气!
  10. Photoshop快速把人物图片转黑白素描画(1)