摘" 要:在嵌入式系统和边缘计算中,为提高VGG16卷积神经网络对小尺寸图像识别的计算效率,通过调整模型全连接层数量、卷积核数量和使用全局平均池化替代全连接层等方式对VGG16网络进行改进,降低网络模型的可训练参数量。将改进的神经网络模型在图像增强的CIFAR-10数据集上进行训练,训练集达到99%以上的识别准确率,测试集可以达到90%以上的识别准确率,改进后的网络模型参数量较VGG16网络参数量减少了89.04%,验证了改进网络模型的有效性。
关键词:卷积神经网络;VGG16;CIFAR-10数据集;网络轻量化;图像增强
中图分类号:TP391.4;TP183" 文献标识码:A" 文章编号:2096-4706(2024)23-0105-05
Research on Small-size Image Recognition Based on Improved VGG16 Network
CHEN Lingfang, ZHANG Peng, LI Kun, YANG Hang, QIU Yuanyuan
(Xinjiang Institute of Technology, Aksu" 843100, China)
Abstract: In embedded systems and edge computing, in order to improve the computational efficiency of the VGG16 Convolutional Neural Networks for small-size image recognition, the VGG16 network is improved by adjusting the number of fully connected layers and the number of convolutional kernels in the model, using global average pooling to replace fully connected layers, and other ways, so as to reduce the number of trainable parameters of the network model. The improved neural network model is trained on the CIFAR-10 dataset with image enhancement. The recognition accuracy of the training set reaches more than 99%, and the recognition accuracy of test set can reach more than 90%. The number of parameters of the improved network model is reduced by 89.04% compared with the VGG16 network, which verifies the effectiveness of the improved network model.
Keywords: Convolutional Neural Networks; VGG16; CIFAR-10 dataset; network lightweight; image enhancement
0" 引" 言
卷积神经网络在基于嵌入式系统和边缘计算系统的图像分类识别中有十分广泛的应用。在图形分类识别的中,由于在嵌入式系统和边缘计算中,系统的计算能力有限,过大的图片增加嵌入式系统的计算量,会造成系统计算速度较慢,而采用较小的图片尺寸,并对网络模型进行轻量化,可以降低嵌入式系统和边缘计算的计算量,提高系统反应速度[1]。
VGG网络及其改进网络模型在图形识别领域有着广泛的应用,多数关于VGG网络及其改进网络的研究都是在ImageNET数据集上进行训练和测试,均达到了较好的图像识别性能[2]。但针对诸如CIFAR-10、MNIST数据集,由于其图像通道数、分辨率等均远小于ImageNET数据集图像,标准的VGG网络对图像尺寸较小数据集的识别效果虽然较好,但是参数较多,计算量较大,不适宜应用在多数的嵌入式设备和边缘计算上。实现模型的轻量化即减少模型参数量,可采用网络模型压缩、采用全局池化代替全连接层、使用多个小卷积核来代替一个大卷积核、使用并联的非对称卷积核来代替一个正常的卷积核、剪枝等多种方法,也有诸如SqueezeNET、MobileNET、Xception等优秀的轻量化模型,这些典型网络模型的轻量化思路也被广泛应用[3-5]。
为了提升模型的泛化能力,最普遍的做法是对数据集采取数据增强。在深度学习中,往往要求样本数量充足,样本数量越多,训练出来的模型效果越好,模型的泛化能力越强,但在实际中样本数量不足或者样本质量不够好,这时就需要对样本做数据增强来提高样本质量。例如在图像分类任务中,对输入的图像可以进行一些简单的旋转、平移、缩放、遮挡、剪切、颜色变化等操作,这些操作不会改变图像的类别,但可以增加训练样本的数量和提高样本质量,这一些增强后的样本可以帮助模型更好地学习和理解图像的特征,提高模型的泛化能力和识别准确率。
本文通过调整VGG16卷积神经网络的卷积核数量、全连接层参数、卷积层数等,来实现网络模型参数的轻量化,并进行数据增强以提高数据质量,较好实现CIFAR-10数据集的分类识别。
1" 基于VGG网络的图像识别
VGG卷积神经网络在图像分来中有着广泛的应用,VGG网络根据网络深度主要有VGG11、VGG13、VGG16、VGG19等几种网络结构。其中VGG16卷积神经网络在网络模型参数量、特征提取能力、训练收敛速度等方面拥有十分均衡的性能。由于小尺寸图像的分辨率较低,所含特征相对较少,VGG16就可以完全满足诸如Fashion-MNIST数据集、MNIST手写字体数据集、CIFAR-10数据集等小尺寸图像的识别分类任务。VGG16网络结构如图1所示。
CIFAR-10数据集包含10个类别的图像,每个类别有6 000张图片,每张图片有3个颜色通道、图片尺寸为32×32像素。在诸多文献中,对CIFAR-10数据集采用卷积神经网络的识别性能分析,在训练集上均能达到十分优秀的识别准确率,但对于测试集数据的识别准确率仍有较大的提升空间,若模型训练时没有进行数据增强,测试集数据的识别准确率一般不会超过85%,而训练时进行数据增强后,测试集数据的识别准确率明显好于没有进行数据增强的情况[6-7]。
图1中所示VGG16网络结构图部分参数做了相应改变。在诸多可查询的相关文献中,VGG16卷积神经网络大多是在ImageNet数据集上进行的分类训练测试的,其类别数达到了1 000种,而CIFAR-10数据集、MNIST手写字体数据集、Fashion-MNIST数据集仅有10种类别,需要将输入层Input的数据输入尺寸改为(32,32,3),将FC3全连接层的输出参数设置为10,可训练参数量为33 638 218。因此对VGG16网络结构和参数做必要的调整来对模型适当轻量化,从而减少计算量理论上是可行的。
本文中采用的模型训练平台参数:CPU为Intel i3 8100,内存为DDR4,8 GB,2 400 MHz,显卡为NVIDIA GTX1060,3 GB,使用TensorFlow 2.10.0深度学习框架搭建模型。
2" 基于VGG16网络的改进
在VGG16网络中,模型的优化器采用SGD,冲量系数momentum为0.9,学习率为0.01,激活函数为ReLU,批大小为128,测试数据集作为验证数据集,分别迭代50次、100次和150次,且求三次运算结果的分类识别准确率平均值为最终值,减小偶然因素的影响。模型识别准确率如表1所示。
CIFAR-10数据集相较于ImageNET数据集图像尺寸小很多,图像包含的特征也要少一些,可以对VGG16网络模型进行轻量化而不降低网络模型对CIFAR-10数据集的识别精度。通过调整VGG16卷积神经网络网络层数、卷积核数量、调整全连接层参数等方法,可以实现对VGG16网络的轻量化改进,达到对小尺寸图像良好的分类识别性能[8-9]。
2.1" 减少卷积核数量
降低各卷积核的数量可以较为明显地减少模型的可训练参数数量。本文通过等比例减少各层的卷积核数量和全连接层神经元数量,来初步实现针对小尺寸图像识别的卷积神经网络轻量化。将第一层卷积核由64逐步改为32、24、16,其余各层参数等比例减少,得到了3个卷积神经网络,针对CIFAR-10数据集进行训练,选出性能表现优秀的模型。得到的3个卷积神经网络在训练过程中采用固定学习率的方法会出现明显的过拟合现象,训练数据集和测试数据集均在迭代50次以后出现明显的识别准确率跳动,说明出现了过拟合现象。为此采用动态更新学习率机制来克服过拟合现象,每迭代20次后,学习率变为之前的0.65倍,得到的训练结果如表2所示。
在表2中,各分类精度数据是在进行150次迭代后得到的。可以看出,随着卷积核数量减少,模型的测试数据分类准确率有较为明显的下降,但训练数据集的分类准确率并没有较大改变。因此对于小尺寸图像,测试数据分类准确率会随着第一层卷积核数量减少而下降,综合测试集数据分类识别结果选取第一层的卷积核数量为32的模型作为优化对象,继续进行改进。
2.2" 调整网络层数
通过删减网络模型的层数简化网络,增加全连接层会显著增加网络模型的参数量,相反的减少全连接层可以明显减少网络模型的参数量,尝试删减FC1、FC2以及BLOCK1池化层等,来研究模型对CIFAR-10数据集的分类识别准确率。采用固定学习率(学习率设为0.01)经过三次训练后,仍然取三次分类准确率的平均值作为最终的分类准确率,实验结果如表3所示。
通过表3中数据能够很清晰看出,无论是VGG16模型还是简化后的模型,在经过150次的迭代训练结束后,对训练数据集的分类准确率差别很小,对测试数据集的分类准确率集中在80%左右,说明模型均有较好的收敛性和图像特征提取与分类能力。结合网络模型各层训练参数数量可看出,全连接层神经元数量对网络参数数量影响最大,因此将原有的3个全连接层调整为两个全连接层用来进行分类。在训练过程中,由于全连接层的减少,可训练参数明显减少,模型的过拟合现象有所减弱,在训练过程中采用固定学习率仍可以达到较好的训练效果。
分析网络的各层输出,VGG16网络模型的输入图像尺寸为32×32,BLOCK1的输出图像尺寸为16×16,BLOCK2的输出图像尺寸为8×8,BLOCK3的输出图像尺寸为4×4,BLOCK4的输出图像尺寸为2×2,BLOCK5的输出图像尺寸为1×1,BLOCK5的输出图像尺寸太小,池化过程中会丧失部分图像特征,对模型的性能有削弱,因此可采用删除部分池化层,以增BLOCK5输出的特征图尺寸。对于删除BLOCK1_POOL池化层网络识别率降低的问题,是由于在训练过程中出现相对较为明显的过拟合现象,采取动态调整学习率或是采取批归一化的方法,可以较好地抑制过拟合现象。
2.3" 增加批归一化层
增加批归一化层可以有降低模型对参数初始化的敏感性,将各层的输入数据均值变为0、方差变为1,从而使网络不再需要不断适应输入数据的分布变化,允许使用更高的学习率,而不会导致训练不稳定或发散,有助于防止网络过拟合,加速训练过程。采用先进行批归一化操作后进行激活,增加批归一化层后采用固定学习率(学习率设为0.01)训练迭代150次实验结果如表4所示。
从表4中可以看出增加归一化层后,删除FC1和BLOCK1_POOL池化层后的网络对CIFAR-10数据集测试集的分类识别性能更好,但该网络的参数量也是3个网络中最多的。
2.4" 调整全连接层的参数
在删除FC1层的前提下,没有删除BLOCK1_POOL池化层时,BLOCK5的输出特征图尺寸太小为256×1×1,展开后输入全连接层的参数为256;删除BLOCK1_POOL池化层时,BLOCK5的输出特征图尺寸太小为256×2×2,展开后输入全连接层的参数为1 024。完全可以将全连接层的输出参数调整为256,结合表4增加批归一化层后模型识别精度,选择删除FC1和BLOCK1_POOL池化层后的网络将其全连接层FC1输出参数调整为256,经过训练得到在CIFAR-10数据集测试集上最终的网络识别准确率为86.02%,可训练参数量为3 949 354。
综上,经过各环节改进后,改进后的模型如图2所示。
3" 改进网络的优化与测试分析
经过对VGG16网络进行改进和适度轻量化,得到的网络在CIFAR-10数据集上测试集的识别准确率达到86%以上,还可以通过对数据进行数据增强、增加Dropout层、采用全局平均池化层等方法,实现更高的识别准确率。在采取有效方法抑制模型训练过拟合的情况下,理论上可以通过增加迭代次数使测试集识别准确率达到或接近100%,但实际上受限于数据集各类别图像在训练集和测试集上的分布、数据增强措施、模型的结构与参数量等因素,测试集识别准确率只要达到期望值,就可以认为模型得到了有效训练,达到了性能要求。
3.1" 采用数据增强
对CIFAR-10数据集的训练集图像进行随机水平平移、随机垂直平移、随机缩放、随机水平翻转、随机错切变换操作,同时对FC1全连接层增加Dropout层,设置Dropout值为0.4,防止模型训练出现过拟合,提升模型的泛化能力。采用固定学习率(学习率设为0.01)迭代150次后数据增强后的训练集识别准确率达到98.27%,测试集识别准确率达到88.05%。数据增强后训练结果如图3所示。
从图3可以看出,采用固定学习率,在训练初期可以使模型快速收敛,在训练集上达到了很高的识别准确率,但随着迭代次数的增加,模型验证数据集的识别准确率出现明显上下浮动,出现过拟合现象,模型训练过程中的稳定性有进一步提升的空间。
3.2" 动态调整学习率
在模型训练过程中适时减小学习率可以防止因学习率过大造成的模型不收敛和过拟合现象。采取学习率动态调整策略:迭代前100次固定学习率为0.01,迭代次数在101到160之间为每迭代20次学习率变为之前的0.65倍,迭代次数161到210之间为每迭代10次学习率变为之前的0.75倍,迭代次数211到250之间为每迭代8次学习率变为之前的0.8倍,迭代次数251到300之间的学习率为0.000 1。动态调整学习率后训练结果如图4所示。
学习率动态调整后,测试集识别准确率变化变得平顺,过拟合现象有效改善。迭代150次后数据增强后的训练集识别准确率达到99.31%,测试集识别准确率达到89.78%;迭代300次后数据增强后的训练集识别准确率达到99.67%,测试集识别准确率达到90.39%。
3.3" 采用全局平均池化层
采用全局平均池化层替代FC1全连接层,主要目的还是减少模型参数量,也会在一定程度上防止过拟合的发生[10],替代后模型可训练参数量为3 686 954。迭代150次后数据增强后的训练集识别准确率达到99.48%,测试集识别准确率达到90.10%;迭代300次后数据增强后的训练集识别准确率达到99.72%,测试集识别准确率达到90.64%。训练过程中识别精度变化和结果如图5所示。
此时的模型比VGG16模型可训练参数量少了89.04%,测试集上的分类识别准确率也提升了近9%。
4" 结" 论
本文对VGG16模型进行改进,通过减少卷积核数量、删除部分网络层、使用全局平均池化替代全连接层等方法,使改进后的模型在小尺寸图片分类识别中仍然保持良好的性能,在CIFAR-10数据集上进行验证网络模型性能。
在模型训练过程中,采取数据增强、动态调整学习率、增加Dropout层等方法来抑制过拟合现象。最终得到网络模型可训练参数量为3 686 954,比VGG16模型可训练参数量少了89.04%,测试集上的分类识别准确率也提升了近9%,更加适合嵌入式系统和边缘计算的应用场合。
参考文献:
[1] 郭庆梅,于恒力,王中训,等.基于卷积神经网络的图像分类模型综述 [J].电子技术应用,2023,46(9):31-38.
[2] 李靖霞,李文瑾.基于迁移学习和多尺度融合的遥感影像场景分类方法研究 [J].现代信息科技,2024,8(8):138-141+145.
[3] 郭子宁,黄海龙,高培根.改进SqueezeNet卷积神经网络机械零件表面缺陷检测算法 [J].制造业自动化,2024,46(2):121-124.
[4] 辛聪,李菁.基于MobileNet的电力设备图像识别 [J].工业控制计算机,2024,37(3):157-158+166.
[5] 谢生锋.基于Xception和迁移学习的图像分类研究 [J].现代计算机,2024,30(1):75-78.
[6] ERDAS A,ARSLAN E,ÖZTÜRKCAN B,et al. A Study on Object Classification Using Deep Convolutional Neural Networks and Comparison with Shallow Networks [C]//2018 6th International Conference on Control Engineering amp; Information Technology (CEIT).Istanbul:IEEE,2018:1-4.
[7] CHAUHAN R,GHANSHALA K K,JOSHI R C. Convolutional Neural Network (CNN) for Image Detection and Recognition [C]//2018 First International Conference on Secure Cyber Computing and Communication (ICSCCC).Jalandhar:IEEE,2018:278-282.
[8] 张玉,武海,林凡超,等.图像识别中的深度学习模型剪枝技术 [J].南京理工大学学报,2023,47(5):699-707.
[9] 代东南,马睿,刘起,等.基于特征融合注意力机制的樱桃缺陷检测识别研究 [J].山东农业科学,2024,56(3):154-162.
[10] 李玥辰,赵晓,王若男,等.基于改进卷积神经网络的中药饮片图像识别 [J].科学技术与工程,2024,24(9):3596-3604.
作者简介:陈灵方(1989—),男,汉族,河南新安人,讲师,硕士,主要研究方向:机械传动系统设计、农机智能化。