基于树莓派和OpenCV 的深度学习人脸检测和性别年龄预测方法的研究

2020-01-07 01:12查宏超高进可
科学技术创新 2020年9期
关键词:树莓残差人脸

查宏超 王 琪 高进可 张 鑫

(江苏科技大学苏州理工学院机电与动力工程学院,江苏 张家港215600)

随着计算机视觉技术在人工智能领域的不断创新发展,越来越多的应用领域中都离不开人工智能。而图像处理和计算机视觉技术作为人工智能的眼睛更是研究中的一个热点。涉及到深度学习、机器学习、神经网络建模等多个方面。在人工智能时代,“刷脸”正在应用到各个领域。人脸检测最初在20 世纪60 年代已经有研究人员开始研究,真正进入初级的应用阶段是在90年代后期,发展至今其技术成熟度已经达到较高的程度。很多地方都会用到图像处理和计算机视觉技术。而人脸检测则是图像处理和计算机视觉技术的典型应用。随着神经网络算法的不断发展,深度神经网络在图像识别中有着不错的发展和广泛的应用。

早在1998 年,Yann LeCun 等人在多次研究后提出了早期的卷积神经网络结构LeNet-5,作为经典的手写数字识别模型,LeNet-5 的网络层次达到了5 层。在2012 的ImageNet 竞赛中,Hinton 和他的学生Alex Krizhevsky 设计了AlexNet 网络模型使网络层次达到了8 层,同时在LeNet-5 的基础上用到了更新的技术点使网络模型训练的速度快数倍以上。在2014 年,牛津大学研究的VGG 网络模型和Google 团队研究的GoogLeNet 模型相继问世并分别将网络层数提高到了19 层和22 层。随着网络层数的增加,神经网络模型深度加深所带来的梯度消失的问题开始使神经网络变得难以训练。为解决梯度消失的问题,MSRA的何凯明团队在经过研究后,在其发表的经典论文Deep Residual Learning for Image Recognition 中 提 出 Residual Networks,即残差网络[1]。何凯明团队提出的残差网络很好的解决了在神经网络训练过程中网络深度达到饱和后出现的“模型退化”的现象[2]。ResNet 在ILSVRC2015 竞赛中将网络深度提升到152 层,将数据集训练错误率降低至3.57%,在图像识别准确率和网络深度方面,比往届比赛有了非常大的提升。由此可见深度残差网络(Deep Residual Network)在图像识别训练上有着很强大的效果和应用空间。

本文将OpenCV 人脸检测环境搭建到便携移动设备树莓派上,从ORL 人脸数据库中采集人脸样本信息组成人脸图像训练数据集[3]。采用基于计算机视觉库OpenCV 的DRN 人脸检测算法构建人脸检测的神经网络模型并进行数据集训练。同时以基于Caffe 框架的卷积神经网络CNN 预训练模型进行性别年龄的预测。以树莓派作为OpenCV 的图像处理平台,集成度高、开发性好、方便且快捷[4]。将树莓派作为平台,OpenCV 作为处理核心,研究一种简洁高效、性能优良的人脸检测和性别年龄预测方法。

1 人脸检测的原理及方法

1.1 人脸图像数据的收集和预处理

在构建DRN 人脸检测算法模型之前,要进行大量的人脸数据训练。首先对人脸特征进行提取,人脸特征包括眉毛、睫毛、眼睛、鼻子、耳朵、嘴巴等显著特征。只要能将人脸图像中的这些特征点提取出来就可以分辨出人脸与非人脸。之后构建人脸数据模型进行训练,这样在人脸的识别检测上就可以达到相当高精度的准确识别。在前期准备上主要分为人脸数据收集、训练模型,人脸检测性别年龄预测三部分。本文采用的人脸图像数据集是OpenCV 教程里的ORL 人脸数据库,以人脸图像数据集作为训练对象,同时可以将预检测的人脸图片加到数据集中作为训练对象,此时要对预测的人脸图片做预处理,将图片进行裁剪大小使拍摄的人脸图片和数据库中的大小一致。方便后面使用DRN 算法模型对采集好的人脸数据进行人脸结构分析、训练生成模型用于之后准确的人脸检测和性别年龄预测。

1.2 基于OpenCV 的深度残差网络DRN 的人脸训练模型

