目标检测模型轻量化谁才是最佳的骨干网络,以MnasNet、MobileNet、GhostNet和ShuffleNet为基准,试验对比分析挖掘最优方案

在我们以往的实践中,轻量级网络大都是用语图像分类识别相关的任务中去的,在目标检测任务中则是比较少用到轻量化改造的方案的,最近正好有实际的项目需要,项目提供的算力是边缘端的弱算力设备,对于模型的要求就比较高了,不能计算量太大,否则的话没有办法有效支撑起来实际的计算需求,这里我们的想法是以原生的模型为基准,通过选择更加轻量级的骨干网络实现模型的轻量化改造,这里我们选择的实验对象主要包括:MnasNet、MobileNet、GhostNet和ShuffleNet四种,下面简单回顾下四款网络模型。

MobileNet

MobileNet系列发展至今,已经迭代了3个版本了,这里系统整体的对其发展进行介绍下。

【MobileNetv1】

MobileNetv1 是一种轻量级的卷积神经网络(CNN)架构,由 Google 团队在 2017 年提出。它的设计初衷是为了在移动设备上实现高性能的图像识别和物体检测任务,同时降低模型的计算量和内存占用。MobileNetv1 采用了深度可分离卷积(Depthwise Separable Convolution)作为其主要构建块,下面详细介绍其构建原理以及优缺点。

构建原理
MobileNetv1 采用了深度可分离卷积替代传统的卷积操作。深度可分离卷积可以将卷积操作拆分为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。具体来说:
深度卷积:对输入特征图的每个通道(channel)分别进行卷积操作,得到一个新的特征图。这一步保留了输入特征图的空间信息,但通道数量减少了一半。
逐点卷积:将上一个步骤得到的新特征图与原始输入特征图的通道数量进行逐点卷积,从而恢复输入特征图的通道数量。这一步主要用于提取特征图中的全局信息。
MobileNetv1 还采用了跳跃连接(skip connection)来保留低层次的细节信息。在每个深度可分离卷积层之后,都会将输入特征图与对应的跳跃连接相加,从而在模型中引入浅层特征的信息。

优点
计算效率高:MobileNetv1 通过深度可分离卷积大大降低了计算量,使得模型在移动设备上能够快速运行。与传统的卷积神经网络相比,MobileNetv1 在保持较高识别精度的同时,计算量降低了几个数量级。
模型轻量化:MobileNetv1 的结构相对简单,参数较少,因此模型的体积较小,便于在移动设备上部署。
易于扩展:MobileNetv1 可以很容易地通过调整网络深度、宽度以及输入特征图的尺寸来调整模型性能,以满足不同场景下的需求。

缺点
较低的识别精度:相较于传统的卷积神经网络,MobileNetv1 在某些任务上的识别精度有一定差距。这是因为深度可分离卷积在降低计算量的同时,也降低了模型的表达能力。
有限的适用范围:MobileNetv1 在轻量级任务(如图像分类、物体检测)上表现良好,但在重任务(如语义分割、人脸识别)上性能有限。这是因为该模型的设计初衷是应对移动设备上的性能限制,而非追求最高性能。
综上所述,MobileNetv1 作为一种轻量级的卷积神经网络,在计算效率和模型轻量化方面具有显著优势,但在识别精度和适用范围上有一定局限。针对不同的应用场景,可以灵活调整模型结构以达到平衡性能与计算量的目的。

【MobileNetv2 】

MobileNetv2 是 MobileNet 系列模型中的第二个版本,由 Google 团队在 2018 年提出。相较于 MobileNetv1,MobileNetv2 进一步优化了网络结构,提高了计算效率和识别精度。MobileNetv2 的构建原理可以分为以下几个方面:

构建原理
改进的深度可分离卷积:MobileNetv2 采用了改进的深度可分离卷积,通过合并逐点卷积和深度卷积的操作,减少了计算量。改进的深度可分离卷积相较于 MobileNetv1 中的原始深度可分离卷积,能够在降低计算量的同时提高识别精度。
激活函数:MobileNetv2 采用了线性激活函数(如 ReLU6 或 Swish),取代了 MobileNetv1 中的双曲正切激活函数(HT)。线性激活函数能够在提高计算效率的同时,减轻梯度消失问题,提高模型性能。
权重初始化:MobileNetv2 对权重进行了改进的初始化策略,采用了均匀分布的初始权重,取代了 MobileNetv1 中的高斯分布初始权重。这种改进能够提高模型在训练过程中的稳定性。
跳跃连接:MobileNetv2 保留了 MobileNetv1 中的跳跃连接机制,将浅层特征与深层特征进行融合,提高了模型的表达能力。

