人脸检测技术——深度学习算法原理

article/2025/10/4 17:33:12

人脸检测技术——深度学习算法原理

  • 人脸检测技术——深度学习算法原理
    • 1. 通用目标检测网络
      • 1.1 faster-rcnn检测算法的基本原理
      • 1.2 faster-rcnn应用于人脸检测
    • 2. 专门应用于人脸检测的卷积神经网络
      • 2.1 专门用于人脸检测的卷积神经网络的发展现状
      • 2.2 cascadeCNN
      • 2.3 MTCNN
    • 3. 人脸检测最新进展
    • 参考文献
    • 微信公众号同步

人脸检测技术——深度学习算法原理

  上篇推送介绍了人脸检测技术的基本概念,人脸检测与人脸识别的区别,以及通过代码向读者直观地展示了人脸检测技术;这篇文章,将主要介绍人脸检测技术的算法原理
  人脸检测指的是检测出图片中的人脸,并能够标示出人脸的位置。人脸检测技术主要完成了两件工作:第一,判断图片中是否包含人脸区域;第二,如果图片中存在人脸,将人脸的位置预测出来。
  人脸检测分为前深度学习时期深度学习时期:前深度学习时期,人们主要将传统的计算机视觉算法运用于人脸检测,传统的计算机视觉算法,依赖于人工提取特征,然后使用这些人工特征来训练一个检测器;在深度学习时期,人们尝试将卷积神经网络应用于人脸检测这一问题,一般有两种方式:一种是将适用于多种任务的目标检测网络(如faster-rcnn网络,yolo网络)应用于人脸检测任务;另一种是研究专门的人脸检测网络
  本文接下来将主要简述基于深度学习技术的人脸检测算法原理:首先,讲述faster-rcnn网络的基本原理,以及如何将faster-rcnn应用于人脸检测;接着,讲述专门用于人脸检测的卷积神经网络。

1. 通用目标检测网络

  通用目标检测网络有faster-rcnn,yolo,ssd以及最新的基于点检测的等网络。只要有相应的数据集,这些网络一般可用来检测任意目标,比如皮卡丘、车辆、人脸等。

1.1 faster-rcnn检测算法的基本原理

  faster-rcnn[1]是一种通用的目标检测网络。faster-rcnn网络结构大体上可以分为三个部分。第一部分是用来提取图片特征,生成feature maps的卷积层。第二部分是候选区域生成网络——RPN。第三部分是对候选区域进行分类和调整的网络。其网络结构如下图所示。
faster-rcnn
  这幅图应按照从下往上看。最下面是image,这是整个网络的输入。image的上面是卷积层conv layers。在这里,卷积层主要是用来提取图片特征,生成feature maps。提取特征的卷积层,可以使用Vgg Net网络结构,也可以使用Res Net网络结构。image数据经过conv layers后得到feature maps。faster rcnn网络的后几层,便是基于feature maps来计算的。
  真正使faster-rcnn具备检测能力的是RPN层和Roi Pooling层。其中,RPN层用于生成候选区域。Roi Pooling层使用RPN层生成的候选区域,以及conv layers最后一层的输出,来生成固定大小的proposal feature map。
  classifier层以Roi Pooling层的输出作为输入,进行全连接运算,并使用Softmax来预测候选区域所属的类别。

1.2 faster-rcnn应用于人脸检测

  将faster-rcnn应用于人脸检测,需要在训练这个网络的时候,使用人脸检测数据集。github上有基于caffe的faster rcnn的实现[2]。读者可以基于这个工程,使用一些开源或者自己标注的人脸检测数据集,训练出一个用于人脸检测的模型。

2. 专门应用于人脸检测的卷积神经网络

2.1 专门用于人脸检测的卷积神经网络的发展现状

  自深度学习在计算机视觉领域大放异彩后,人们设计了一些专门应用于人脸检测的网络结构。级联卷积神经网络,常被人们应用在人脸检测任务。例如,cascadeCNN,MTCNN等。在专门用于人脸检测的卷积神经网络中,最经典的网络当属MTCNN。MTCNN在github上有一些源码,以及一些已经训练好的模型。读者可以下载到本地机器上运行。

2.2 cascadeCNN

  cascadeCNN[3]是一种比较快速的人脸检测网络。该网络在FDDB数据集上可以达到85.1%以上的准确率。
FDDB数据集
  cascadeCNN的网络结构如下图所示。
cascadeCNN网络架构
  calibration-net的网络结构如下图所示。该网络用于校正人脸框。
calibration-net网络结构

2.3 MTCNN

  MTCNN全称是Multitask Cascaded Convolutional Networks,是2016年中国科学院深圳先进技术研究院的研究成果。MTCNN将人脸检测与人脸关键点检测放在了一起,大体上可以分为三层网络结构:PNet、RNet和ONet
