深度可分离卷积 to MobileNet_v1 to MobileNet_v2

深度可分离卷积 to MobileNet_v1 to MobileNet_v2

深度可分离卷积

卷积

要解释深度可分离卷积,就要从卷积过程开始说起,我们假设输入为 N x H x W x C 的特征向量,其中N为特征向量个数,H、W为特征图的长宽,C为特征向量的通道数,当我们用k个卷积核进行卷积操作时,如果设置步长为1,那么最后输出为N x H x W x K

在这里插入图片描述

Depthwise

深度可分离卷积分为两个过程:

  • Depthwise
  • Pointwise

Depthwise作为可分离卷积第一步,主要是将特征图的通道分离开,来进行卷积操作,比如我们的输入数据维度为N x H x W x C,我们将数据分为C组,对每一组做3x3卷积,这样相当于搜集了每个通道的空间特征,即Depthwise特征

Pointwise

pointwise过程是对N x H x W x C 的输入上做k个普通的1x1卷积,相当于收集了每个点的特征,这样输出结果与直接对输入特征使用k个卷积核的结果相同

深度可分离卷积是Inception结构的极限版本,模型在低纬度嵌入上进行空间聚合,不会损失或损失太多的体现能力在这里插入图片描述

上面的简化版本,我们又可以看做,把一整个输入做为1*1卷积,然后切成三段,所以又出现了如下表现形式

在这里插入图片描述

我们考虑,如果不是分成三段,而是分成5段或更多(最多达到通道数),性能可能会更好。

在这里插入图片描述

MobileNet_v1

模型结构

在这里插入图片描述

在这里插入图片描述

在每一个Depthwise Conv 后都接一个BN和RELU层

优点分析
  • 轻量化 模型中没有使用池化操作,而是直接采用stride=2进行卷积操作

  • 用两个超参数来控制网络计算速度与准确度之间的平衡:

    1. Width Multiplier(α \alphaα): Thinner Models

      所有层的通道数(channel)乘以α参数,模型大小近似下降到原来的α²倍,计算量下降到原来的α²倍

    2. Resolution Multiplier(ρ \rhoρ): Reduced Representation

    输入层的分辨率(Resolution)乘以ρ参数,等价于所有层分辨率乘以ρ,模型大小不变,计算量下降为原来的ρ²倍

MobileNetV2

不同点主要在于:

  • 引入了shortcut结构(残差网络)
  • 2、在进行depthwise之前先进行1x1的卷积增加feature map的通道数,实现feature maps的扩张。(inverted residual block,一般的residual block是两头channel多总监featuremap的通道少(沙漏形态)。而inverted residual block是两头通道少,中间feature的通道多(梭子形态))
  • 3、pointwise结束之后弃用relu激活函数,改用linear激活函数,来防止relu对特征的破坏。作者认为,激活函数在高位空间能够有效的增加非线性,而在低维空间时则会破坏特征,不如线性的效果好

模型结构:

在这里插入图片描述

为什么要在Depthwise之前进行1x1卷积来增加feature map的通道数?

因为DW卷积的是对所有的通道进行卷积操作,通道数量成为制约卷积提取操作的关键因素,假如通道数很少的话,卷积只能在一个低纬空间中提取特征,因此效果不够好,所以我们在进行DW卷积之前,先对特征进行升维操作,这样DW卷积也会在一个相对高的维度进行特征提取工作

如通道数很少的话,卷积只能在一个低纬空间中提取特征,因此效果不够好,所以我们在进行DW卷积之前,先对特征进行升维操作,这样DW卷积也会在一个相对高的维度进行特征提取工作

MobileNetV2是一种轻量级的卷积神经网络模型,由Google开发并首次于2018年在论文《Inverted Residuals and Linear Bottlenecks》中提出。它是MobileNet系列的改进版本,旨在通过更高效的架构设计减少计算负担,同时保持或提高性能。MobilenetV2的特点包括: 1. ** inverted residual blocks** (倒置残差块):它采用了深度可分离卷积(depthwise separable convolutions),即先对每个输入通道应用一个点卷积(convolution),再做逐通道的汇聚操作,这减少了模型中的参数和计算。 2. **线性瓶颈结构**:相比MobileNet V1,使用了更窄的扩张路径,然后通过一个宽度跳跃连接直接链接到主干,这种设计有助于缓解信息瓶颈。 3. **分辨率调整策略**:网络在前几层保持较高的分辨率,随着网络深入逐渐减小,允许模型在低资源设备上运行得更好。 PyTorch的`torchvision.models.mobilenet_v2`提供了一个预训练的模型实例,可以直接用于图像分类和其他计算机视觉任务。你可以加载这个模型,进行微调(finetuning)或者作为特征提取器使用。如果你打算使用,可以按照以下步骤操作: ```python from torchvision import models model = models.mobilenet_v2(pretrained=True) # 或者可以选择不加载预训练权重 model = models.mobilenet_v2(pretrained=False) # 微调部分 for param in model.parameters(): param.requires_grad = False model.fc = nn.Linear(model.fc.in_features, num_classes) # num_classes是你自定义的类别数 criterion = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.fc.parameters(), lr=learning_rate) # 训练过程... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值