优点
更高的识别精度:相较于 MobileNetv1,MobileNetv2 在保持较低计算量的同时,提高了识别精度。这得益于改进的深度可分离卷积、线性激活函数以及权重初始化策略。
更快的训练速度:MobileNetv2 的改进深度可分离卷积和线性激活函数,使得模型在训练过程中的梯度更新更加稳定,从而提高了训练速度。
模型轻量化:MobileNetv2 的结构相对简单,参数较少,模型体积较小,便于在移动设备上部署。

缺点
有限的适用范围:虽然 MobileNetv2 在图像分类等轻量级任务上具有较高性能,但在重任务(如语义分割、人脸识别)上的表现仍有待提高。这是因为 MobileNetv2 主要针对移动设备上的性能限制进行优化,而非追求最高性能。
网络深度的限制:为了降低计算量,MobileNetv2 采用了较浅的网络结构。这使得模型在处理某些复杂任务时,可能无法捕捉到足够多的特征信息。
综上所述,MobileNetv2 模型在计算效率、识别精度以及模型轻量化方面取得了较好的平衡。针对不同的应用场景,可以根据需求调整模型结构,以达到性能与计算量的平衡。在实际应用中,MobileNetv2 可以作为一种高性能、低功耗的模型选择。

【MobileNetv3】

MobileNetv3是一种轻量级的卷积神经网络(CNN)模型,由Google Research提出,用于移动设备上的计算机视觉任务。与前两个版本(MobileNetv1和MobileNetv2)相比,MobileNetv3在性能和效率方面都有显著的提升。下面将详细介绍MobileNetv3的构建原理,并针对性地分析其优点和缺点。

构建原理
MobileNetv3采用了深度可分离卷积(Depthwise Separable Convolution)作为基本构建块,该操作将传统卷积操作拆分为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积操作通过对输入特征图的每个通道进行独立卷积,得到一组特征图;逐点卷积操作则对这些特征图进行逐点加权求和,得到最终的输出特征图。这两个步骤可以有效地减少计算量和参数数量,提高模型效率。

MobileNetv3的主要创新点在于提出了“瓶颈层”(Bottleneck)结构,该结构在深度可分离卷积的基础上,引入了全局平均池化(Global Average Pooling)和全连接层(Fully Connected Layer)。瓶颈层的作用是将输入特征图压缩为一个更小的特征图,从而降低模型的计算复杂度。此外,MobileNetv3还采用了“倒置残差块”(Inverted Residual Block)结构,该结构通过在网络中加入反向连接,有助于提高模型的深度,同时避免梯度消失问题。

优点
(1)高效性:MobileNetv3采用了深度可分离卷积和瓶颈层结构,有效地减少了模型参数数量和计算量,使得模型在移动设备上具有较高的运行效率。

(2)性能优越:MobileNetv3在许多计算机视觉任务上的表现优于MobileNetv2和ResNet等主流网络,同时在Top-1和Top-5准确率方面与EfficientNet-L2相同,但参数数量和计算量仅为EfficientNet-L2的1/8。

(3)轻量化:MobileNetv3适用于移动设备,可以实现在低功耗设备上的高性能计算机视觉任务。

缺点
(1)感受野限制:由于MobileNetv3主要针对移动设备,其输入图像尺寸较小(如640x640),导致网络中的感受野较小,可能在处理大型物体时表现不佳。

(2)规模限制:MobileNetv3的性能在某种程度上受到了模型规模的限制,例如较大的图像尺寸和更多的类别会导致模型性能下降。为了解决这个问题,研究人员提出了MobileNetv3-Large,通过扩大模型规模和调整网络结构,在一定程度上提高了性能。

总之,MobileNetv3作为一种轻量级的CNN模型,在移动设备上具有较高的性能和效率。然而,它在处理大型物体和复杂场景时可能受到一定的限制,因此在实际应用中需要根据具体任务和场景选择合适的模型。

GhostNet

GhostNet模型的算法构建原理是通过引入Ghost Module(幽灵模块)来设计高效的卷积神经网络。Ghost Module的提出主要是为了解决轻量化模型在准确率和计算效率之间的平衡问题。

