赞
踩
本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成:
经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。
关键词: 神经网络; 图像处理; 人脸检测;人脸识别;TensorFlow;模型训练
本系统使用人脸数据集下载:http://vis-www.cs.umass.edu/lfw/lfw.tgz
设计内容与要求
人脸检测出人脸位置,返回坐标、尺寸把脸用数组切片的方法截取下来,把截取的小图片保存下来作为数据集。
本系统获取本人的人脸数据集 10000 张,使用的是 dlib 来识别人脸,虽然速度比 OpenCV 识别慢,但是识别效果更好。其中,人脸大小:64*64。
本系统使用人脸数据集下载:http://vis-www.cs.umass.edu/lfw/lfw.tgz。先将下载的图片集放在 img_source 目录下,用 dlib 来批量识别图片中的人脸部分,并保存到指定目录 faces_other。人脸大小为 64*64。
第一、二层(卷积层 1、池化层 1),输入图片 64643,输出图片 323232;
第三、四层(卷积层 2、池化层 2),输入图片 323232,输出图片 161664;
第五、六层(卷积层 3、池化层 3),输入图片 161664,输出图片 8864;
第七层(全连接层),输入图片 8864,reshape 到 14096,输出 1512;
第八层(输出层),输入 1512,输出 12。
输出神经网络输出的 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))
人脸检测出人脸位置,返回坐标、尺寸把脸用数组切片的方法截取下来,把截取的小图片送入神经网络进行训练,输入的图片 64643。
本网路共三层卷积层,卷积核大小为(3,3),卷积步长为[1,1,1,1],即一步,padding=“SAME”。卷积层提取特征,
增加通道数,图片大小不变。
本文提出的池化层采用最大值采样,采样大小为 22,即把输入的特征图分割成不重叠的 22 大小的矩形,对每个矩形取最大值,
所以输出特征图的长和宽均是输入特征图的一半。
为了增强网络的非线性能力,同时限制网络规模的大小,网络在特征提取层提取特征后,接入一个全连接层,该层的每一个神经元
与前一层的所有神经元互相连接,将图片的卷积输出压扁成一个一维向量,输出 1*512。
本系统共分两类,一类我的人脸(yes),另一类其他人脸(no),从全连接层输入 1512,输出层输出 12。为求 loss 做准备。
(1)读入制作好的人脸数据集,将图片数据与标签转化成数组。
(2)划分测试集:训练集=20:1,做归一化处理。
(3)传入卷积神经网络。
(4)训练。
本次设计主要研究了基于卷积神经网络的人脸在线识别系统。设计了基于机器视觉的人脸图像采集系统,
自己制作了训练需要的人脸数据集。设计并实现了基于卷积神经网络的人脸识别系统,完成了基于卷积神经网络的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。