# 人脸识别 **Repository Path**: ai100/Face_Detection ## Basic Information - **Project Name**: 人脸识别 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-01-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 人工智能工程师实战项目 人脸识别 视觉方向 指导讲师 张老师 简介 人脸检测及信息比对也可以通俗的叫做人脸识别,这方面业务及技术已经广泛的应用与各行各业,例如: 1.企业、住宅安全和管理。如人脸识别门禁考勤系统,人脸识别防盗门等。 2.电子护照及身份证。这或许是未来规模最大的应用。在国际民航组织( ICAO)已确定,从 2010年 4月 1日起,其 118个成员国家和地区,人脸识别技术是首推识别模式,该规定已经成为国际标准。中国的电子护照计划公安部一所正在加紧规划和实施。 3.公安、司法和刑侦。如利用人脸识别系统和网络,在全国范围内搜捕逃犯。 4.自助服务。如银行的自动提款机,如果同时应用人脸识别就会避免被他人盗取现金现象的发生。 5.信息安全。如计算机登录、电子政务和电子商务。在电子商务中交易全部在网上完成,电子政务中的很多审批流程也都搬到了网上。 而当前,交易或者审批的授权都是靠密码来实现。如果密码被盗,就无法保证安全。如果使用生物特征,就可以做到当事人在网上的数字身份和真实身份统一。从而大大增加电子商务和电子政务系统的可靠性 。 课程中,学员们已经掌握了基本的传统图像技术和深度学习基础,也掌握了图像进行分类检测和识别技术,以及对人脸识别方向的内容了解和各种loss计算方式。 本项目中,要求学员们结合课程中学习到的内容以及互联网上开源的一些算法模型,实现一个智能的人脸识别系统。 项目概述 学员需要利用Tensorflow框架,opencv,dlib以及深度学习方面的模型和算法知识来实现一个可以对任意人员进行人脸识别和信息认证的系统。 项目流程 1.通过Opencv以及dlib等相关操作来采集需要识别的人脸数据库(可以是自己的),并建立相关的ID信息标签。标签内容可包含姓名,年龄,性别等相关信息。 提示:建立人脸数据库可根据视频图像抽帧的形式建立,可以利用笔记本摄像头或者提前录制好的视频 2.自己寻找相关的深度学习人脸识别模型及相关算法资料并做对比分析 提示:模型可选择MTCNN,FaceNet,InsightFace,Dface等模型 3.利用开源数据集重新训练自己选择的人脸识别模型,然后进行模型分析以及交叉验证 4.编写人脸识别程序,将自己训练好的模型加入到步骤一的工程项目中,将模型当作人脸的计算识别模块。 评价标准 成果1,一整套可以运行的系统 包含代码和详细的文档,文档要求可操作,能够按照文档的描述搭建系统并运行,文档不全者会酌情扣分。 文档要求: 对系统的各个组成部分的构造和自己的理解以及相互之间的关系的描述。 训练过程中踩到的一些坑和自己的心得。 对系统的输出结果的简单分析。 系统要求能对需要识别的人员进行人脸的识别并给出合理的输出。 系统需要给出合理的评价指标,例如ROC,map等。 成果2, 提供一个演示视频 视频内容:任意一个人,在进行自动建立个人数据集后,送入模型系统进行训练。可以输出并识别出此人的个人名字,年龄,男女等信息(这里标签可以手动建立)。没有人脸可以给出没有检测到的提示,有人脸但是不是此人需要检测出来但是给出unknow信息。 (部分模型及数据集提示,选择其他模型和数据集的学员请忽视下面内容) 数据集: 1.MTCNN数据集是WIDER Face和Celeba。WIDER Face用于人脸检测,而Celeba用于人脸标记检测 2.facenet提供了两个预训练模型,数据集分别是基于CASIA-WebFace(CASIA-WebFace数据集包含了10575 个人的494414 张图像)和VGGFace2人脸库训练 备注:需要其他数据集可自行查找下载,需要上述数据集者请联系课程管理人员获取训练数据 项目要点提示: 开发过程在linux系统上进行,尽量不要尝试在windows上进行项目开发,会遇到各种不必要问题。 系统的输入输出不做要求,能够正常演示即可。 模型训练提示点: 1.MTCNN: 注意:各种环境的版本配置 PNet,RNet,ONet分别训练,先训练PNet,RNet根据训练的PNet生成样本再训练,ONet同理。 提示: ​ 对于pnet,pos,part,landmark,neg的比例大约为1:1:1:3,所以可以将他们合并生成一个tfrecords文件用于训练 备注: 相关资料和开源代码学员可自行查找和借鉴,如若需要帮助,请练习课程管理员 2.FaceNet: 注意:各种环境的版本配置 提示: 1. pip install -r requirements.txt 这个是官方推荐的环境,用这个命令就可以装齐 2.下载数据集。注意:模型结构是inception resnet v1 3. 在models文件夹下,train_tripletloss.py 为构建整个训练的流程。 4. 在test文件夹下,train_test.py 为训练测试文件 开源代码地址:https://github.com/davidsandberg/facenet 5.faceNet_model文件夹为预训练的两个模型相关文件 6.剩下具体可以参考代码注释。 总结备注:建议先去看一下两种模型的论文及相关资料再做项目。训练两个模型项目是为了让学员更好的熟悉和了解项目相关算法和流程,最后人脸识别工程实现需要将MTCNN和Facenet模型项目整合并实现功能。 项目实现: 1.在经过上面两步骤模型训练后,接下来需要把训练好的模型应用到项目中。 2.使用dlib通过摄像头自动获取需要识别人的个人脸部信息,并且建立个人数据集。(没有摄像头的可以通过录制好的视频进行提取),建议个人数据集提取20000+张以上。 2.使用 MTCNN 进行人脸检测,facenet提取的人脸特征。然后生成人脸数据库。 3.编写评价程序,用于绘制模型ROC曲线。 4.编写人脸预测显示程序 该项目为一个比较典型的企业级人脸识别项目,提供的了人脸数据,通过自己训练好的模型,使用增量学习,自建个人脸部信息数据集后实现人脸生物识别。 备注:数据集是开源整理好的数据集,请联系课程管理人员获取训练数据。相关论文资料拓展学员可以自己查找。