在使用深度神经网络进行人脸图像识别训练时,在反向传播过程中会发生梯度消失的现象[7]。在不断叠加神经网络的深度以提高模型精度的训练过程中,模型的准确率会先上升达到饱和,再持续增加深度时则会出现梯度消失导致模型准确率下降。为了加深网络层数提高模型训练精度,同时提升人脸检测的准确率,避免梯度消失模型退化,本文在相关研究的基础上使用基于OpenCV 的机器学习模块中的深度残差网络(Deep Residual Network)[8]的算法模型。深度残差网络的结构是通过跨层跳跃连接的方式,通过恒等映射H(x)=x 将前面若干层的数据输出跳过n 层传到x+n 数据层作为初始结果输入。通过残差网络的核心结构残差块跳跃式的跨层捷径连接,将神经网络某一层的输出x 作为初始结果跳过多层引入到后面数据层作为输入初始结果,输出结果为H(x)=F(x)+x,当F(x)=0 时,此时H(x)=x 就是一个恒等映射,这样深度残差网络的输出值就是残差F(x)=H(x)-x 的值。也就是说只要在训练模型时将残差的值维持在零,随着构建的网络层数的增加,模型训练的效果会越来越理想化,误差也不会增大。MSRA 的何凯明团队在研究中对普通网络和残差网络进行不同深度的训练后,在训练集的误差比较中发现残差网络有着更好的训练精度。深度残差网络的算法模型强大且好用同时在图像训练中会有着很高的准确度。在全连接的DNN 模型基础上,DRN 不再是将第x 层的输出作为第x+1 层的输入,而是将相邻层的输入输出关系扩大到跨越n 层的输入输出上,通过跨层的方式将第x 层的输出跨过n 层作为x+n 层的输入初始结果。此时神经网络的层数可以达到上百层、上千层,同时残差网络的反向传播比较好。使用深度残差网络不仅克服了梯度消失模型退化,而且在人脸图像训练上会有着很好的效果,会使人脸检测达到一个理想化的状态。在人脸检测的基础上进行性别年龄的预测,本文选择用于特征抽取的开源卷积框架Caffe 来预训练CNN 模型[9]。根据人脸检测后的特征,将这个人的年龄和性别进行分类处理。和人脸检测一样,性别年龄的预测也要经过大量人脸图像的训练。性别预测是一个二分类问题(包括Male 和Female)。在年龄预测上使用多分类的方法将年龄段划分八段(包括0-2,4-6,8-12,15-20,25-32,38-43,48-53,6 0-100)。本文研究使用在图像输入层之后添加一个7*7 的卷积层,采用最大重叠池化,在使用神经网络进行实际的图像训练过程中使用3 个卷积层,卷积核大小分别为96、256 和384,2个拥有512 个神经元的全连接层,池化采用最大重叠池化,池化规模大小为3*3 步幅为2 和一个输出层来分类输出年龄和性别的预测[10]。在神经网络模型训练过程中采用Dropout 方法限制数据训练过拟合,增强数据效果,训练算法采用随机梯度下降法,激活函数选用ReLU 函数,ReLU 是最好的非线性激活函数,具有计算简便,运行速度快,同时可以防止过拟合和梯度消失。

2 树莓派平台搭建OpenCV 人脸检测和性别年龄预测环境的实现

本文采用树莓派4 代作为搭建OpenCV 视觉环境的硬件设备。树莓派具有能耗低、移动便捷性高、集成性高等特点。树莓派4 代更是在前几代的基础上,在性能上有了更大的提升,处理器由之前3 代的Cortex-A53 升级为四核心Cortex-A72,主频更是达到了1.5GHz,运行速度更快,有相应的Linux 操作系统可以完成复杂的应用与开发。另外树莓派还带有Raspberry Pi Camera Module v2 专用定制摄像头,拥有定焦镜头,高质量800万像素。配合树莓派4B 开发板,运行速度快,流畅度较高。相比于单片机,树莓派无疑是更好的开发应用平台,在计算机编程和其他的Linux 开发上有广阔的应用空间。用来作为跑图像处理的平台,开发性高、性能较好、方便且快捷。

3 结论

本文研究在树莓派的Linux 开发环境之下搭载OpenCV 机器视觉库进行人脸检测和性别年龄预测的一种方法。利用深度残差网络提取人脸图像中的明显特征,实现人脸检测。使用卷积神经网络从人脸图像中预测性别和年龄,用大量的人脸数据集训练神经网络以达到理想的训练效果。通过树莓派平台搭建计算机视觉库来使用DRN 人脸检测算法预训练模型对人脸进行准确检测捕捉,使人脸检测更加便捷准确。在使用卷积神经网络在年龄预测上则有一定的偏差。我们知道要想从一幅人脸图像中靠一些人脸特征来判断预测年龄是一件很难预测的事情。在年龄的预测上有很多影响因素,同龄的两个人在不同的情况下看起来年龄也是不一样的,在化妆的情况下也无法准确的看出一个人的年龄。本文在预测年龄时是将年龄预测作为一个分类问题来看待,为了避免在神经网络训练过程中的过拟合,选择使用层数较少的CNN 网络模型并且以8 个年龄组来构造8 分类模型分类预测年龄,在神经网络的输出层设置8 个节点分别表示8 个年龄段范围来进行预测分类。但在相关研究上发现在理想情况下将年龄预测作为一个回归问题来处理会更好。在下一步的研究中将通过回归算法建立神经网络模型来准确预测年龄使年龄预测达到更好的效果。

猜你喜欢
树莓残差人脸
基于残差-注意力和LSTM的心律失常心拍分类方法研究
山间“小精灵”
——树莓
基于双向GRU与残差拟合的车辆跟驰建模
有特点的人脸
一起学画人脸
基于残差学习的自适应无人机目标跟踪算法
基于深度卷积的残差三生网络研究与应用
基于树莓派的骑行智能头盔设计
三国漫——人脸解锁
基于树莓派的远程家居控制系统的设计