田凌燕
(重庆工商大学派斯学院,重庆 401520)
在诸多神经网络模型中,卷积神经网络作为一种多层非线性结构模型,有着强大的特征表达能力以及对复杂函数的建模能力,在现今如图像处理、语音处理等领域中得到了广泛运用[1]。因此,对基于Python的卷积神经网络模型进行分析研究,将有着极为重要的现实意义。
卷积神经网络是一类包涵卷积计算且具有深度结果的前馈神经网络,是当今机器深度学习领域中的而代表算法之一。在实际运用过程中,卷积神经网络将表现出良好的能力,即能够按照阶层结果对所有输入信息进行平移不变分类,因此,卷积神经网络又被称之为平移不变人工神经网络[2]。
卷积神经网络作为当今神经网络的一种,同样具备神经网络的一定特点。例如神经网络通常是由多个神经元(感知器)所构成全连接网络,在整个全连接网络中,每个神经元都可以与一个非线性函数共同构建激活函数,该激活函数具有拟合非线性,其与前一层之间的层次便是卷积神经网络中的全连接层[3]。
卷积神经网络结构中,C1和C2代表着卷积层、S1和S2代表着池化层,剩余的两层则是代表着全连接层和输出层,如图1所示。可知,每(n-m+1)×(x-m+1)个卷积神经网络都会拥有不止一个卷积层、池化层以及全连接层,但却只有一个输出层,在实际训练过程中,相邻层的神经元之间可以实现权值共享。
图1 卷积神经网络结构
在训练过程中,卷积神经网络主要会经历3个流程,即卷积、池化以及全连接。根据实际训练所需,整个卷积神经网络将会进行前向传播和反向传播[4]。在前向传播过程中,假定输入了N×N大小的矩阵,并且每个矩阵的卷积核为ω,卷积核大小为m×m,由此可以推导出卷积层的实际输出大小为:
进而可以推导出卷积层的输入为:
在池化层中,假定池化层的区域为(k×s),结合上文所推导出的卷积层实际输出大小,便可以推导出池化层的实际大小为:
在反向传播过程中,卷积神经网络的权值计算公式如下:
假设n为卷积神经网络的实际层数,为L1为输入层,而L2—Ln-1为卷积神经网络的隐含层,Ln为输出层。那么LNl便可以视作为卷积神经网络中第l层的神经元数量;则是卷积神经网络第l-1层的卷积核,则是卷积神经网络第l层的第i个神经单元的偏置;至于卷积神经网络的第l层的第i个神经元输入则由表示;卷积层的输入层为则表示输入值,那么卷积神经网络的计算过程可以推导为:
由此可知,卷积神经网络的实际算法如下:
Input:训练集X={X1,X2,...,XN},n
Output:net={LN1,LN2,...,LNn},参数及结果
参数初始化
For i=1,......, epochs
Forward backpropagation
Backward backpropagation
End For
最终输出最优卷积神经网络结构及其参数结果。
(1)准备阶段:采集人脸图像,用于后续的人脸识别卷积神经网络模型训练。(2)图片信息代码化:将原本的人脸图像转化为二进制代码信息,方便计算机进行识别和处理。(3)定义函数:定义图片处理训练过程中所使用的诸多函数。(4)生成采样集:自行生成池化采样集,完成池化采样活动。(5)定义卷积神经网络结构:合理定义选择卷积神经网络结构。(6)训练样本集:优化训练集图片,并完成对样本集的训练。(7)人脸识别:利用系统对人脸进行识别测试。
2.2.1 图片信息代码化
假定人脸图片的实际像素大小为x×y,将图片的属性信息进行输入,并根据图片的属性得到图像的实际像素大小[5]。假定其最多包含有6个字母,那么在将字母进行数字化表示的时候,便需要将字母转化为计算机能够识别的二进制代码,如为a:10000000000000000000000000;b:01000000000000000000000000……等,以此类推,便可以将所有字母转化为二进制代表。
2.2.2 定义函数
首先,在文本训练集中提出图片所对应的函数;其次,对图片所对应的函数进行预处理,主要是将训练集图片进行重命名;最后,卷积神经网络模型将会以矩阵的形式返回图片。为能够有效提高卷积神经网络模型的训练效果,需要将图片名称定义为向量函数,之后再定义一个向量函数,将图片名称所转化为的向量函数还原为图片名称。
2.2.3 生成采样集
先通过上文定义的函数,图片的名称将会转化为向量函数,后再定义出一个get_name_and_image()函数获取图片,通过此函数,图片将会被以含布尔值的矩阵形式进行返回,之后通过1×(image.flatten())将图片所返回的矩阵转换成为一行x×y列的矩阵,在该矩阵中,将不会蕴含其他参数,所有内容均将会以0和1的二进制形式进行体现;最后,卷积神经网络模型将会自行生成池化采样集,完成池化采样活动。
2.2.4 定义卷积神经网络结构
对于卷积神经网络结构的定义,针对不同的机器学习内容,其所需要定义选择的方案也不尽相同。文章所需要进行的及其学习内容为图片,所以在综合考虑以后,最终选择了“3+1”的卷积神经网络结构形式,即3个卷积层加上一个全连接层来定义卷积神经网络的网络结构。另外,文章定位原始图片在全连接层中,还会经过3层池化层,使其实际像素大小被压缩23倍,即原x×y像素的图片将会被压缩成为(x/8)×(y/8)大小的训练集图片。
2.2.5 训练样本集
在完成结构设计以后,便可以对人脸图片所转化成分的训练集进行实际样本集训练了。首先,通过交叉熵函数(Cross Entropy)sigmoid_cross_entropy_with_ logits()来直接比较训练样本集中Loss值的实际大小,并在比较过程中,使用adam优化器来对训练样本集进行全面优化,提高样本集训练效果。其次,在样本集训练过程中,需要确保每一步loss值都要经过输出的过程,在训练过程中,每100步的训练准确率也要被输出。
2.2.6 人脸识别
在完成上述工作以后,便可以打开摄像头,调用摄像头自行捕捉人脸图像,在捕捉到人脸图像后,系统将会自行对人脸图像进行拍摄,并通过上述的样本训练过程进行实际图片训练工作,测试卷积神经网络模型的构建效果。
相比较其他类型的人脸识别方式来说,基于Python的人脸识别卷积神经网络模型具有学习能力,所以识别精准度将会随着识别人脸的数量增多而提升。不过,无论如何完善和学习,当今的计算机也无法达成100%的识别精准性,为此,还需要对卷积神经网络模型实行进一步完善。