微信搜索“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)的人脸在线识别系统相关推荐

  1. 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。

    什么是神经网络? 神经网络ANN全称为(artificial neutral network),也就是人工神经网络,是一种仿人类神经网络原理构造的一种计算机模型. 主要由:输入,权重,激活函数来构成一 ...

  2. 卷积神经网络爬虫实现新闻在线分类系统

    卷积神经网络&&爬虫实现网易新闻自动爬取并分类 项目地址 采用THUCnews全部数据集进行训练,效果如下. 详细实现见./text_classification 部署步骤如下: 运行 ...

  3. 【CNN】一文读懂卷积神经网络CNN

    https://blog.csdn.net/np4rHI455vg29y2/article/details/78958121 本文为大家解读如何简单明了的解释卷积,并且分享了学习中的一些方法案例. 首 ...

  4. DL之CNN优化技术:学习卷积神经网络CNN的优化、实践经验(练习调参)、从代码深刻认知CNN架构之练习技巧

    DL之CNN优化技术:学习卷积神经网络CNN的优化.调参实践.从代码深刻认知CNN架构之练习技巧 目录 卷积神经网络CNN调参学习实践 练习技巧 1.练习攻略一 2.VGG16练习攻略二 卷积神经网络 ...

  5. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  6. 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。

    在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...

  7. 人脸识别微笑检测(基于卷积神经网络CNN)

    目录 一.卷积神经网络概述 二.图片预处理 三.划分数据集 四.CNN提取人脸识别笑脸和非笑脸 参考资料 一.卷积神经网络概述 卷积神经网络(Convolutional Neural Networks ...

  8. 基于卷积神经网络 CNN 的猫狗识别详细过程

    目录 一.卷积神经网络(CNN) 1.1 卷积 1.2 前馈神经网络 1.3 卷积神经网络(CNN) 二.配置环境 三.猫狗数据分类建模 3.1 猫狗图像预处理 3.2 猫狗分类的实例--基准模型 3 ...

  9. 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践

    参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...

  10. 基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别

    目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参 ...

最新文章

  1. EOS Cleos 命令使用指南
  2. hid自定义report 影响键盘_【iOS12人机交互指南】10.1-自定义键盘
  3. lepus mysql 复制监控_sql_mode=ONLY_FULL_GROUP_BY 导致lepus监控mysql5.7报错
  4. webpack — 概述 (2)
  5. restful rest_HATEOAS的RESTful服务。 超媒体:REST的秘密要素
  6. LeetCode刷题(16)
  7. PAT-乙级-1035 插入与归并
  8. 现在企业编程用java还是python_想转行做程序员,是学习 Java 还是 Python 更好?
  9. Android中将EditText里面的内容设置成任意想要的状
  10. 1.4. trac.ini
  11. java 调用python脚本的方法
  12. Linux查看jdk版本、卸载jdk
  13. SAP ERP FI(Financial Accounting)财务会计--BW方向--初级--2
  14. 强化学习:训练加速技巧
  15. 机器学习之sklearn-KNN近邻算法分类小案例(乳腺癌预测最优模型)
  16. 数据可视化之大数据可视化
  17. 网页版 连连看 html5实现
  18. Qt version is not properly installed,please run make install
  19. 计算机硬盘sata,sata硬盘是什么
  20. 聊聊 Bladed 软件

热门文章

  1. 胜为蓝牙适配器驱动_胜为UDC-324A/B/C/D/E蓝牙适配器驱动
  2. 海康威视 0day_海康威视摄像机壁装支架DS-1292ZJ 海康白 压铸铝合金材质
  3. 4年程序员30天面试了23家公司,看到公司名单后,网友:羡慕
  4. 网上推广平台如何打造商家品牌形象?
  5. linux emf文件,emf文件扩展名,emf文件怎么打开?
  6. cobbler批量装机系统centos 6.4下安装配置
  7. Unity UGUI uv1 uv2 不起作用
  8. PMBOK指南第六版与第五版的区别在哪里?
  9. 苏州PHp工资哪家高,苏州各区平均工资排行榜,第一名居然是..……
  10. 如何反编译apk文件并解析.class文件查看Java源代码