基于深度卷积神经网络算法改进

2018-04-15 18:27广东工业大学自动化学院陈奕豪
电子世界 2018年7期
关键词:人脸识别人脸卷积

广东工业大学自动化学院 陈奕豪

1 概述

在现代生活中,人脸识别技术被广泛的应用,主要是因为传统的鉴别工具如钥匙、令牌等不易携带,容易丢失,和安全性低,而人脸特征具有唯一性,不可伪造性和安全性等特点。但由于人脸环境的不确定因素给人脸识别增加了难度。将深度学习应用于人脸识别中,通过卷积神经网络提取人脸的特征更能表达原本人脸信息,总而进一步提高人脸识别的效率。

本文围绕卷积神经网络中的人脸识别,结合人脸图片.和识别对卷积神经网络进行优化,提高人脸的识别率

2 卷积神经网络的原理

卷积神经网络是由数据层(Inpput layer)、卷积计算层(CONV layer)、ReLU激励层(ReLU layer)、池化层(Pooling layer)、全连接层(FC layer)穿插不断叠加组成。一般的CNN结构yi次为:INPUTàCONVàRELUàPOOLàFCàRELUàFC

人脸检测是人脸识别的第一步工作,在图像中寻找人脸,判断图像中是否有人脸存在。人脸检测网络的本质是一个二分类网络。卷积神经网络由多层神经网络组成,每一层由多个平面。

卷积神经网络按照功能可分为数据输入模块、特征提取模块、网络优化模分类识别模块。数据输入前要进行标签化分类和计算均值。然后将样本数据和标签分类文件输入网络数据模块进行预处理。

3 Caffe简介

Caffe是伯克利大学开发的一个开源的深度学习网络框架,底层由C++语言实现,内置由Python和Matlab接口,可供给开发人员使用Python和matlab语言进行编写以深度学习为核心算法的应用。

Caffe有三大模块Blobs、Layers和Nets。其中Blobs用来对数据进行存储、数据交互和处理,通过Blobs,统一制定内存接口,它的本质结构是一个N维度向量,用来存储数据信息,。Layers是神经网络的核心,定义了许多层级结构, 包括卷积,池化,损失等层结构哦,利用这些层结构可以实现神经网络模型。Layer是将下层数据输出作为数额u,进而通过内部运算输出。Nets是一系列的Layers的集合,并且这些层结构通过连接形成一个网图,Nets定义了输入、输出、网络各层,并将各层连接成一个图。

4 深度卷积神经网络算法改进

对于人脸识别的问题,本文考虑了其复杂性,需要性能好的网络来支撑和实现。Alexnet网络在图像识别中有良好的识别效率,并且人脸识别引擎Seetaface也利用Alexnet取得和高识别率。

深度学习中,对于层数的选择和具体层的提取到特征信息学术界尚且没有明确的 定论。Alexnet、Goolgenet等CNN深度学习框架层数的设计很大程度上都是通过反复实验 的经验值。神经网络中全连接层的设计思想参考传统的识别模式是用于提取特征停止的“分 类模块“,但用于图像识别上全连接层的设计会使得值过于密集,造成模型过拟合和训练困 难。近年的研究表明全连接并不是必须的 ,Goolgenet和ResNet没有与Alexnet一样使用 两层全连接层,依然性能很好,但是他们良好的性能以特大深度和宽度为代价,网络规模庞大计算复杂使得常规的硬件根本无法支撑。

4.1 改进Alexnet网络的Caffe实现

本文人脸识别是基于Caffe实现的。首先,在数据输入网络之前需要对样本数据转换 (大小、格式)和根据样本数据计算得到均值文件。本文图片大小统一为256*256像素以及数据格式为Imdb,Caffe平台提供了Imdb数据处理和转换convert_imageset接口,关键代码如下:

1.*/caffe/.build_release/tools/convert_imageset#接口入口函数

2.--resize_height=$RESIZE_HEIGHT#统一图片的高

3.--resize_width=$RESIZE_WIDTH#统一图片的宽

4.--shuf fle#数据 次序 打乱

5. $TRAIN_DATA_ROOT#图片样本文件

6. $IMAGE_LIST_ROOT/face.txt#图片排序文件

7.$ROOT_LMDB/train#转换后的文件

4.2 基于人眼定位的人脸对齐实现