MTCNN
  该网络的结构如下图所示。
MTCNN网络结构
  第一步P-Net是一个全卷积网络,通过浅层的CNN用来生成候选区域。使用Bounding box regression和非极大值抑制(NMS)来过滤并校正候区域。
  第二步N-Net对候选区域进行调整。将通过P-Net的候选窗输入R-Net中,拒绝掉大部分效果比较差的候选区域,使用Bounding box regression和NMS进一步优化候选区域。
  第三步O-Net是一个较为复杂的卷积神经网络。O-Net输出最终的人脸框和特征点位置。这个网络最终输出人脸框的位置,以及五个人脸关键点。

3. 人脸检测最新进展

  以上的成果是17年之前的,这些经典的网络有的在工业界取得非常成熟的应用。下面推荐两篇18年的论文以及一篇19年的文章,有兴趣的同学,可以细读并复现一下这些文章,三篇文章分别是Face Detection Using Improved Faster RCNN[6]、Hoi Feature Agglomeration Networks for Single Stage Face Detection[7]、Single-Shot Scale-Aware Network for Real-Time Face Detection[8]。这三篇文章均在一些开源的人脸数据集如WIDER FACE上均取得不错的效果;其中,最后一篇文章在VGA分辨率下对人脸的检测速度可以达到82.1 FPS。
  本文简单介绍了人脸检测的发展历程。主要阐述了可以应用于人脸检测的通用目标检测网络faster rcnn,以及专门用于人脸检测的级联卷积神经网络cascadeCNN和MTCNN;这些网络是比较经典的人脸检测网络,是跟进最新人脸检测的基础,有兴趣的读者可以通过阅读原文来加深理解。
  下一篇文章,将基于一个网络结构和一个数据集,来讲述如何训练一个人脸检测模型。敬请关注!


参考文献

[1] Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
[2] faster rcnn实现 https://github.com/rbgirshick/py-faster-rcnn
[3] Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 5325-5334.
[4] Zhang K , Zhang Z , Li Z , et al. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks[J]. IEEE Signal Processing Letters, 2016, 23(10):1499-1503.
[5] MTCNN代码 https://github.com/kpzhang93/MTCNN_face_detection_alignment
[6] C. Zhang, X. Xu, D. Tu Face Detection Using Improved Faster RCNN. arXiv preprint arXiv:1802.02142, 2018.
[7] J. Zhang, X. Wu, J. Zhu, Steven C.H. Hoi Feature Agglomeration Networks for Single Stage Face Detection. arXiv preprint arXiv:1712.00721, 2018.
[8] S. Zhang, L. Wen, H. Shi, Z. Lei, S. Lyu, Stan Z. Li Single-Shot Scale-Aware Network for Real-Time Face Detection. International Journal of Computer Vision (IJCV), 2019.


微信公众号同步

  关注微信公众号“机器学习和人工智能”,干货多多~
  我们会定期推送Python编程,人工智能基础算法,学术界、工业界最新动态,让更多的人了解人工智能~
  欢迎扫描下方二维码关注哈~
微信公众号


http://chatgpt.dhexx.cn/article/iegfwriI.shtml

相关文章

什么是人脸识别,人脸识别算法大致分为几种?

如果要给人脸识别下个定义,它是利用人的生物特征实现个体区分的一种技术,一般包括图像采集、特征定位、身份的确认和查找三个环节。简单来说,人脸识别就是从图像中提取面部特征关键点,比如骨骼特征、眉毛高度等,通过比…

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

基于深度学习的人脸识别算法 简介Contrastive LossTriplet LossCenter LossA-Softmax Loss参考文献: 简介 我们经常能从电影中看到各种神奇的人脸识别技术,例如图1。人脸识别技术是基于面部特征信息进行身份识别的一种生物识别技术。该技术在图片/视频中…

人脸检测算法分类

由于上次在Altea申请的License到期了,因为申请还挺麻烦的,而且申请周期太长了,最后主要因为本人的电脑实在太。。。,编译一个SOC-FPGA的程序需要6-10个小时。。。所以现在基本搁置了OpenCL的学习,开始接触机器视觉。各…

人脸识别算法原理过程详解

本文为转载内容,由于找不到源作者链接,故特此说明。 人脸识别各算法详解 最近,由于工作需要,为了找到一款高效的人脸识别算法,对各种人脸识别算法都研究了一番,以下记录的是各算法的理论基础。 一.MTCNN…

浅析人脸识别算法及其应用

前言 随着深度学习和计算机硬件的快速发展,基于深度卷积神经网络的一系列算法都取得了显著的进展,其中人脸识别作为计算机视觉领域中时间最久远、应用最广泛的研究课题之一,近些年也在深度学习的加持下在性能方面获得了大幅提升,…

了解面部识别的不同算法

