《MobileNetV1 + MobileNetV2 + MobileNetV3 》论文阅读笔记

本文深入解析MobileNetV1、V2和V3的结构与优化,对比标准卷积与深度可分离卷积,探讨宽度乘子和分辨率乘子的影响,以及各版本中引入的创新,如SE结构、非线性变换的改变。通过模型代码分析,展示在移动视觉应用中的高效性能。
摘要由CSDN通过智能技术生成

目录

一、《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》

第一点:标准卷积和深度可分离卷积的区别。包括参数对比

第二点:理解两个超参数:宽度乘子和分辨率乘子

第三点:分析模型代码以及模型参数变化

二、《MobileNetV2: Inverted Residuals and Linear Bottlenecks》 

第一点:对比MobileNet V1与V2的网络结构

第二点:对比MobileNet V1与ResNet的网络结构

第三点:网络结构

第三点:分析模型代码及结构

三、《Searching for MobileNetV3》

第一点:引入SE结构

第二点:修改尾部结构

第三点:修改通道数​​

第四点: 非线性变换的改变

第五点:分析模型代码和参数

四、模型图

第一点:MobileNetV1网络结构图

第二点:MobileNetV2网络结构图

第三点: MobileNetV3网络结构图


 说明:代码及模型都是基于分类的。可以先看大致看一下模型图,再去看其他部分。


一、《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》

摘要:我们为移动和嵌入式视觉应用提出了一种称为MobileNets的有效模型。  MobileNets基于简化的架构,该架构使用深度可分离卷积来构建轻型深度神经网络。 我们介绍了两个简单的全局超参数,它们可以有效地在延迟和准确性之间进行权衡。 这些超参数允许模型构建者根据问题的约束条件为其应用选择合适大小的模型。 我们对资源和精度进行了广泛的权衡取舍,与ImageNet分类中的其他流行模型相比,我们展示了强大的性能。 然后,我们演示了MobileNets在各种应用程序和用例中的有效性,包括对象检测,细粒度分类,人脸属性和大规模地理定位。

第一点:标准卷积和深度可分离卷积的区别。包括参数对比

1、标准卷积

(1)卷积核的参数量:,其中表示卷积核的大小,M表示输入通道的大小,N表示输出通道的大小。

(2)计算量:表示特征图的大小

2、深度可分离卷积:depthwise卷积和pointwise卷积

2.1 depthwise卷积

(1)卷积核的参数量:表示卷积核的大小,M表示输入通道的大小。

(2)计算量:

2.2 pointwise卷积

(1)卷积核的参数量:1x1xMxN

(2)计算量:

3、参数对比

4、以上三种卷积的图示:图来源 可分离卷积

(1)常规卷积运算

(2)Depthwise Convolution

(3)Pointwise Convolution

第二点:理解两个超参数:宽度乘子和分辨率乘子

1.宽度乘子:用α示,该参数用于控制特征图的维数,即通道数。

2.分辨率乘子:用ρ表示,该参数用于控制特征图的宽/高,即分辨率

第三点:分析模型代码以及模型参数变化

1、model.py

import torch
import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        #标准卷积
        def conv_bn(inchannels, outchannels, stride):
            return nn.Sequential(
                nn.Conv2d(inchannels, outchannels, 3, stride, 1, bias=False),
                nn.BatchNorm2d(outchannels),
                nn.ReLU(inplace=True)
            )
        #深度可分离卷积
        def conv_dw(inchannels, outchannels, stride):
            return nn.Sequential(

                nn.Conv2d(inchannels, inchannels, 3, stride, 1, groups=inchannels, bias=False),
                nn.BatchNorm2d(inchannels),
                nn.ReLU(inplace=True),

                nn.Conv2d(inchannels, outchannels, 1, 1, 0, bias=False),
                nn.BatchNorm2d(outchannels),
                nn.ReLU(inplace=True),
            )

        self.model = nn.Sequential(
            conv_bn(3, 32, 2),
            conv_dw(32, 64, 1),
            conv_dw(64, 128, 2),
            conv_dw(128, 128, 1),
            conv_dw(128, 256, 2),
            conv_dw(256, 256, 1),
            conv_dw(256, 512, 2),
            conv_dw(512, 512, 1),
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值