人脸识别之人脸检测算法

article/2025/11/8 13:16:52

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

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

一、现有算法

    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的实践详解》


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

相关文章

Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案

前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取。 上一节地址:Python网络爬虫与信息提取(16)—— 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是要么要会员,要么要登陆账号才能看答案,这种就比较费劲了,解决方案有…

Python 网络爬虫及数据可视化

网络爬虫及数据可视化 1 项目背景1.1Python的优势1.2网络爬虫1.3数据可视化1.4Python环境介绍1.4.1简介1.4.2特点 1.5扩展库介绍1.5.1安装模块1.5.2主要模块介绍 2 需求分析2.1 网络爬虫需求2.2 数据可视化需求 3 总体设计3.1 网页分析3.2 数据可视化设计 4 方案实施4.1 网络爬…

python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版

给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python、网络爬虫方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小5.54 MB,瑞安米切尔编写,目前豆瓣、亚马逊、当当、京东等电子书综…

【python】基础网络爬虫教程

1.爬虫目的 用通俗易懂的话来说,是对多种类型数据(如文字,图片,音频,视频等)进行批量式的采集与存储。 本文为个人一些学习心得,举例对网页进行信息爬取操作,使用python中基础的方法进行爬取,便于理解学习。2.爬虫准备 需要对python有一些基础,对字符串,列表,循环结构等有了解。…

python网络爬虫及数据可视化

广东某学校的期末python作业 一、设计内容及要求 设计内容:对中国大学专业排名网站中2021年,计算机科学与技术专业,进行数据爬取和数据可视化。 URL: https://www.shanghairanking.cn/rankings/bcmr/2021/080901 设计要求&am…

python网络爬虫的流程图_Python 网络爬虫程序架构及运行流程

1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息。 获取响应内容 服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)…

python网络爬虫--网页登录

1、前言 主要用到python的selenium库,通过模仿浏览器行为定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能. 2、selenium定位网页元素 关于selenium的使用前准备可以看到我之前的一篇…

python网络爬虫可以干什么,python网络爬虫有什么用

python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。什么是爬虫? (推荐学习:Python视频教程)网络爬虫(又被称为网…

python网络爬虫技术课后答案_尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案...

尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案 法律的一般含义是() 答:法律是由国家创制并保证实施的行为规范 下列属于急症手术的是 答:肝破裂 脾气统摄血液的功能,实际上是()的固摄作用的体现 答:气 中国古代南北争战中&…

(一)python网络爬虫(理论+实战)——爬虫的初步认识

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

Python网络爬虫经典书籍推荐

1. Python编程:从入门到实践 - 2016 本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Python 库和工具介绍,以及…

(二)python网络爬虫(理论+实战)——爬虫分类和基本流程

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

python网络爬虫实验报告_Python网络爬虫实例讲解

聊一聊Python与网络爬虫。 1、爬虫的定义 爬虫:自动抓取互联网数据的程序。 2、爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存在待爬取的URL链接,爬虫调度器调用网…

Python网络爬虫简介与环境配置

第一章 Python网络爬虫简介与环境配置 1.1 网络爬虫简介 随着互联网的快速发展越来越多的信息被发布到互联网上,这些信息被嵌入到各种各样的网页结构及样式中。虽然搜索引擎可以辅助用户搜索这些网页信息,但是通用的搜索引擎的目标是尽可能覆盖全网络&…

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先…

python爬虫简介

python爬虫是收集互联网数据的常用工具,近年来随着互联网的发展而快速发展。使用网络爬虫爬取网络数据首先要了解网络概念和主要分类,各类爬虫的系统结构、运作方式,常用策略,以及主要的应用场景,同时,出于…

python爬虫入门教程(非常详细),超级简单的Python爬虫教程

一、基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据&…

python简单实现网络爬虫

前言 在这一篇博客中,我会用python来实现一个简单的网络爬虫。简单的爬取一下一些音乐网站、小说网站的标题、关键字还有摘要!所以这个爬虫并不是万能爬,只针对符合特定规则的网站使用。(只使用于爬标题、关键字和摘要的&#xff…

【海岛吉他1】全面认识吉他谱

调号 拍号 1G 4/4 休止符: