基于Python深度学习的图像数据分析

2022-01-22 11:21郭沛延王中流王岩兰腾凯
电子测试 2021年24期
关键词:卷积神经网络深度

郭沛延,王中流,王岩,兰腾凯

(沈阳理工大学装备工程学院,辽宁沈阳,110000)

0 引言

近年来,随着信息技术的飞速发展,出现了各种应用系统。Python是一种面向对象的计算机语言。尽管它有超过10年的发展历史,但由于其丰富而强大的库,逐步走向成熟和稳定。作为一种文字语言,它具有非常简单易懂的语法特征。它不仅适合执行各种复杂的任务,而且可以在几乎所有的操作系统中工作,具有一次性编译和从任何地方启动的全部特征。此外,Python有一个非常强大的库,包含了几乎所有的标准函数,只需根据需要对其进行更改。因此,它非常适合作为一个研究人员和初学者程序员。近年来,工业、航天、军事、医疗等领域对图像处理提出了更高的要求。大多数在生活或工程应用中使用的图像都是数字图像。数字图像能够使用数字阵列等方式来进行表示,阵列当中的元素被称为像素,像素点是使用二进制代码来进行表示的。随着信息技术的发展,图像变得越来越清晰,图像处理量越来越大,处理速度越来越慢。开发可以显著提高处理速度,因此Python是满足需求的语言之一。此外,可以直接生成具有许多优秀库的Python语言,也可以通过简单的修改有效地补充各种需求。

1 理论基础

1.1 深度学习的概念

深度学习是在人工神经网络的基础上发展起来的一种呈现训练的方法,也是人工智能领域最有前途的内容,以各种深度神经网络为主要模型。据相关资料显示,深度训练是近年来机械学习中增长最快的领域,也是最流行的技术方向。深度学习的层次结构可以从简单概念和高级抽象函数表示的组合中提取教训,这使计算机真正有能力理解世界。

1.2 Python简介

Python是一种功能强大的编程语言。它在计算机的许多领域都有广泛的应用,特别是在数据科学领域,功能非常出色,是其他语言无法比拟的。因此,随着图像数据分析的不断发展,它已经成为数据分析领域首选的编程语言。

1.3 图像数据分析

图像数据分析是使用数学和计算机正确处理和发展收集的数据来检测数据规律的过程。随着数据科学的发展,出现了新的数据处理方法,计算机处理数据的能力不断增长,被处理的数据量也不断增加。利用图像数据分析方法可以改进收集到的各种形式的数据,从数据中检测出规律,并利用检测出的规律来预测数据的趋势,从而帮助人们采取生产或其他解决方案。

2 基于Python深度学习手写图像数据分析

2.1 整体概述

使用矢量支持产品和多种版本的神经网络算法实现手写数字识别。该实验基于卷积神经网络,用GPU来训练模型。若使用CPU来训练,将增加训练的复杂性和时间,而图像分析则使用PIL和theano库来完成。

本系统采用Python语言表达科学计算库NUMPY的神经网络算法,并使用开放源代码的图像处理库将图像语法转换成神经网络所需的适当格式。在代码开发方面,尝试封装算法和数据源类。对系统中对手书写的图像进行数字识别,对分析输入数据进行评估,计算系统识别率,根据数字识别率进行LeNet5卷积神经网络的识别。

2.2 整体结构

通过一组非线性映射的实例,说明了对多层网络进行多层网络训练和梯度下降训练的能力可以用于复杂的图像识别任务。本文提出手写图像的整体多层卷积网络主要包括三个层次:输入层、隐藏层和输出层。

图1 系统结构图

输入层主要是将神经网络的数据进行输入,通过设置MNIST数据,需要进行两个部分代码的排序工作。第一步是对于MNIST数据的本地加载进行确认,并确定其是否在代码目录当中,如果没有MNIST数据的相关目录,程序将会进行自动下载,获得数据集。当对应的目录当中已经有MNIST数据的格式,本地数据集就会进行加字,从而降低网络成本与时间成本。第二步,加载MNIST数据集会获得train_set、valid_set和test_set数据,使用python的gzip中函数和CPickle中的函数,并包含了label文本。之后,在theano数据库中将数据设置成sharedvariables形式,这样能够为后续的GPU加速奠定基础。因为将sharedvariables存到GPUmemory中GPU里数据类型只能是float,最后能够转换为int返回,这样GPU加速的训练时间就会降低。