构建原理
Ghost Module的核心思想是通过使用一个主幽灵卷积核和若干个辅幽灵卷积核来减少参数数量和计算量。主幽灵卷积核用于提取主要的特征信息,而辅幽灵卷积核则用于学习细节和辅助信息。通过这种方式,GhostNet能够在保持较高准确率的同时,显著减少了模型的大小和计算资源的使用。

优点
轻量化:GhostNet通过引入Ghost Module,大幅减少了参数数量和计算量。相比于传统的卷积操作,GhostNet能够在保持较高性能的同时,显著减小模型的大小和计算资源的使用。

高效性能:尽管GhostNet是一个轻量级的模型,但它在多个图像分类和目标检测任务上都能够取得较好的性能。Ghost Module的设计使得GhostNet能够在计算资源有限的情况下,仍然保持较高的准确率。

可迁移性:GhostNet可以在不同的任务和数据集上进行迁移学习。由于GhostNet的轻量化和高性能特点,它可以作为基础模型在其他任务和数据集上进行微调,往往能够获得较好的性能。

缺点
特征表示能力有限:由于GhostNet采用了Ghost Module的结构,模型的信息传递能力有一定的限制。相对于一些更深层次的模型,GhostNet可能在某些复杂任务上表现不如其他模型。

对小目标的检测效果相对较差:由于GhostNet的网络结构相对较浅,对于小目标的检测效果可能不如一些更深层次的模型。这是因为GhostNet在网络深度上的限制导致了它在捕捉细节和小尺寸目标方面的能力较弱。

GhostNet模型通过引入Ghost Module来实现轻量化和高效性能的模型。然而,它可能在特征表示能力和对小目标的检测效果方面存在一定的限制。在实际应用中需要综合考虑这些因素来选择合适的模型。

MnasNet

在设计一个模型搜索算法时,有三个最重要的点:
1、优化目标:决定了搜索出来的网络框架的性能和效率;
2、搜索空间:决定了网络是由哪些基本模块组成的;
3、优化策略:决定了强化学习的收敛速度。

构建原理
MnasNet模型的算法构建原理是通过使用弱连接搜索算法和自动化网络设计方法来构建高效的卷积神经网络模型。MNasNet的搜索空间很大程度上参考了MobileNet v2,通过强化学习的方式得到了超越其它模型搜索算法和其参照的MobileNet v2算法,从中可以看出人工设计和强化学习互相配合应该是一个更好的发展方向。MNasNet中提出的层次化搜索空间可以生成每个网络块都不通的网络结构,这对提升网络的表现也是有很大帮助的,但这点也得益于参考MobileNet v2设计搜索空间后大幅降低的搜索难度。

在弱连接搜索算法中,MnasNet使用了一种基于弱连接的搜索策略,通过在网络的每个位置引入弱连接,然后通过选择性地增加和删除连接来搜索网络结构。这种方法可以显著减少搜索空间并提高搜索效率。

在自动化网络设计方法中,MnasNet使用了一种自动化的网络设计方法来优化网络结构。该方法通过定义一组可行的操作和权重空间,并使用强化学习算法来搜索最优的网络结构。这种方法可以自动地学习网络结构,并在保持高性能的同时减少模型的大小和计算资源的使用。

优点
高性能:MnasNet通过使用弱连接搜索算法和自动化网络设计方法,能够搜索和设计出高性能的卷积神经网络。这些网络在多个图像分类和目标检测任务上展示了较好的性能。

轻量化:MnasNet在网络设计过程中考虑了模型的大小和计算资源的使用。通过自动化网络设计方法,MnasNet能够减少模型的大小和计算量,从而在保持高性能的同时实现轻量化。

可扩展性:MnasNet的自动化网络设计方法具有较强的可扩展性。它可以根据不同的任务和数据集进行自动化的网络设计,并能够适应不同的计算资源限制和应用场景需求。

缺点
训练时间较长:由于MnasNet使用了自动化网络设计方法,需要在大规模的搜索空间中进行搜索和训练,因此训练时间较长。

部署和推理速度较慢:由于MnasNet的网络结构相对较复杂,导致在部署和推理过程中需要更多的计算资源。特别是在计算资源有限的设备上,可能会影响模型的部署和实时推理效果。

MnasNet模型通过弱连接搜索算法和自动化网络设计方法构建了高性能和轻量化的模型。然而,它的训练时间较长,部署和推理速度较慢,需要在实际应用中综合考虑这些因素。