面部特征点定位(人脸对齐)在人脸识别的分析任务发挥着十分重要的作用。但在检测 到的人脸图片中,有人脸扭转和背景信息等因素的影响存在,人脸对齐可以准确定位到需要人脸,有助于网络的识别。眼睛是人脸十分重要且明显的特征之一,它在人脸中的位置比较 固定,所以本文将通过眼睛定位来实现人脸的对齐。本文中利用matlab仿真具体算法流程如下:

(1)读入imread()人脸检测后切分出来的人脸图片,并转换图片大小imresize()为100*100像素。

(2)手工在图像中标定daspect()人脸眼睛的坐标inpt。

(3)根据(2)中两眼坐标,利用函数Alignment_2points()动态规划人脸大小xSize

和重新调整两眼坐标dest。

(4)根据(2)和(3)中的参数,定义线性投影转换tran=cp2tform(inputpt,basept,’linear conformal’),最后根据tran变换和得到参数利用函数Imtransform得到对齐后的人脸图片

其中关键算法函数Aligment_2points()核心代码实现如下:

Aligment_2points(Img,input)

输入:输入图 片,人脸眼睛的坐标inpt

输出:xSize动态规划人脸大小,dest重新调整两眼坐标

BEGIN

#根据输入坐标求两眼的距离inter_ocular

Inter_ocular = norm([pts(1:2)-pts(3:4)])

#不改变分辨率,收集规整化人脸动态大小

xSize = [130*(inter_ocular/70),150*(inter_ocular/70)]

#根据两眼的距离,重新规划两眼的坐标dest1和dest2

dest1 = [30*(inter_ocular/70),45*(inter_ocular/70)]

dest2 = [100*(inter_ocular/70),45*(inter_ocular/70)]

4.3 人脸识别的实现

本文利用Caffe的matlab接口来对人脸识别的具体实现。根据上面改进后的Alexnet网 络训练得到参数模型caffemodel和网络定义文件deploy.prototxt生成net网络。人脸识别 的实现,除了要利用到Alexnet网络之外,还有考虑到实际因素,比如彩色图像作为输入和上面设计的网络不符合、输入人脸图片信息不全面、图片有旋转等,针对这些问题,识别过程如下:

(1)输入图像灰度化处理

本文中设计的CNN是针对灰度图像的人脸识别,但上章检测到的人脸图片是彩色图片,并没有经过灰度处理,在该网络人脸识别之前利用matlab中rgb2gray()函数对图像灰度化处理 。

(2)输入图像的采样

在识别数据库中,摄像头采集的图片可能人脸的信息不全,在输入数据通过CNN与原 识别数据库做信息识别时,可能会因为人脸图片这部分丢失的信息导致识别失败,输入图片的角度问题,比如图片旋转,也会影响识别效果。针对这些问题,本文对每张图片剪切釆样10个样本。假设输入识别图片大小M*M,网络要求的输入图片大小N*N,算法如下:

1)计算裁剪尺度indices = [M - N]+1

2)根据indices值,通过循环分别 取[1,1]、[1,M-N+1]、[MN+1,1]、[M-N+1,M-N+1] 为图像剪切的起点坐标,从输入图像中截取得到N*N大小的4幅样本图像和另外4幅镜像样本图像。

3)取得[ ( M - N )/2 + 1]为剪切起点坐标,取得正面与其镜像的最后两幅图像。

4)最后将得到10个样本图 片加入待识别数据集。

将输入的图片进行人脸定位和灰度化处理,然后将输入的图片采样切分成10张符合Alexnet网络识别尺寸的图片大小,最后利用生成好的Alexnet网络对该输入图片进行识别。

5 结语

本章利用改进Alexnet网络框架作为人脸识别网络。针对Alexnet模型结构所含的参数量大、网络容易过拟合和识别率下降的问题,对网络结构改进方案。由于卷积神经网络的全连接层占用该网络的大量参数,并且全连接层并不是必须的,因此去掉原网络一个全连接层,最后,利用Caffe对人脸识别进行实现。

[1]魏正.基于Caffe平台深度学习的人脸识别研究与实现[D].西安电子科技大学,2015.

[2]丁春辉.基于深度学习的暴力检测及人脸识别方法研究[D].中国科学技术大学,2017.

[3]陆志澄.图像特征提取在人脸识别中的应用[D].中国矿业大学,2017.

[4]黄泉龙.基于PCA的人脸识别研究[D]西安电子科技大学,2012.

[5]宋新慧.基于深度学习的人脸表情识别算法研究[D].浙江大学,2017.

猜你喜欢
人脸识别人脸卷积
人脸识别 等
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法
长得象人脸的十种动物