热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统

基于卷积神经网络(CNN)的人脸在线识别系统本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:制作人脸数据集、CNN神经网络模型训练、人脸检

基于卷积神经网络(CNN)的人脸在线识别系统

  本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:

制作人脸数据集、CNN神经网络模型训练、人脸检测、人脸识别。经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。

关键词: 神经网络; 图像处理; 人脸检测;人脸识别;TensorFlow;模型训练

一、设计目标 

1.掌握人脸识别原理;

2.掌握卷积神经网络算法原理

3.掌握卷积神经网络模型训练过程;

4.掌握常用图像处理技术;

设计内容与要求

1.完成基于卷积神经网络的人脸在线识别系统算法设计;

2.完成基于卷积神经网络的人脸在线识别系统模型训练;

3.检测并且识别出人脸;

二、制作人脸数据集

2.1、制作我的人脸数据集

  人脸检测出人脸位置,返回坐标、尺寸把脸用数组切片的方法截取下来,把截取的小图片保存下来作为数据集。

本系统获取本人的人脸数据集10000张,使用的是dlib来识别人脸,虽然速度比OpenCV识别慢,但是识别效果更好。

其中,人脸大小:64*64

2.2、主要步骤

1加载 dlib机器学习的开源库

2图像预处理 cvtColor(灰度化)。

3使用dlib自带的frontal_face_detector进行特征提取

4使用特征提取器进行人脸检测

5人脸保存。

2.3、制作结果

     

 

2.5  、制作其他人脸数据集

  本系统使用人脸数据集下载:http://vis-www.cs.umass.edu/lfw/lfw.tgz

先将下载的图片集放在img_source目录下,用dlib来批量识别图片中的人脸部分,

并保存到指定目录faces_other。人脸大小为64*64

2.6、主要步骤

1)读入人脸数据集源文件

2加载 dlib机器学习的开源库。

3)用dlib来批量识别图片中的人脸部分

4人脸保存。

 2.7、制作结果

 

 

 三、 神经网络模型训练

3.1、卷积神经网络内部分析

第一、二层(卷积层1、池化层1),输入图片64*64*3,输出图片32*32*32

第三、四层(卷积层2、池化层2),输入图片32*32*32,输出图片16*16*64

第五、六层(卷积层3、池化层3),输入图片16*16*64,输出图片8*8*64

第七层(全连接层),输入图片8*8*64reshape1*4096,输出1*512

第八层(输出层),输入1*512,输出1*2

输出神经网络输出的1*2,与标签y_ [0,1][1,0]对比得出损失,损失函数为交叉熵,优化器采用Adan优化器,计算模型准确率。

代码实现:

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=out, labels=y_))

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)

accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(out, 1), tf.argmax(y_, 1)), tf.float32))

3.2、输入层

   人脸检测出人脸位置,返回坐标、尺寸把脸用数组切片的方法截取下来,把截取的小图片送入神经网络进行训练,输入的图片64*64*3

 3.3、卷积层  

  本网路共三层卷积层,卷积核大小为(33),卷积步长为[1,1,1,1],即一步,padding=SAME”。卷积层提取特征,

增加通道数,图片大小不变。

3.4、池化层 

  本文提出的池化层采用最大值采样,采样大小为2*2,即把输入的特征图分割成不重叠的2*2大小的矩形,对每个矩形取最大值,

所以输出特征图的长和宽均是输入特征图的一半。

3.5、全连接层 

  为了增强网络的非线性能力,同时限制网络规模的大小,网络在特征提取层提取特征后,接入一个全连接层,该层的每一个神经元

与前一层的所有神经元互相连接,将图片的卷积输出压扁成一个一维向量,输出1*512

3.6、输出层 

本系统共分两类,一类我的人脸(yes),另一类其他人脸(no),从全连接层输入1*512,输出层输出1*2。为求loss做准备。

3.7、主要步骤 

1)读入制作好的人脸数据集,将图片数据与标签转化成数组。 

2)划分测试集:训练集=20:1,做归一化处理。 

3)传入卷积神经网络 

4)训练

3.8、训练结果

   

    

四、利用模型进行人脸识别

4.1 、主要步骤

1)打开摄像头获取图片进行灰度化。

2)人脸检测。

3)导入训练好的神经网络模型

4)人脸识别

4.2、识别结果

  

   

  五、总结

  本次设计主要研究了基于卷积神经网络的人脸在线识别系统。设计了基于机器视觉的人脸图像采集系统,

自己制作了训练需要的人脸数据集。设计并实现了基于卷积神经网络的人脸识别系统,完成了基于卷积神经网络的

人脸在线识别系统算法设计、神经网络模型训练,实现了对人脸的在线检测与识别。检测出本人人脸,则在人脸上

显示”yes, my face”,若不是我的人脸,则在人脸上显示”no, other face ”。

 

 六 、代码

见个人GitHubhttps://github.com/hhhvvvddd/CNN_faces_recognition

 

浅谈则止,深入理解AI大道理

扫描下方“AI大道理”,选择“关注”公众号

 

欢迎加入!

 

 

 

 

 

 

 

 

 

 


推荐阅读
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 人脸检测 pyqt+opencv+dlib
    一、实验目标绘制PyQT界面,调用摄像头显示人脸信息。在界面中,用户通过点击不同的按键可以实现多种功能:打开和关闭摄像头, ... [详细]
  • 1.活体相关文献综述调研参考:https:blog.csdn.netCVAIDLarticledetails845673192.基于LBP纹理特征的检测1)基于LBP_256特征提 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • 学习笔记17:Opencv处理调整图片亮度和对比度
    一、理论基础在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式:在图像像素中其中:参数f(x)表示源图像像素。参数g(x)表示输出图像像素。 ... [详细]
  • 我正在尝试使用python构建一个用于人脸识别的代码。现在我可以将所有数据库图像放入一个二维数组中,以便对它们应用主成分分析(PCA)。我在matplotlib中找到 ... [详细]
  • 后端开发|php教程apache配置文件,thinkphp后端开发-php教程例如你的原路径是http:localhosttestindex.phpindexadd那么现在的地址是 ... [详细]
author-avatar
彦廷孟颖益皓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有