ShuffleNet

ShuffleNet 使用是一种计算效率极高的CNN架构,它是专门为计算能力非常有限的移动设备设计的 ;ShuffleNet系列发展至今已经迭代了两个版本,下面对其进行介绍。

【ShuffleNetV1】

ShuffleNetV1(随机网络)是一种基于深度学习的计算机视觉模型,其主要构建原理如下:

动机:传统的卷积神经网络(CNN)在提取特征时,往往通过逐层提取的方式,从原始图像中提取出高级别的特征。而ShuffleNetV1则尝试通过降低计算复杂度,提高模型效率。

构建原理
引入“分组卷积”:将输入特征图分成若干组,每组内部进行卷积操作。分组卷积可以在降低计算量的同时,保持模型性能。
“池化”:在对特征图进行分组卷积后,采用池化操作(如最大池化、平均池化等)对特征图进行降采样。
“逐点卷积”:在池化操作之后,使用逐点卷积(也称为全局卷积)对特征图进行进一步处理。逐点卷积可以在保持模型性能的同时,降低计算复杂度。
“跳步连接”:将不同层级的特征图进行跳跃式连接,以便于在降低计算复杂度的同时,保留模型对高层次特征的敏感度。
“输出”:经过以上操作后,ShuffleNetV1的输出为各层级特征图的融合结果。

优点
计算高效:通过引入分组卷积、逐点卷积等操作,降低模型计算复杂度,提高计算效率。相较于传统的CNN模型,ShuffleNetV1在保持性能的同时,显著减少了计算量。

轻量化:ShuffleNetV1的结构相对简单,参数较少,因此模型的体积较小,易于部署在硬件资源有限的设备上。

易于优化:由于模型计算复杂度较低,ShuffleNetV1在训练过程中能够更快地收敛,提高训练效率。

缺点
性能限制:虽然ShuffleNetV1在许多计算机视觉任务中取得了较好的性能,但与一些更复杂的网络结构(如ResNet、Inception等)相比,其性能仍有差距。这意味着在某些高精度需求的场景中,ShuffleNetV1可能不是最佳选择。

适用范围有限:ShuffleNetV1在降低计算复杂度的过程中,可能牺牲了一部分性能。因此,在一些对计算资源有限制的场景中,例如移动设备,ShuffleNetV1可以作为一种有效的解决方案。然而,在计算资源充足的情况下,可能需要考虑其他性能更优秀的模型。

参数调整困难:由于ShuffleNetV1的结构相对简单,参数较少,当模型性能不尽如人意时,很难通过调整参数来优化模型。

难以扩展:ShuffleNetV1的设计初衷是为了降低计算复杂度,因此在扩展模型规模时,可能面临性能瓶颈。例如,将ShuffleNetV1扩展到更深或更宽的网络结构时,可能会导致性能下降。

【ShuffleNetV2】

ShuffleNetV2模型的算法构建原理是通过引入逐通道组卷积和通道重排操作来设计高效的卷积神经网络。它的核心思想是通过在网络中引入通道重排操作,从而减少模型的计算量和参数数量。

构建原理
分组卷积:将输入特征图按通道分成多个组,并对每个组进行卷积操作。这样可以减小计算复杂度和参数数量。

逐通道组卷积:在每个分组内,使用逐通道的卷积操作进行特征图的变换。这样可以增加特征之间的交互,提高特征表示能力。

通道重排:将分组卷积后的特征图进行通道重排操作,将特征图重新排列为原始通道的形式。这样可以保持特征图的多样性,并提高特征图的表达能力。

优点
轻量化:ShuffleNetV2通过引入逐通道组卷积和通道重排操作,减少了模型的计算量和参数数量。相比于传统的卷积操作,ShuffleNetV2能够在保持较高性能的同时,显著减小模型的大小和计算资源的使用。

高效性能:尽管ShuffleNetV2是一个轻量级的模型,但它在多个图像分类和目标检测任务上都能够取得较好的性能。逐通道组卷积和通道重排操作的引入使得ShuffleNetV2能够在计算资源有限的情况下,仍然保持较高的准确率。

可扩展性:ShuffleNetV2的设计具有较强的可扩展性。通过调整分组数和通道数的大小,可以根据不同的计算资源限制和应用场景需求,设计出适合的模型。

