cnn池化层输入通道数_基于卷积神经网络(CNN)的人脸在线识别系统

本文介绍了一套基于卷积神经网络(CNN)的人脸在线识别系统,包括人脸数据集制作、CNN模型训练和人脸识别。系统通过dlib进行人脸检测,使用64*64尺寸的人脸图像,训练后的模型识别误差率小于2%。
摘要由CSDN通过智能技术生成

c517dc2a70e57035370ebc446940ec4e.png

微信搜索“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、制作结果

11d151c823531ec87d5c17210b8fd911.png

9164383347fbc936c118e43ba37d0ee4.png

2226683856f6a5888fb8530a09b20e7b.png

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、制作结果

52c3258bfbccbe81850db3d6702a3689.png

932481e8107a68ef7a9328852f5a8487.png

三、 神经网络模型训练

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))

38505274ae0b51a91c01e2ef734ec073.png

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、训练结果

436644a81a014e94263d9829dee9889a.png

01156f2730b6180bb3def9014fb79fb1.png

43db00ac2558c3b13d5fca171a284e33.png

fe582a3ea47827accf7eaff5f8b36f17.png

bdc71e0059922bd1f4297841c03ecf95.png

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

4.1 、主要步骤

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

(2)人脸检测。

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

(4)人脸识别。

4.2、识别结果

e242fb72cfd0fe6b581feef9dcaf1aac.png

3e1959af3232cd32e93f24d3025997c9.png

0cff861ce57c7f793212e77c044d7c41.png

cb7bc16e9b6be9fcdf9f043ec522b0ae.png

五、总结

本次设计主要研究了基于卷积神经网络的人脸在线识别系统。设计了基于机器视觉的人脸图像采集系统,自己制作了训练需要的人脸数据集。设计并实现了基于卷积神经网络的人脸识别系统,完成了基于卷积神经网络的人脸在线识别系统算法设计、神经网络模型训练,实现了对人脸的在线检测与识别。检测出本人人脸,则在人脸上显示”yes, my face”,若不是我的人脸,则在人脸上显示”no, other face ”。

六 、代码

见个人GitHub:

https://github.com/hhhvvvddd/CNN_faces_recognition

个人博客园:

https://www.cnblogs.com/fpzs/p/10602995.html

——————

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

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

352469d7977db9053f428e2b21354f17.png

欢迎加入!

26aefdffc4795aca2d1f529efdfc1ad1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值