介绍 任何面部检测和识别程序或系统都必须以人脸识别算法为核心。这些算法由专家分为两大类。几何方法专注于识别特征。为了从图像中提取值,应用了光度统计方法。然后,为了删除变体,将这些值与模板进行比较。此外,算法可以分为两…

人脸识别各算法详解

人脸识别各算法详解 最近,由于工作需要,为了找到一款高效的人脸识别算法,对各种人脸识别算法都研究了一番,以下记录的是各算法的理论基础。 一.MTCNN 本文章主要介绍MTCNN算法的流程,MTCNN主要由三个框架组成&#…

人脸识别算法(包含简单代码)

TOC 人脸识别算法是一种利用计算机视觉和模式识别技术来识别和验证人脸的算法。它可以通过分析图像或视频中的人脸特征,如脸部轮廓、眼睛、鼻子、嘴巴等来识别和区分不同的个体。人脸识别算法在安全认证、身份验证、监控安防、人机交互等领域具有广泛的应用。 以下…

总结几个简单好用的Python人脸识别算法

今天给大家总结几个简单、好用的人脸识别算法。人脸识别是计算机视觉中比较常见的技术,生活中,我们接触最多的人脸识别场景是人脸考勤. 人脸识别的算法最核心的工作是从一张图片中识别出人脸的位置。识别的算法可以说是多种多样, 下面我就来…

追踪AR圣诞老人,免费领200份圣诞礼物

元宇宙 绿心公园 圣诞节 元宇宙(Metaverse),是指 利用科技手段进行链接与创造的, 与现实世界映射与交互的虚拟世界, 具备新型社会体系的数字生活空间。 这一概念在2021年走入了大众视野 勾出了人们对“平行宇宙…

圣诞的礼物

呵呵 ,与你一起分享哦。。。。。。

圣诞来了,学编程的小伙伴有收到圣诞老人的礼物?

圣诞来了,学编程的小伙伴有收到圣诞老人的礼物?——编程学习笔记满满的惊喜。 编程是编定程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,…

圣诞老人的礼物_圣诞节设计资源:圣诞老人

圣诞节对人们而言可能意味着很多事情,但是对于设计师而言,这可能是一个不同的议程。 设计师通常会挤满最后一刻的设计临时通知,以赶在圣诞节贺卡,电子贺卡设计,新闻通讯或其他类型的广告活动的截止日期之前。 因此&am…

微信小程序|飞翔的圣诞老人

一、前言 2022年圣诞节即将到来啦,很高兴这次我们又能一起度过~ 此篇文章主要使用小程序实现飞翔的圣诞老人,跟随文章步骤带着圣诞老人翻越障碍一起去送礼物吧。 二、实现步骤 2.1、创建小程序 访问微信公众平台,点击账号注册。选择小程序,并在表单填写所需的各项信息进行…

圣诞节礼物

对于python小白的你,学了python没多久是不是就有了想自己动手做一个小程序的冲动呢?在这里我给大家分享一个我以前做的小程序——“圣诞节礼物”——希望能给大家带来灵感和帮助。 话不多说,先看一下截图: 这是一个小动画&#xf…

2022圣诞代码合集(圣诞树+圣诞老人)

文章目录 前言使用方法圣诞树圣诞老人 前言 圣诞节里的喜悦,飘扬万里;圣诞树上的星星,璀璨耀眼;圣诞星空绽放的烟花,迎来吉祥;圣诞钟声奏响的旋律,传递欢乐;圣诞老人送给你的礼物&a…

圣诞老人来了嘛

Jingle bells jingle bells jingle all the way... 随着歌声的临近,一年一度的圣诞节也如期而至的到来了 传说啊,圣诞老人为奥丁神后裔。也传说称圣诞老人由尼古拉而来,所以圣诞老人也称St.Nicholas。据说他原是小亚细亚每拉城的主教&#xf…

算法基础部分6-贪心算法

算法部分 基础6 一、贪心算法简述 贪心算法的每一步行动总是按照某种指标选取最优的操作来进行该指标,只看眼前并不考虑以后可能造成的影响。证明方法通过替换法和数学归纳法实现。 二、贪心算法例子 1. 圣诞老人的礼物 问题描述:圣诞节来临了&#x…

python外包_python怎么找外包

很多程序员兄弟们工资不高,但时间还是比较充足的,剩下的时间想多搞点外快,毕竟要养家糊口。我来讲讲怎么做可以一个月轻松多赚1万多元的外快。 一、接项目 是程序员都想过接私活,但真正去做了的寥寥无几。可能的原因:…

国外最流行的几个外包接活网站 简要介绍

国外主要外包接活站点: No.1 Freelancer.com (旧称GAF – GetAFreelancer): 国外访问人数最多,更新速度最快的外包平台。详细介绍 No.2 Elance : 国外比较成熟的三大业务外包平台之一,外包项目类型以软件和网站为主。当…