基于cnn的人脸识别_基于卷积神经网络(CNN)的人脸在线识别系统
微信搜索“AI大道理”,选择“置顶”公众号
重磅干货,深入讲解AI大道理
——————
本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:制作人脸数据集、CNN神经网络模型训练、人脸检测、人脸识别。经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。
关键词: 神经网络; 图像处理; 人脸检测;人脸识别;TensorFlow;模型训练
一、设计目标
1.完成卷积神经网络人脸在线识别系统算法设计;
2.完成卷积神经网络人脸在线识别系统模型训练;
3.检测并且识别出人脸,人脸识别误差率<2%
二、制作人脸数据集
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*64,reshape到1*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、卷积层
本网路共三层卷积层,卷积核大小为(3,3),卷积步长为[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 ”。
六 、代码
见个人GitHub:
https://github.com/hhhvvvddd/CNN_faces_recognition
个人博客园:
https://www.cnblogs.com/fpzs/p/10602995.html
——————
浅谈则止,深入理解AI大道理
扫描下方“AI大道理”,选择“关注”公众号
欢迎加入!
基于cnn的人脸识别_基于卷积神经网络(CNN)的人脸在线识别系统相关推荐
- 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。
什么是神经网络? 神经网络ANN全称为(artificial neutral network),也就是人工神经网络,是一种仿人类神经网络原理构造的一种计算机模型. 主要由:输入,权重,激活函数来构成一 ...
- 卷积神经网络爬虫实现新闻在线分类系统
卷积神经网络&&爬虫实现网易新闻自动爬取并分类 项目地址 采用THUCnews全部数据集进行训练,效果如下. 详细实现见./text_classification 部署步骤如下: 运行 ...
- 【CNN】一文读懂卷积神经网络CNN
https://blog.csdn.net/np4rHI455vg29y2/article/details/78958121 本文为大家解读如何简单明了的解释卷积,并且分享了学习中的一些方法案例. 首 ...
- DL之CNN优化技术:学习卷积神经网络CNN的优化、实践经验(练习调参)、从代码深刻认知CNN架构之练习技巧
DL之CNN优化技术:学习卷积神经网络CNN的优化.调参实践.从代码深刻认知CNN架构之练习技巧 目录 卷积神经网络CNN调参学习实践 练习技巧 1.练习攻略一 2.VGG16练习攻略二 卷积神经网络 ...
- 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...
- 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。
在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...
- 人脸识别微笑检测(基于卷积神经网络CNN)
目录 一.卷积神经网络概述 二.图片预处理 三.划分数据集 四.CNN提取人脸识别笑脸和非笑脸 参考资料 一.卷积神经网络概述 卷积神经网络(Convolutional Neural Networks ...
- 基于卷积神经网络 CNN 的猫狗识别详细过程
目录 一.卷积神经网络(CNN) 1.1 卷积 1.2 前馈神经网络 1.3 卷积神经网络(CNN) 二.配置环境 三.猫狗数据分类建模 3.1 猫狗图像预处理 3.2 猫狗分类的实例--基准模型 3 ...
- 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践
参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...
- 基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别
目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参 ...
最新文章
- EOS Cleos 命令使用指南
- hid自定义report 影响键盘_【iOS12人机交互指南】10.1-自定义键盘
- lepus mysql 复制监控_sql_mode=ONLY_FULL_GROUP_BY 导致lepus监控mysql5.7报错
- webpack — 概述 (2)
- restful rest_HATEOAS的RESTful服务。 超媒体:REST的秘密要素
- LeetCode刷题(16)
- PAT-乙级-1035 插入与归并
- 现在企业编程用java还是python_想转行做程序员,是学习 Java 还是 Python 更好?
- Android中将EditText里面的内容设置成任意想要的状
- 1.4. trac.ini
- java 调用python脚本的方法
- Linux查看jdk版本、卸载jdk
- SAP ERP FI(Financial Accounting)财务会计--BW方向--初级--2
- 强化学习:训练加速技巧
- 机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)
- 数据可视化之大数据可视化
- 网页版 连连看 html5实现
- Qt version is not properly installed,please run make install
- 计算机硬盘sata,sata硬盘是什么
- 聊聊 Bladed 软件
热门文章
- 胜为蓝牙适配器驱动_胜为UDC-324A/B/C/D/E蓝牙适配器驱动
- 海康威视 0day_海康威视摄像机壁装支架DS-1292ZJ 海康白 压铸铝合金材质
- 4年程序员30天面试了23家公司,看到公司名单后,网友:羡慕
- 网上推广平台如何打造商家品牌形象?
- linux emf文件,emf文件扩展名,emf文件怎么打开?
- cobbler批量装机系统centos 6.4下安装配置
- Unity UGUI uv1 uv2 不起作用
- PMBOK指南第六版与第五版的区别在哪里?
- 苏州PHp工资哪家高,苏州各区平均工资排行榜,第一名居然是..……
- 如何反编译apk文件并解析.class文件查看Java源代码