用于图像分类的MobileNetV3算法
2022/3/5 22:15:16
本文主要是介绍用于图像分类的MobileNetV3算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用于图像分类的MobileNetV3算法
摘要
卷积神经网络(CNN)是一种深度神经网络,通过多个卷积层提取图像特征,广泛应用于图像分类。随着移动设备处理的图像数据量的不断增加,神经网络在移动终端上的应用越来越广泛。然而,这些网络需要大量的计算和先进的硬件支持,很难适应移动设备。本文论证了MobileNetV3对于移动终端上的实际图像分类任务,可以在效率和准确性之间取得较好的平衡。在我们的实验中,比较了MobileNetV3和其他几种常用的预训练CNN模型在不同图像数据集上的分类性能。选择的数据集都很好地代表了移动设备的应用场景。结果表明,作为一种轻量级的神经网络,与其他大型网络相比,MobileNetV3以有效的方式实现了良好的精度性能。此外,ROC证实了MobileNetV3相对于其他实验模型的优势。并对适用于MobileNetV3的图像数据集的特征提出了一些猜想。
关键词-卷积神经网络;图像分类;移动设备;MobileNetV3
I. 绪论
卷积神经网络(Convolutional Neural Network,CNN)由于其在图像分类、分割和其他计算机视觉问题中的扩展应用而受到极大关注。CNN通常由两部分组成:特征提取部分(由卷积层和池化层组成)和分类部分(包含大量堆叠的全连接层)。在第一部分中,卷积层中的核逐步扫描输入图像,将每个核中的权重乘以像素值,并组合总和来创建传递到下一层的新图像。池化层在下采样中起到减少数据数量和节省计算资源的作用。在第二部分中,图像首先通过flatten层转换为一维数组。接下来的全连接层使用这个数组作为输入,并通过应用线形组合和非线性激活函数来产生预测标签。
CNN由于其分层提取深层特征的优势,目前被广泛应用与解决现实世界中的问题,比如自动驾驶和医学影像诊断。由于日常场景中的大量任务,将深度学习应用于移动设备上的日常任务变得非常自然。因此,成功地将CNN应用于移动终端是非常重要的。由于移动设备上有限的计算能力,对模型效率和小内存有很高的要求。
有许多为不同任务设计的CNN架构。其中,有些常用于图像分类问题,如Inception、AlexNet和VGG16。然而,移动设备中的分类任务不仅要求高精度,而且更设计的是要求低存储成本和高计算效率,这就产生了适用于移动终端的模型。我们选择MobileNetV3作为我们的主要研究对象,它是轻量级的CNN模型,在准确性和效率之间取得了很好的平衡。
本文比较了MobileNetV3、AlexNet、Inception和ShuffleNet在不同数据集上的性能,验证了MobileNetV3的高效性和适应性。本文的主要贡献如下:
-
Fruits 360,10 Monkey Species和Bird Species Classification作为移动设备上常见图像数据集的代表,用于训练和评估所选神经网络的性能。
-
MobileNetV3、AlexNet、InceptionV3和ShuffleNetV2应用于与移动场景相关的多个图像分类任务。
-
采用多个评估指标来分析不同模型在不同数据集上的性能。
-
在实验结果的基础上,总结了MobileNetV3在图像分类方面的特点及其在移动设备上的优势。
本文的其余部分组织如下。在第二章中,我们描述了MobileNetV3的主要结构以及实验中其他模型的特点。在第三章中,介绍了数据集,并评估了MobielNetV3和其他模型的性能。实验结果和分析也见第三章。第四章总结了MobileNetV3的特点,并讨论了我们未来的工作。
II. 模型的架构
近年来,面向移动终端的CNN网络发展迅速。从2017年到2019年,MobileNet的三个版本在架构上不断改进。MobileNetV1是参考传统的VGG架构开发的,同时引入了深度可分离卷积。在此基础上,一年后退出了具有线形瓶颈和反向残差的MobileNetV2。在NAS和NetAdapt网络搜索架构优化的帮助下,MobileNetV3在2019年年中通过删除开销较高的层和使用h-swish非线性函数代替ReLU来改进,同时提高效率和相对准确性。
根据事例目标使用资源的高低,将MobileNetV3定义为MobileNetV3-Small和MobileNTV3-Large两种架构复杂度不同的模型。
表一 MobileNetv3-Large的规格。#expand表示示用于从层的输入扩展特征空间的卷积滤波器的数量。SE指示在该块中是否存在挤压和激励。NL表示该块的非线性类型。BN表示批标准化。
MobileNetV3-Large的完整规格见表I。
根据详细的层规范,模型的整体架构可以如图1所示。
图1 MobileNetV3架构。MobileNetv3-Large和MobileNetv3-Small的通用架构相同。
MobileNetV3-Small的一般结构与MobileNetV3-Large几乎相同。此外,MobileNetV3-Small缩短了四层,如表II所示。
表II MobileNetV3-Small规格。所有符号与表I相同。
A. 深度可分离卷积
为了提高计算效率,引入了深度可分离卷积。它与传统的卷积非常相似。与每层只有一次卷积计算的传统卷积不同,深度可分离卷积的卷积计算分为两个阶段。在第一阶段中,深度卷积对每个输入通道应用单个卷积滤波器。在第二阶段中,将逐点卷积(卷积)应用于深度卷积的输出的所有通道。总之,深度可分离卷积通过减少计算量来提高计算速度,但会牺牲一些精度。深度可分离卷积是许多高效模型(如MobileNetV1-V3)的核心技术。
B. 线性瓶颈
为了在不丢失太多信息的情况下从高维空间中提取特征,MobileNetV2提出了线性瓶颈来降低输入的维数。线性瓶颈指的是一个瓶颈层,它是一个带有1×1滤波器的卷积层,与线性激活函数相结合。因为传统的ReLU函数变换提供了具有信息丢失可能性的非线性,所以MobileNetV2转而将线性瓶颈层插入到卷积块中(假设特征流是低维且可捕获的)。
C. 反向残差
作为一种更安全、更有效的方法来提取输入数据的所有必要信息,瓶颈层取代了ReLU层。在瓶颈块的开始处还有一个扩展层。此外,MobileNetV2直接在瓶颈之间使用捷径,以更好地跨多个层传播梯度,并防止梯度丢失和爆炸。反向残差块经过测试,其有效作用几乎与残差块相同,同时显著降低了内存开销。
D. 网络架构搜索
通过强化学习和递归神经网络(RNN),将网络架构搜索应用于MobileNetV3,以确定受限硬件平台的最优架构。它是一种为神经网络的体系结构构造搜索空间,并用强化
学习在分层搜索空间中高效搜索,以逼近特定任务模型的最佳结构的方法。例如,基于MobileNetV2的原始设计,将MobileNetV3的扩展层重新设计为图2。
由于RNN控制器和搜索空间的相似性,MobileNetV3使用MnasNet-A1作为初始模型。此外,对强化学习中的奖励设计进行了修改,以更好地适应小型移动模型。在层的类型固定后,使用NetAdapt(一种微调每层中超参数的方法)来优化模型。
图2 原始末级和重新设计的末级的比较。
E. Swish函数
为了获得更高的精度,引入了一种新的激活函数swish来代替ReLU函数。该函数定义为:
\[swish(x)=x⋅\sigma(x) \] 然而,swish公式中的sigmoid函数可能在移动设备上消耗大量的计算资源。为了解决这个问题,MobileNetv3的作者使用Relu6函数来近似Swish中的Sigmoid函数,并
产生Swish函数的近似,称为Swish的hard版本(H-Swish),定义为:
\[h-swish[x]=x\frac{ReLU6(x+3)}{6} \]F. 实验中的额外模型
AlexNet是一个非常初始的深度CNN,开始使用ReLU非线性而不是tanh函数,并且可以放在多个GPU上。适用于高分辨率图像。然而,该模型的主要缺点是由于大量的参数而导致严重的过拟合问题。
InceptionV3首先将批处理归一化层应用于数据的传播,以加速梯度下降的过程。InceptionV3中的Inception模块经过优化,与InceptionV2相比具有更多分支。此外,在InceptionV3中实现了分解为小卷积的关键见解,这意味着将2维卷积核分离为两个1维卷积核。
ShuffleNet[15]使用组卷积和信道混洗来降低计算复杂度。通过深度方向可分离卷积层提取特征,在不显著降低精度的情况下,具有较低的计算量和较高的数据传播速度。
III. 实验
A. 数据集
在本文中,我们使用了从Kaggle下载的三个不同的数据集。这些数据集将模拟MobileNetv3可应用于移动设备的日常场景。
如图3所示,在第一行中,第一个数据集是Fruit360数据集,包括131个水果类别和67692个训练图像。每个水果都是从不同的角度拍摄多次,并有一个清晰的背景。图3
中的第二行展示了第二个数据集,即10只猴子的1097个图像。第三个数据集包含16类鸟类和总共150张图像,如第三行所示。这个数据集很小而且不平衡,鸟类随机分布在不同的背景中。
图3 样本来自三个实验数据集。第一行是Fruit360数据集;第二行是猴子数据集;第三行是鸟类数据集。
在数据预处理方面,我们对三个数据集进行了相同的操作:首先,将训练数据集随机拆分为训练子集和验证子集,拆分比例为0.7;其次,将除InceptionV3外的所有图像的大小调整为 224×224,并归一化为模型的输入。对于InceptionV3,输入图像的大小调整为299×299 。
B. 实验步骤
在本文中,我们比较了5个模型(MobileNetV3-Large,MobileNetV3-Small , AlexNet,InceptionV3 和ShuffleNetV2)在3个不同数据集上的性能。
这5个模型之间的FLOPs和参数数量的比较如表III所示。
模型 | MobileNetV3-Large | MobileNetV3-Small | AlexNet | InceptionV3 | ShuffleNetV2 |
---|---|---|---|---|---|
FLOPs(百万) | 226.0 | 29.65 | 714.7 | 5731 | 148.8 |
参数(百万) | 5.48 | 2.54 | 61.1 | 23.8 | 2.28 |
数据集包括与水果、鸟类和猴子相关的日常生活图像分类问题。
我们根据不同数据集的唯一分类类别的数量替换每个模型的最后一个分类层。使用了ImageNet[19]上预先训练的权重[17,18]。然后通过设置所有可训练的层来微调模型。
使用预先训练的权重进行训练使训练过程更简单,并导致更快的收敛。对模型进行微调是为了使模型适应特定的任务。在三个数据集上的实验步骤相同。
C. 评估指标
1) 准确性:
为了评估模型在数据集上的性能,计算预测为正的样本(实际上是正的)的数量和预测为负的样本(实际上是负的)的数量。它反映了模型从整个数据集中区分真阳性样本和真阴性样本的精度。
精度定义为:
\[Accuracy=\frac{TP+TN}{TP+TN+FP+FN} \] 其中TP、TN、FP、FN分别是真阳性、真阴性、假阳性和假阴性样本的数量。
2) 交叉熵损失:
在训练神经网络的阶段,我们通常定义一个目标函数,并将训练过程转化为一个优化问题。为了客观地衡量神经网络预测结果的波动程度,并在搜索空间中为我们提供一个合理的优化方向,本文在模型的训练阶段采用了交叉熵作为损失函数。
交叉熵损失定义为:
\[CrossEntropyLoss=\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{M}{p(x_{ij})log(q(x_{ij}))} \]其中N是训练集中的样本数量;M是训练集中的类的数目;\(p(x_{ij})\)是第i个样本属于第j类的真实概率; \(q(x_{ij})\)是模型产生的第i个样本属于第j类的概率。
3) ROC曲线:
为了直观地显示真阳性率(TPR)和假阳性率(FPR)之间的权衡,绘制了受试者工作特征(ROC)曲线,其中\(TPR=TP/P\)是模型正确标记的阳性样本的比例,以及\(FPR=FP/N\)是被错误标记为阳性的阴性样本的比例。
ROC曲线下的面积通常用于衡量模型的性能。图上的对角线表示随机标记样本的模型。比随机模型更好的模型应该出现在对角线上方。模型离随机越远(即,当ROC曲线下的面积远大于0.5时),模型越好。
D. 实验结果
1) 在水果数据集上的实验:
水果数据集包含来自131个水果类别的90483张图片。一类水果的所有训练和测试照片都是从该类别的单个水果代表的不同角度拍摄的,背景为白色。这意味着一个特定类别的训练和测试数据之间没有明显的差异。训练规模足够大,图像中的水果几乎没有任何背景干扰。也有大量的测试数据。因此,可以认为测试结果是令人信服的。
如表IV所示,与其他两个数据集上的实验相比,水果数据集的微调训练时间特别长。这可能是由于大数据集和复杂的水果品种。
表IV 不同实验模型在水果数据集上的近似微调训练时间。绝对时间高度依赖于训练环境,而模型之间的时间比较相对有意义。
模型 | 大致训练时间(分钟) |
---|---|
MobileNetV3-Large | 40 |
MobileNetV3-Small | 33 |
AlexNet | 417 |
InceptionV3 | 225 |
ShuffleNetV2 | 42 |
图4 通过在水果数据集上的实验,比较了整个微调训练过程中训练和验证的准确性和损失。
虽然训练时间相对较长,但水果数据集实际所需的训练epoch数量较少,以实现水果数据集的良好性能。在图4中,所有的 MobileNetV3-Large 、 MobileNetV3-Small 、AlexNet和InceptionV3都可以从第一个epoch开始达到接近1的精度。在整个训练过程中,只有ShuffleNetV2模型表现出较低的验证精度。通过比较训练和验证评估,对于所有模型,验证精度甚至普遍高于训练精度。因此,在这些实验中不存在过拟合问题。
在Fruit数据集上对所有实验模型的测试精度和ROC曲线进行比较,得出了相同的结论:一方面,MobileNetV3-Large 的性能最好,其次是MobileNetV3-Small。InceptionV3具有类似但稍低的精度。尽管AlexNet在该数据集中排名第四,但其准确性仍然很高。另一方面,ShuffleNetV2的性能并不令人满意,测试精度为0.79,与其他模型相比,分类能力差距明显。图5还清楚地表明,所有模型的性能都比随机猜测的要好得多。
图5 不同模型在水果数据集上的ROC曲线比较。
考虑到微调的训练时间、测试时间和数据集上所有模型的最终性能,ShuffleNetV2对应于高效率而低精度。AlexNet和InceptionV3可以以更高的时间和资源成本实现高精度。只有两个MobileNetV3型号在准确性和效率之间实现了预期的出色平衡。MobileNetV3不仅耗时最短,而且分类性能最好。
2) 在猴子数据集上的实验:
猴子数据集由10种猴子的近1400张图片组成。由于移动设备拍摄的照片分辨率相对较低,而动物是移动设备经常捕捉的对象,因此我们选取该数据集来验证MobileNetV3在低分辨率动物图形分类中的性能。数据集中的每个图像都包含来自这十个物种之一的猴子。图像的背景是猴子生活的地方。猴子通常在照片的中央,背景很模糊。
在数据集的每一类中,图像的数量几乎相同。它可以帮助防止由于训练数据集的不平衡而导致的过拟合问题。此外,每个类中有近30张图片来验证训练的模型,客观地展示了每个模型的性能。每个类别的标签和图像数量如表V所示。
表V 每类猴子数据集中的图像数量。
标签 | 训练图像 | 测试图像 |
---|---|---|
Mantled howler | 105 | 26 |
Patas monkey | 111 | 28 |
Bald uakari | 110 | 27 |
Japanese macaque | 122 | 30 |
Pygmy marmoset | 105 | 26 |
White headed capuchin | 113 | 28 |
Silvery marmoset | 106 | 26 |
Common squirrel monkey | 114 | 28 |
Black-headed night monkey | 106 | 27 |
Nilgiri langur | 106 | 26 |
在实验中,训练图像被分为两部分:由770幅猴子图像组成的训练集和由328幅猴子图像组成的验证集。在训练阶段之前,所有的图片都被重新缩放到224×224像素,以适应大多数卷积神经网络的输入大小(除了InceptionV3的299×299像素)。在训练过程中,我们从ImageNet迁移学习中加载权重,并将其用作初始权重。
图6 在猴子数据集实验的微调训练过程中,训练和验证的准确性和损失的比较。
如图6所示,MobileNetV3-Large和MobileNetV3-Small都在4个时期内达到了收敛,甚至达到了与InceptionV3相同的高训练精度,InceptionV3是一个比MobileNTV3大得多的神经网络。与同样为移动设备设计的ShuffleNetV2相比,MobileNetV3在更少的时间内以更高的精度收敛,这表明MobileNetV3更容易在该猴子数据集和其他类似动物的低分辨率数据集中进行训练。
在测试阶段,将所有五个训练好的模型应用于测试集。每个模型的性能结果如图6所示。
在所有五种模型中,MobileNetV3-Large的测试精度最高,其次是MobileNetV3-Small。图7说明了相同的结果。实验结果表明,MobileNetV3能够很好地提取低分辨率图
像的特征,并应用于图像分类。根据大量的触发器和参数(如表3所示),InceptionV3应该具有最好的泛化能力。然而,它的表现并不如预期。我们假设原因在于猴子数据集的训练规模太小,以至于如此大的模型无法达到其最佳性能,这也表明MobileNetV3可以使用小数据集进行训练并达到较高的精度。
图7 猴子数据集上不同模型的ROC曲线比较。
为了测试每个模型的效率,我们记录了所有五个模型预测测试集中所有标签的时间。结果和分析与其他两个数据集一起显示在第三章D.4图10中。
3) 在Bird数据集上的实验:
由于Bird数据集只包含150幅图像,并且每个类别的图像不到10幅,因此很难对其进行训练,并且很容易变得过拟合。在整个大图像中,不同的背景和小鸟的大小使得在这个数据集上的实验更难达到好的结果。与其他两个数据集相比,Bird数据集由于规模最小,所需的训练时间最少。
表VI 不同实验模型的Bird数据集的微调训练时间。绝对时间几乎相同。在训练期间记录最佳验证准确度。
模型 | 训练时间 | 最佳验证准确度 |
---|---|---|
MobileNetV3-Large | 14min 1s | 0.80 |
MobileNetV3-Small | 14min 18s | 0.78 |
AlexNet | 14min 13s | 0.60 |
InceptionV3 | 14min 26s | 0.67 |
ShuffleNetV2 | 14min 6s | 0.60 |
如表VI所示,所有模型的训练时间几乎相同。这表明时间可能不是一个好的比较指标,因为鸟类数据集的模型之间的时间差距不像水果数据集的模型之间的时间差距那么显著。然而,在与其他两个数据集相同的训练时间内,MobileNetV3-Large和MobileNetV3-Small仍然获得了比其他模型高得多的验证精度。实验过程中更多的精度和损耗细节如图8所示。
图8表明,所有模型在Bird数据集上都表现出不同程度的过拟合。这主要是由于每个类别的训练数据不平衡,以及Bird数据集中的数据数量较少。根据图8(B)中的训练损失趋势,除ShuffleNetV2外,所有模型在训练过程中都达到了良好的收敛。验证损失的图8(d)显示AlexNet在此分类任务中失败。此外,AlexNet、InceptionV3和ShuffleNetV2在10个训练时期后遇到了严重的过拟合。MobileNetv3-Large和MobileNetv3-Small收敛速度更快且较少过拟合。这两个模型的验证精度普遍高于其他模型。
图8 在Bird数据集实验上,比较了整个微调训练过程中训练和验证的准确性和损失。
图9还表明,MobileNetv3-Large在所有模型中实现了最佳性能。通过ROC曲线下面积测量,MobileNetV3-Small具有几乎相同的优异性能。
4) 整体测试性能对比:
从上述对单个数据集的实验分析中可以发现,在训练过程中,MobileNetV3-Large总是能够在所有实验模型中获得最好的性能。MobileNetv3-Small通常是第二个。此外,MobileNetV3的训练时间明显短于其他模型。
我们希望在测试性能上再次验证上述培训过程结果(第III章 D.1至第III章D.3。为此,在所有五个模型的三个数据集的测试数据上进行了实验。图10(a)和(b)分别展示了关于效率和准确性的测试总结。
如图10(b)所示,MobileNetv3的两个模型对所选数据集都保持了最高的分类精度。MobileNetv3-Large的表现略好于MobileNetv3-Small。
除了分类精度,我们还关注模型效率。图10(a)表明,与其他实验模型相比,MobileNetV3的测试时间并没有明显延长。
图10(a)三个不同数据集上所有实验模型的测试时间比较。由于三个数据集的原始测试规模差异较大,我们将所有测试时间除以相应数据集的测试次数。(b)在三个不同数据集上比较所有实验模型的测试精度。
从所有模型的训练和测试过程中的精度和效率分析可以看出 ,两个MobileNetV3模型比大型CNN模型(如InceptionV3和AlexNet)所需的时间要短得多(尤其是微调训练 时间 ),同时达到了令人满意的精度.MobileNetV3的效率也比其他为移动终端设计的网络(如ShuffleNetV2)略高,但性能要好得多。
总的来说,我们的实验结果验证了MobileNetV3可以用少量的时间资源达到高精度,这意味着它非常适合于计算资源有限、需要高效率的移动设备。
5) 关于合适数据集的特征的猜想:
作为实验结果分析的进一步,我们通过比较MobileNetv3对三个不同的数据集进行分类的性能,得出了关于哪种数据集更适合于MobileNetV3的一些猜想.
从图10(b)和单个数据集的ROC曲线(即图5、7和9)可以发现,Fruit-360数据集在极短的时间内导致1.0的准确度,而Monkey数据集在几个微调训练时期后对应于相当好的准确度(高于0.95)。然而,与其他两个数据集相比,Bird数据集的精度要低得多(低于0.50)。
考虑到这些数据集的特点,水果数据集是日常生活对象图像的代表,在大量不同类别之间没有显著差异。每个类别的训练集足够大,并且没有背景干扰。猴子数据集由仅来自十个类别的猴子的低分辨率动物图像组成。需要分类的猴子被放在图像的中心。图像背景是猴子通常生活的环境,但它们是模糊的。鸟类数据集只有十类鸟类的少量图像。虽然这些图像的分辨率很高,但图像背景杂乱,需要分类的鸟类在整个图像中的尺寸很小。
因此,我们假设适用于MobileNetV3分类任务的图像数据集的特征如下:
-
分类对象在没有强背景干扰的图像中被突出显示。
-
图像没有高分辨率要求(即,对低分辨率图像友好)。
-
对于已分类的类别,训练数据集在相对较大的规模上更好,这意味着已分类的对象在训练库中更常见。
-
被分类的对象处于其类别的典型形状或状态,并且背景最好也是常见的。
-
没有必要在数据集中的不同类别之间有明显的差异,因为CNN可以比人类的眼睛更精确地捕捉特征。
对MobileNetV3合适数据集的特性的实验总结表明,MobileNetV3是专为移动设备设计的,能够在极短的时间内处理日常生活照片的分类任务。
IV. 结论
本文基于通常由移动设备捕获和处理的图像数据集,比较了MobileNetV3和某些标准CNN模型的图像分类任务的性能。通过对实验结果的比较和分析,我们发现MobileNetV3模型能够以更高的效率完成图像分类任务。同时,它们的最终精度明显高于其他模型的精度。此外,我们注意到,MobileNetV3适用于包含具有较少背景干扰的日常生活对象的图像,即使图像是低分辨率的。因此,MobileNetV3可以非常方便地处理移动终端的图像分类任务。
作为我们研究的进一步工作,我们想要总结其他大型CNN的优势,这些优势可以用来进一步更好地调整MobileNetV3模型,以提高其性能,同时避免架构扩展。我们还计划使用MobileNetV3模型在更多的图像数据集上进行实验,旨在总结和确认在MobileNetV3上表现出色的图像的更普遍特征。
这篇关于用于图像分类的MobileNetV3算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略