# **基于卷积神经网络的人脸在线识别系统**
本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:
- 制作人脸数据集
- CNN 神经网络模型训练
- 人脸检测
- 人脸识别
经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。
**关键词:** 神经网络; 图像处理; 人脸检测;人脸识别;TensorFlow;模型训练
本系统使用人脸数据集下载:[http://vis-www.cs.umass.edu/lfw/lfw.tgz](http://vis-www.cs.umass.edu/lfw/lfw.tgz)
## **一、设计目标**
- 掌握人脸识别原理;
- 掌握卷积神经网络算法原理
- 掌握卷积神经网络模型训练过程;
- 掌握常用图像处理技术;
**设计内容与要求**
- 完成基于卷积神经网络的人脸在线识别系统算法设计;
- 完成基于卷积神经网络的人脸在线识别系统模型训练;
- 检测并且识别出人脸;
## 二、制作人脸数据集
### 2.1、制作我的人脸数据集
人脸检测出人脸位置,返回坐标、尺寸把脸用数组切片的方法截取下来,把截取的小图片保存下来作为数据集。
本系统获取本人的人脸数据集 10000 张,使用的是 dlib 来识别人脸,虽然速度比 OpenCV 识别慢,但是识别效果更好。其中,人脸大小:64*64。
### 2.2、主要步骤
- 加载 dlib 机器学习的开源库
- 图像预处理 cvtColor(灰度化)。
- 使用 dlib 自带的 frontal_face_detector 进行特征提取。
- 使用特征提取器进行人脸检测。
- 人脸保存。
### 2.3、制作结果
![](https://www.writebug.com/myres/static/uploads/2021/12/28/eebb39bb460a7925fc35d2596da48795.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/28/e41c7901c1c7f5e23efe7f7c5202bab4.writebug)
### 2.4、制作其他人脸数据集
本系统使用人脸数据集下载:[http://vis-www.cs.umass.edu/lfw/lfw.tgz](http://vis-www.cs.umass.edu/lfw/lfw.tgz)。先将下载的图片集放在 img_source 目录下,用 dlib 来批量识别图片中的人脸部分,并保存到指定目录 faces_other。人脸大小为 64*64。
### 2.5、主要步骤
- 读入人脸数据集源文件
- 加载 dlib 机器学习的开源库。
- 用 dlib 来批量识别图片中的人脸部分。
- 人脸保存。
### 2.6、制作结果
![](https://www.writebug.com/myres/static/uploads/2021/12/28/1841235a4eed7bec8ff8b64b9e83d358.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/12/28/152d8845c59bc05471f59e53bfc0910a.writebug)
## 三、 神经网络模型训练
### 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))
![](https://www.writebug.com/myres/static/uploads/2021/12/28/7d97990941051adf50c7836a7798452c.writebug)
### 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、训练结果
![](https://www.writebug.com/myres/static/uploads/2021/12/28/ab3f3af7aa4f5b077e1a7a3d7f727697.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/28/0d631547e376a95885d29a1397fe6cd2.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/12/28/7cf51c7d86b1733f8db6ef3559683bcc.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/28/7c8cba1c7bf934f20d1e964a4af331ae.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/12/28/be085822f809e65cea002bf2f08d00f7.writebug)
## 四、利用模型进行人脸识别
### 4.1 、主要步骤
- 打开摄像头获取图片进行灰度化。
- 人脸检测。
- 导入训练好的神经网络模型。
- 人脸识别。
### 4.2、识别结果
![](https://www.writebug.com/myres/static/uploads/2021/12/28/3f39133aeec9d6f452c892c236533d1e.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/28/ead2d22fa3a9c81398e3bafced81b479.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/12/28/3d2e5e038ec877138c1b87b0dd64fcdd.writebug) ![](https://www.writebug.com/myres/static/uploads/2021/12/28/a293a93d69f0fa9e3b5ba283554870e7.writebug)
## 五、总结
本次设计主要研究了基于卷积神经网络的人脸在线识别系统。设计了基于机器视觉的人脸图像采集系统,
自己制作了训练需要的人脸数据集。设计并实现了基于卷积神经网络的人脸识别系统,完成了基于卷积神经网络的
人脸在线识别系统算法设计、神经网络模型训练,实现了对人脸的在线检测与识别。检测出本人人脸,则在人脸上
显示”yes, my face”,若不是我的人脸,则在人脸上显示”no, other face ”。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于卷积神经网络的人脸在线识别系统——数据集+完整代码 基于卷积神经网络的人脸在线识别系统,本系统研究基于神经网络模型的人脸检测与识别技术, 系统将由以下几个部分构成:制作人脸数据集、CNN神经网络模型训练、人脸检测、人脸识别。 经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集 CNN 神经网络模型训练 人脸检测 人脸识别 经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。 关键词: 神经网络; 图像处理; 人脸检测;人脸识别;TensorFlow;模型训练
资源推荐
资源详情
资源评论
收起资源包目录
基于卷积神经网络的人脸在线识别系统.zip (11个子文件)
facerecognition_cnn
checkpoint 99B
train_faces.model-900.index 1KB
LICENSE 1KB
faces_train.py 9KB
events.out.tfevents.1553495866.ADMIN-PC 195KB
faces_my.py 3KB
face_recognition.py 8KB
train_faces.model-900.data-00000-of-00001 24.66MB
train_faces.model-900.meta 105KB
README.md 7KB
faces_other.py 2KB
共 11 条
- 1
甜辣uu
- 粉丝: 9568
- 资源: 1102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- LABVIEW程序实例-删除数组成员.zip
- LABVIEW程序实例-删除数组成员.zip
- LABVIEW程序实例-事件结构.zip
- LABVIEW程序实例-事件结构.zip
- LABVIEW程序实例-数字波形端口设置.zip
- LABVIEW程序实例-数字波形端口设置.zip
- LABVIEW程序实例-数字波形.zip
- LABVIEW程序实例-数字波形.zip
- LABVIEW程序实例-数组大小.zip
- LABVIEW程序实例-数组大小.zip
- LABVIEW程序实例-提取子数组.zip
- LABVIEW程序实例-替换数组成员.zip
- LABVIEW程序实例-提取子数组.zip
- LABVIEW程序实例-通过全局变量发送数据.zip
- LABVIEW程序实例-通过全局变量发送数据.zip
- LABVIEW程序实例-随机数曲线图.vi.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页