def repvit_m0_9(pretrained=False, num_classes = 1000, distillation=False):
"""
Constructs a MobileNetV3-Large model
"""
cfgs = [
# k, t, c, SE, HS, s
[3, 2, 48, 1, 0, 1],
[3, 2, 48, 0, 0, 1],
[3, 2, 48, 0, 0, 1],
[3, 2, 96, 0, 0, 2],
[3, 2, 96, 1, 0, 1],
[3, 2, 96, 0, 0, 1],
[3, 2, 96, 0, 0, 1],
[3, 2, 192, 0, 1, 2],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 1, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 192, 0, 1, 1],
[3, 2, 384, 0, 1, 2],
[3, 2, 384, 1, 1, 1],
[3, 2, 384, 0, 1, 1]
]
return RepViT(cfgs, num_classes=num_classes, distillation=distillation)
repvit_m0_9
函数专门用于构建属于RepViT家族的一种特定变体的神经网络模型,这种模型架构深受MobileNetV3启发,同时引入了额外的特性和修改以增强效率和性能。
函数参数:
-
pretrained
:一个布尔标志,指示是否使用在某个数据集(如ImageNet)上预训练的权重加载模型。默认情况下,设置为False
,意味着模型将使用随机权重初始化。 -
num_classes
:一个整数,指定分类任务中的类别数量。默认值是1000,这通常是ImageNet数据集所用的类别数。 -
distillation
:一个布尔参数,指示模型是否应包含知识蒸馏的支持,这是一种技术,较小的学生模型从较大的教师模型中学习。默认情况下,设置为False
。
模型架构配置(cfgs
):
cfgs
变量是一个列表的列表,其中每个内部列表代表模型中的一个块。每个块配置由六个元素组成:
k
:卷积层的核大小。t
:在应用深度可分离卷积之前输入通道的扩展因子。c
:块后的输出通道数。SE
:Squeeze-and-Excitation(SE)块的存在,其中1
表示包含SE块。HS
:Hard Swish激活函数的存在,其中1
表示使用Hard Swish。s
:卷积层的步幅,影响输出特征图的空间维度。
这些配置定义了模型主干的结构,包括块的序列、它们的特性以及它们如何与输入数据交互。
返回值:
该函数返回一个根据所提供的参数和由cfgs
定义的架构配置的RepViT
模型实例。这个模型随后可用于诸如图像分类的任务,可能基于num_classes
和pretrained
参数针对特定数据集或应用进行微调。