隐藏层的第一层为卷积层,设置了20个卷积核,各层卷积层的计算公式如下:

全联接层为第二层,可读取层域中最大象素,防止过拟合,减少权值量。二层卷积层为第三层,池化层对第四层进行降采样操作。用 maxpooling从顶层卷积层中输出的数据降采样。这个隐层是第五层,即全连通层。输出层为预测值。

对于这个结构的一般设计,学习初期的学习率是0.1,即在随机梯度前的系数,学习步数为200,每一次训练都要看全部样本。在500个样本之后,计算梯度,更新参数,因此包数为500。卷积的输入是4 D,数据需要转换。该卷积层的第一层尺寸为28*28。在进入卷积层后,通过内积获得24*24数据,池化 Maxpooling接收12*12个数据。每一包包含500幅图画,第一卷积层有20卷的积核,其结果是(500,20,4,4)次之为卷积层和池化层,函数图为12*12,内积后为8*8,以及随后的池 maxpooling完成4*4。这个卷积层有50个卷积核,结果是(500,50,4,4)。接下来是隐藏层,即数据经卷积合并后的2维形式。利用卷积核对同一图象进行卷积,将该特征映射到前一层的特征图中,合并为一维矢量。输出大小(500,500)。上一次使用了分类层,并使用定义在logistic回归回归。逻辑回归梯度下降公式:

此层的输出为(500,500)。

系统的训练流程图如图2。

图2 系统训练流程图

2.3 数据处理

利用MNIST数据集,该数据集中了一些优秀的开放源码数据开发人员,它们在转换时无需清理。并可将图像转换成数据格式,以PIL库和theano库等搭配作为参考转换。在MNIST程序中,MNIST提供了两种装入 MNIST数据集的方法:第一种是装入本地 MNIST数据集,然后直接在下载入 MNIST数据集。这个模块只用于装载数据集和转换数据格式。

2.4 数据识别分析

整个训练采用的是LeNet5模式,因此采用了它的隐层结构进行训练。总体设计有三个卷积层,分别为C1、C3、C5,在C1和C2卷积层后面有一层下采样层,用于降低维度,S2和S4层是下采样层。

卷积和采样通常被认为是一个整体。选择层通常在卷积层后连接。所述卷积过程包括:对输入图像进行裁剪,每次检测图像,提取相应的卷积。每一卷积仅关注检索的特征。在数学上,对数字图像进行剪裁,然后计算整个图像。子样本采集过程包括:子样采集过程中,还减少了处理图像像素所需的像素尺寸,减小按层参数设计的权重,再通过子样采集层的加权运算和附加偏移量,生成相应尺寸的特征图。考虑将下采层作为一个模糊滤波,二次提取特征向量。要准确地提取特征信息,层深度越深,空间分辨率越低。

C3中每一个特征映射都包含20个或20个以上的特征。S2中每一个特征映射都没有直接与C3中的每个特征映射联系起来。因为直连会破坏网络对称性。由于每个特性映射的输入不同,因此需要检索不同的特性。

RBF参数向量用于F6层目标向量。为了避免 sigmoid函数饱和,需要指出这些矢量是+1还是-1,它在F6的sigmoid范围内。实际上,+1和-1是 sigmoid函数的最大弯曲值。使F6单元工作在最大非线性条件下。sigmoid函数的饱和会导致收敛速度变慢,使损失函数变差。

运行界面打开,点击“选取图片”按钮,加载所需要识别的图像,加载后的界面如图3所示。

图3 加载图像后界面

选择识别,系统就会得出相关结果,如图4所示。

图4 识别结果图

3 结语

本文分析了Le Net5神经网络调整后的识别率对比,对相同的MNIST数据集运行其它算法,对数字识别的误码率进行比较,找出优缺点。在此基础上,对所选模型进行改进,并选取相应的测试数据集。

猜你喜欢
卷积神经网络深度
基于3D-Winograd的快速卷积算法设计及FPGA实现
深度理解一元一次方程
神经网络抑制无线通信干扰探究
从滤波器理解卷积
深度观察
深度观察
深度观察
基于傅里叶域卷积表示的目标跟踪算法
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用