Science &Technology Vision
科技视界
【摘要】随着人工智能的发展,人脸识别方法也多种多样,文章运用“OpenCV+卷积神经网络”相结合的方法,选择合适的网络构架,实现了视频下人脸的检测和识别。
【关键词】OpenCV ;卷积神经网络;CNN ;精确度
0引言
人脸识别技术的发展始于20世纪60年代,科研人员经过60多年的不断探索和研究,尤其是近年来人工智能的快速发展,人脸识别已成为计算机视觉、图像处理、模式识别等领域的研究热点之一,特别是在视频监控、人机交互界面等方面。
人脸识别的方法有很多种,有几何特征、特征提取、神经网络、弹性匹配等,本文采用了最基础的卷积神经网络(CNN ———Convolutional Neural Networks )来进行特征提取,
并结合OpenCV 进行前期检测和后期的识别,总体实现流程如图1所示。下面将详细介绍检测、特征提取和识别部分。
图1流程
1人脸数据获取
人脸数据的获取包括人脸图像的采集和检测。首先通过电脑摄像头进行人脸检测和录入,本人采用了OpenCV 技术,
用了OpenCV 的Cascade Classifier 类中的人脸检测器haarcascade_l ,生成原始数据集和标签。
2图像预处理
图像的预处理主要是调整图片大小,
使得图片都满足Inage_size=64,考虑到识别的效果,减小计算误差,还做了灰度变换、维度转换和归一化处理,得到了处理好的数据集,
如图2所示。图2预处理后的数据集(无光线、角度等变化)后期考虑到角度和光线的不同对识别结果的影
收稿日期:2022-02-17
※基金项目:省级大学生创新项目“基于协同过滤的深度学习个性化书籍推荐研究”(S202112216200);校级科研项目“基于PFGA+ARM 的视频追踪算法及其电路构架的研究”(2020zr007)。
作者简介:朱学玲,副教授,硕士,研究方向为计算机系统设计,计算机视觉。陈浩旗,本科在读,研究方向为计算机视觉。
浅析
“OpenCV+卷积神经网络”在人脸识别中的应用
朱学玲陈浩旗
(安徽新华学院大数据与人工智能学院,安徽合肥
230088)
DOI :10.19694/jki.issn2095-2457.2022.21.07
技术应用
023
科技视界Science &Technology Vision
响,又增加了角度变化和光线变化的数据集,如图3和图4所示。
图3角度变化
图4光线变化
3构建神经网络模型
构建卷积神经网络做特征提取,
本实验采用了三层“卷积+池化”的结构,第一和第二个卷积层各有32个filter ,卷积核大小为3*3,池化层2*2,代码如下:
第三个卷积层有64个filter :
由于以上数据集都是自己采样而来,
训练数据不是很多,为了能有得到较好的测试精度防止过拟合,在构建好卷积层和池化层后与全连接层和激活层之前,再添加Dropout 层,Dropout 比率设置为0.5:
在卷积层和池化层之后添加全连接层,该层有512个神经元,再通过激活函数,增加神经网络的非线性,如图5所示,完成了卷积神经网络的构建。
图5构建卷积层和池化层代码
4训练、测试和识别
在训练代码中使用了fit ()函数计算训练集的均值、方差等属性,生成了训练模型number.h5。并利用evaluate ()等函数对测试和识别结果进行评估。
测试时中对视频下所出现的人脸进行识别再次
用到了OpenCV 的CascadeClassifier 类中的人脸检测器haarcascade_l ,使用条件判断语句对检测到的人脸进行识别。
5评估和优化
训练的好坏直接影响识别的准确度,因此,在训练模型中使用了Adam 优化算法,通过调试学习率提高测试准确率,Adam 算法中参数配置如下:(1)learning_rate 字面理解为学习速率。在速率校正之前会加快初始学习速度,前期取值为0.3。较小的值(例如1.0e-5)在培训期间降低学习速度,后期调试时取值为0.1~0.001,通过不断的训练,learning_rate 的取值逐渐减小,经过若干次调试后,
最后一次取值为0.001。(2)beta1为一阶矩指数衰减率,取0.9。(3)beta2为二阶矩指数衰次减率,取0.999。(4)epsilon 的值非常小,防止在实现中被0除,此处取值是常规的10e-8。
第一次训练时(角度、光线正常)learning_rate 值较高,取值0.3,识别准确率平均为79.61%。经过若干次调试后,
调试learning_rate 值并考虑到环境、人脸角度变化等因素,
如表1所示,得出learning_rate 取值为0.01~0.001
之间较为合适。
Conv2D (filters=64,kernel_size=(3,3),padding='same',activation='relu'))
adam =Adam (learning_rate =0.01,beta_1=0.9,
beta_2=0.999,epsilon=1e-8)
技术应用
024
Science &Technology Vision
科技视界
Learn ing
_rate 光线、角度正常光线变化
角度变化
Acc/%Lo Vallo Acc/%Lo Val-lo No.1No.2No.3No.4Acc/%Lo Val-lo Acc/%Lo
Val-lo Acc/%Lo Val-lo Acc/%Lo
Val-lo 0.379.61↓-0.1
88.21
--79.46↓-79.76-↑78.56↓↑79.31↓-76.76↓↓0.0677.96--78.42-↓78.56--
79.61
-
-88.21↓↓77.51↓↓0.0378.86↓--88.86--
88.21--79.16↓-79.31↑-78.11↓-0.0199.78
↓↓100↓↓94.30↓↓98.28↓↓98.65↓↓93.55-
-0.00399.78↓↓100↓-99.78↓↓99.85↓-
0.001100
↓
xml技术的主要应用↓100
↓
↓
99.85
↓↓
100
↓↓
100
↓
↓
100
↓↓6识别效果
分别在角度、光线、距离上进行调试运行效果如图6所示,在识别框的内侧的上方显示是否是本人,如果是本人显示“me ”,如果不是本人则显示“other ”,通过识别框的显示范围可以看出识别效果较好,能够准确的捕捉人脸的位置。
7结语
通过实验过程可以体会到OpenCV 和卷积神经
网络相结合的方式实现人脸识别是众多方法中比较快速、基础的方法,该方法实现简单但也存在一些
不足,比如在检测环节,图片的彩比较丰富、人脸部分颜较暗、图片不够清晰等都会影响检测的准确度。另外,训练的次数为了达到预期效果,需要不断的调整参数,因此在后期的优化中,可以考虑一些基于PyTorch 的方法。
说明:Acc ----Accuracy (%)Lo ----Loss ↑-----增加趋势↓-----减小趋势
表1调试learning_rate 和环境因素运行结果的变化
(a )无角度和光线变化(b )光线变暗(c )角度变化
(d )距离变化
图6调试后运行效果
技术应用
025
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论