《基于keras的卷积神经网络的图像分类算法研究》由会员分享,可在线阅读,更多相关《基于keras的卷积神经网络的图像分类算法研究(6页珍藏版)》请在金锄头文库上搜索。
1、 基于keras的卷积神经网络的图像分类算法研究 杨梦卓 郭梦洁 方亮摘 要:当前卷积神经网络应用于图像识别已成为研究的热点之一。相比于Tensorflow,Keras使用最少的程序代码、花费最少的时间就可以建立深度学习模型,进行训练、评估准确率,并进行预测。在Python的环境下输入CIFAR-10数据集,对图片进行归一化、数据增强等预处理后,利用Keras构造改进的VGG16卷积神经网络结构对CIFAR-10图像数据集进行建模和预测,最后通过比较不同的Batch Size来比较不同模型的准确率和损失,实验结果表明当Batch Size为128,CIFAR-10数据集识别正确率达到89%,明
2、显高于其他方法。关键词:VGG16;卷积神经网络;深度学习;Keras;图像识别:TP751 :A1 keras简介Keras是一个开放源码的高级深度学习程序库,它的设计参考了Torch,用Python语言编写,支持GPU和CPU,是一个高度模块化的神经网络库。目前 Keras 提供了两种后端引擎:Theano与TensorFlow,在二者之上,Keras提供了可以让用户更专注于模型设计并更快进行模型实验的API。这些API以模块的形式封装了来自Tensorflow和Theano的诸多小的组件,所以使用这两者能够搭建的网络也可以通过Keras进行搭建,并且基本上没有性能损失。使用Keras框架
3、最大的好处是在搭建新的网络结构时能够能够节约更多的时间。2 相关算法2.1 卷积神经网络(CNN)卷积神经网络(Convolutional Neural Network,CNN或ConvNet)属于前馈神经网络,一般是通过卷积层、汇聚层和全连接层交叉堆叠而成,基于反向传播算法进行训练,最早主要用来处理图像信息。当使用全连接前馈神经网络训练图像时,会产生参数太多、很难提取局部不变特征的问题。而卷积神经网络有局部连接,权重共享和等变表示三个结构上的特点。因此这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。2.2 VGGNet卷积网络模型VGGNet模型对卷积神经网络的深度与其性能之
4、间的关系进行了探索,网络的结构非常简洁,它的整个网络中全部使用了大小相同的卷积核(33)和最大池化核(22)。通过重复堆叠的方式,使用这些卷积层和最大池化层成功的搭建了1119层深的卷积神经网络。根据网络深度的不同以及是否使用LRN,VGGNet可以分为AE6个级别。如表1所示为VGGNet各级别的网络结构表。由表1可以看出,VGGNet拥有5段卷积,每一段卷积内都有一定数量的卷积层(或一个或四个),所以是5阶段卷积特征提取。每一段卷积之后都有一个max-pool层,这些最大池化层被用来缩小图片的尺寸。并且同一段内的卷积层拥有相同的卷积核数,之后每增加一段,该段内卷积层的卷积核就增长一倍。3
5、卷积神经网在CIFAR-10数据集上的应用3.1 CIFAR-10数据集CIFAR-10是一个图像数据集,是用于普通物体识别的小型数据集,最初是由Alex及其团队收集而来。CIFAR-10中有60000张彩色图片,每张图片的大小是 32x32,60000张图片中有50000 张用于训练,10000张图片用于测试,分别有五个训练块、一个测试块。图片的内容标签分为10类,每张图片的标签唯一,每一类图片的个数都是6000张。3.2 改进的VGG16模型的结构设计本文采用的模型是在VGG16模型基础上做的改进,使用固定尺寸的小卷积核(33),两层卷积层搭配一层池化层,使用 VGG16 的前三个卷积池化
6、结构:以2的幂次递增卷积核数量(64,128,256),全连接层没有采用VGG16庞大的三层结构,避免运算量过大,卷积层输出直接上10分类的 Softmax Classifier,权重初始化采用He Normal,而没有采用Xavier,并且加入Drop层,防止模型过度拟合。3.3 模型訓练过程3.3.1 图像预处理图像预处理阶段分三步进行,第 1阶段合并全部 50000 张训练图片及其标签将像素灰度值归一化;第 2 阶段对数据集进行图像增强;第3阶段将标签进行 One-Hot 编码,以达到使用 Softmax 进行预测的目的;第四阶段导出预处理后的训练数据。3.3.2 利用Keras建立模型
7、导入Keras的相关模块,基于Keras构造上述模型,summary()查看的模型的完整结构如图1所示。第一段卷积网络是由2个卷积层和1个最大池化层构成。这两个卷积层的卷积核的大小都是33,同时卷积核数量也均为64,步长为11。第一个卷积层的输入input的尺寸为32323,输出尺寸为323264;而第二个卷积层的输入、输出尺寸均为323264(接收来自第一个卷积层的输出)。两个卷积层之后是一个22的最大池化层,由于步长是2,所以经过最大池化之后,输出结果尺寸变成了161664。第二段和第三段卷积网络和第一段的结构非常类似,两个卷积层的卷积核尺寸也是33,只是经由这两个卷积层之后输出的通道数变
8、了,所以第二段和第三段卷积网络的输出尺寸分别为88128和44256,然后将结果输入到Flatten层。Flatten层用来将输入“压平”,即把多维的输入一维化,本文采用Dropout的正则化方法,防止模型过拟合,提升模型的泛化能力,之后直接进入10 分类的 Softmax Classifier。3.3.3 实验结果分析实验环境为 Windows10系统,采用编程语言为 Python,神经网络学习框架采用Keras框架,将上文提出的VGG16神经网络对CIFAR-10预处理后的图片进行特征提取与训练,Batch Size = 64,经过106步的迭代,将训练好的模型对CIFAR-10训练集进行
9、测试,所能达到的最高准确率是第98步,为97.89%。模型在测试集上所能达到的最高准确度为90%,这一准确度在第85代训练达到。如图2所示。在CIFAR-10上的模型训练过程准确率和损失率变化在 Tensorboard 可视化后,得到准确率和损失率变化曲线,如图3所示。根据上面的损失率变化曲线,可以观察到模型在第40代训练之后损失不断上升,这说明模型已经进入过拟合状态,不应再继续训练。结合上面的分析,Batch Size为64的模型实际收敛准确度应该是 88%-89%。把Batch Size改为128,Tensorboard可视化的准确率和损失率变化曲线如图4所示。根据上面的准确率变化曲线,我
10、们可以看到模型在测试集上所能达到的最高准确度为90.22%,这一准确度在第104代训练达到。但是根据上面的损失率变化曲线,可以观察到模型在第60代训练之后损失不断上升,这说明模型已经进入过拟合状态,不应再继续训练。结合上面的分析,Batch Size为128的模型实际收敛准确度应该是 89%。3.3.4 对比不同 Batch Size下的模型训练过程使用相同的模型和不同的batch size,对模型尝试了四种不同的 Batch Size = 64 / 128 / 256 / 512,并通过Tensorboard将这四个模型的训练准确度和Loss曲线绘制在一张图上。将模型训练过程用Tensorb
11、oard记录绘制如图5所示,横轴是训练代数,半透明的折线是原始数据,实线是经过平滑后的数据,能够更清晰的看到每個模型在同一个训练指标上的变化趋势以及不同模型在训练过程中的性能差异。不同的Batch Size和不同的迭代次数下的损失率、准确率的差异见表2。通过对比试验,可以得到以下几条关于 Batch Size 对训练模型影响的结论:Batch Size越大,每代训练的训练时间越短,但缩短到一定程度就不再下降;Batch Size越大,模型收敛的越慢,直至不能收敛;Batch Size 越大,过拟合会越晚体现出来。4 结语本文介绍了一种图像识别方法,利用改进的VGG16神经网络模型,在CIFAR-10数据集训练并测试,使用TensorBoard对比不同Batch Size下的模型训练过程,实验得出CIFAR-10数据集识别正确率达到89%。文中提出的方法虽未达到前人在CIFAR-10数据集上的最高准确率,但为解决图像识别问题提供了不错的思路。参考文献:1范望,韩俊刚,苟凡,等.卷积神经网络识别汉字验证码J.计算机工程与应用,2018,(3):160-165.2邹鑫.基于卷积神经网络的图像分类算法研究D.西北师范大学,2018. -全文完-