缺点
特征表示能力相对有限:由于ShuffleNetV2采用了逐通道组卷积和通道重排操作,模型的信息传递能力有一定的限制。相对于一些更深层次的模型,ShuffleNetV2可能在某些复杂任务上表现不如其他模型。

对小目标的检测效果相对较差:由于ShuffleNetV2的网络结构相对较浅,对于小目标的检测效果可能不如一些更深层次的模型。这是因为网络深度的限制导致了它在捕捉细节和小尺寸目标方面的能力较弱。

ShuffleNetV2模型通过引入逐通道组卷积和通道重排操作来实现轻量化和高效性能的模型。然而,它可能在特征表示能力和对小目标的检测效果方面存在一定的限制。在实际应用中需要综合考虑这些因素来选择合适的模型。

这里我们官方原生的目标检测模型选择的是yolov5n,以yolov5n为基准研究对象,尝试进行不同的骨干网络的替换。单纯地进行骨干网络的替换会不可避免的损失精度,这里我们考虑除了在骨干网络部分替换轻量级网络模型之外,还要在neck网络部分加入aspp等特征融合模块,以期提升骨干网络特征的计算能力。

这里对于数据等部分不再进行赘述,本文的主要目的是是想要进行多维度的对比实验分析,接下来我们来看下具体的实验结果。

我们以网络为统一维度来看,首先是GhostNet模型:
【F1】

【loss】

【mAP0.5】

【mAP0.5:0.95】

【Precision】

【Recall】

接下来是MnasNet

【F1】

【loss】

【mAP0.5】

【mAP0.5:0.95】

【Precision】

【Recall】

接下来是MobileNet

【F1】

【loss】

【mAP0.5】

【mAP0.5:0.95】

【Precision】

【Recall】

最后是ShuffleNet

【F1】

【loss】

【mAP0.5】

【mAP0.5:0.95】

【Precision】

【Recall】

综合实验分析来看:不同轻量化的方案取得了较为相近的结果,不过不同的骨干网络模型在具体的指标上还是由细微的差别的,结合最终网络模型的参数量选择,我们更倾向于选择ghostnet的方案。

### 比较GhostNetMobileNet神经网络模型的精度 对于不同类型的卷积神经网络,在评估其性能时,通常会考虑多种因素来衡量准确性。当比较像GhostNetMobileNet这样的轻量化架构时,重要的是要理解两者的设计理念以及它们如何影响最终的结果。 #### 设计哲学差异 GhostNet引入了一种新颖的方法来构建高效的卷积层,通过利用特征图之间的冗余性减少计算量而不显著降低表现力[^1]。相比之下,MobileNet系列则依赖于深度可分离卷积(depthwise separable convolutions),这种方法可以大幅削减参数数量并加速推理过程,同时保持较高的识别能力[^2]。 #### 准确性的考量 准确性的测量往往取决于具体的任务需求数据集特性。一般而言: - **训练集规模的影响**:较大的训练样本有助于提高泛化能力稳定性。研究表明,随着训练集合的增长,某些高效模型可能会显示出更好的收敛性更高的上限潜力。 - **输入分辨率的作用**:为了有效捕捉细粒度的信息,特别是针对目标检测等应用场景,适当提升输入图片的质量至关重要。这可能意味着采用更高解析度作为输入给定模型,从而增强细节描述的能力[^3]。 #### 实验对比分析 具体到GhostNetMobileNet之间精确度上的区别,实际测试结果表明,在ImageNet基准上,尽管二者都属于紧凑型设计,但GhostNet能够在相似甚至更少资源消耗的情况下达到接近或超越MobileNetV3的表现水平。例如,在Top-1错误率方面,GhostNet取得了约4.8%的优势;而在FLOPs指标下,则实现了大约50%以上的效率增益。 ```python import torch from torchvision import models ghostnet = models.ghostnet(pretrained=True) mobilenet_v3_small = models.mobilenet_v3_small(pretrained=True) # 假设已经准备好了一个验证集 dataloader 相应的评价函数 evaluate_accuracy accuracy_ghostnet = evaluate_accuracy(ghostnet, val_loader) accuracy_mobilenet = evaluate_accuracy(mobilenet_v3_small, val_loader) print(f'Accuracy of GhostNet: {accuracy_ghostnet:.4f}') print(f'Accuracy of MobileNet V3 Small: {accuracy_mobilenet:.4f}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值