MobileNet系列(2):MobileNet-V2 网络详解

这篇具有很好参考价值的文章主要介绍了MobileNet系列(2):MobileNet-V2 网络详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MobileNet-V2论文:Inverted Residuals and Linear Bottlenecks, MobileNet-V2网络是由google团队在2018年提出的,相比MobileNetV1网络,准确率更高,模型更小

网络中的亮点

  • Inverted Residuals (倒残差结构)
  • Linear Bottlenecks

Inverted Residuals (倒残差结构)

普通的残差结构

Resnet 网络提供的残差结构,如下图:
MobileNet系列(2):MobileNet-V2 网络详解

  • 首先对输入特征矩阵,通过1x1卷积进行压缩,降低channel的大小
  • 然后通过3x3的卷积核进行卷积处理
  • 最后通过1x1的卷积核来扩充channel

这样就形成了,两头大中间小的瓶颈结构

倒残差结构

MobileNet-V2网络采用的是倒残差结构,网络结构如下图:
MobileNet系列(2):MobileNet-V2 网络详解

  • 首先对输入特征矩阵,通过1x1卷积进行升维,增加channel的大小
  • 然后通过3x3DW卷积核进行卷积处理
  • 最后通过1x1的卷积核进行降维

可以看出:普通的残差结构先通过1x1卷积进行降维,最后通过1x1卷积升维倒残差结构刚好相反,首先通过1x1卷积进行升维,最后通过1x1卷积进行降维,所以它和我们普通的残差结构正好是相反的,因此取名(Inverted residual block)倒残差结构。

MobileNet系列(2):MobileNet-V2 网络详解
还有一个要注意的是:普通残差结构使用的激活函数是relu,但倒残差结构使用的是relu6激活函数。
MobileNet系列(2):MobileNet-V2 网络详解

ReLU6激活函数
  • 对于ReLU激活函数,当我们的输入值小于0的时候,默认都将它置0.当输入值大于0的时候,输出值跟输入值一样,不做处理
  • 对于ReLU6激活函数,同样当我们的输入值小于0的时候,默认都将它置0.在[0,6]区间内我们也同样不会改变它的输入值,但是当输入值大于6的时候,就会将输出值置为6.

Linear Bottlenecks

在原文中,倒残差解雇最后1x1卷积层,它使用了线性激活函数,而不是我们之前所说的ReLU激活函数。为什么要这么做呢,在原论文中作者进行了相关实验。
MobileNet系列(2):MobileNet-V2 网络详解
假设我们输入的是二维矩阵,channel=1.分别使用不同的矩阵 T T T将它变换到不同维度上,在使用ReLU激活函数进行输出,然后在使用逆矩阵 T − 1 T^{-1} T1将它还原为2D的特征矩阵。当我们的矩阵 T T T的维度是2和3的时候对应的是图中output/dim=2output/dim=3,这两幅图。通过这两幅图我们可以知道当还原为2维矩阵会丢失很多信息。但随着矩阵 T T T维度不断加深丢失的信息就越来越少。

通过该实验可以了解ReL激活函数对低纬特征造成大量损失, 由于我们倒残差结构是两头细中间粗的结构,所以输出的时候是一个低纬的特征。为了避免信息的丢失我们就需要使用一个线性的激活函数替代ReLU激活函数。

MobileNet系列(2):MobileNet-V2 网络详解
MobileNet系列(2):MobileNet-V2 网络详解
对于倒残差结构,首先通过1x1卷积,它的激活函数为ReLU6;紧接着通过DW卷积,卷积核为3x3,它的激活函数为Relu6,最后在通过再通过1x1的卷积处理,使用的是Linear激活函数而不是ReLU6激活函数,也就是对应于表中所给的每一层信息。

首先对于输入特征为h x w x k(高、宽、channel), 使用1x1的卷积核对它进行升维处理,经过升维后,输出特征矩阵的channel变为tk,t表示扩充因子。紧接着第二层,它的输入对应于上一层的输出h x w x tk,使用DW卷积,卷积核为3x3步距为s,激活函数为ReLU6,经过DW卷积,它不会改变channel的大小,输出的channel和输入是一样的,同时由于我们步距为s,因此输出特征矩阵h,w变为原来的1/s倍。最后通过1x1的卷积层,使用Linear激活函数,进行降维操作,降维后输出的channel个数为 k ′ k^{'} k.

注意: 在MobileNetV2版本中,它的倒残差结构,并不是每个倒残差结构都有shortcut分支(捷径分支),只有当stride=1且输入特征矩阵与输出特征矩阵的shape相同时才有shortcut分支。

MobileNet-V2 网络结构

MobileNet系列(2):MobileNet-V2 网络详解
网络结构图图中参数说明:

  • t是扩展因子
  • c是输出特征矩阵深度channel
  • n是bottleneck的重复次数, bottleneck这里指倒残差结构
  • s是步距

其中这里的s代表的是每个block(多个bottleneck组成)第一层bottleneck的步距其他都是为1的),比如这里表中第3行对应n=2的时候,对应的bottleneck需要重复2遍的,对它而言,它的第一层bottleneck步距是为2的,它的第二层步距s是等于1的。
MobileNet系列(2):MobileNet-V2 网络详解
另外需要注意的是,在网络结构图中第一个bottleneck,它这里的t是等于1的,也就是说扩展因子为1,就是说第一层卷积层对输入特征的深度是没有做调整的,并且这层的步距s=1 tensorflow pytorch官方实现是没有使用1x1的卷积的,直接使用后面的DW卷积的,因此第一个bottleneck中的1x1卷积是可以不要的。

举例说明:只有当stride=1且输入特征矩阵与输出特征矩阵的shape相同时才有shortcut分支。
MobileNet系列(2):MobileNet-V2 网络详解
对于图中红框标出的block,总共有3个bottleneck,它的第一层肯定是没有shutcut分支的,因为输入特征channel64,输出channel为96,输入输出特征矩阵channel是不相等的,没法使用shutcuts的add操作。对于第二层,它的步距还是等于1的,我们说过这里的步距s只针对第一层,其他层s都为1.然后它的输入特征矩阵是上一层的输出特征矩阵的channel,即channel为96,然后它的输出特征也是等于96的,因此输入输出的特征矩阵尺寸和channel都一样,因此可以通过shortcuts进行相加。

最后一层是一个卷积层1x1x1280,这里的卷积层就是一个全连接层。这里的k对应于我们的分类个数

网络的性能对比

MobileNet-V2 论文中给出了网络性能对比

分类任务

MobileNet系列(2):MobileNet-V2 网络详解
对于MobieNet V2 Top1准确率为72.0,相对于MobieNet V1准确率为70.6,准确率提升了。同时参数,运算量和运算时间都明显比MobieNet V1更加优秀。在cpu上MobieNet V2 运算时间只有75ml,基本上可以实现在移动设备上实时推理效果。

当卷积核倍率因子为1.4时,MobieNet V2 TOP1准确率达到74.7,比论文中其他网络的准确率高

目标检测论文

MobileNet系列(2):MobileNet-V2 网络详解
在论文中,将MobileNet V2与我们的SSD进行联合使用的,也就是说将我们MobileNet当作我们的backbone,并将SSD当中的一些卷积层也换成了我们深度可分(DW+PW卷积,相比于最原始的 SSD300、SSD512,YOLOV2,以及MobileNet V1+SSD,它的准确率为22.1%比YOLO V2要好,其中参数,运算量,运算时间都是最优的,在CPU中检测时间达到了200ms.随着MobieNet网络的提出,实现了在移动识别、嵌入式设备中跑我们的模型了。文章来源地址https://www.toymoban.com/news/detail-454528.html

到了这里,关于MobileNet系列(2):MobileNet-V2 网络详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【轻量化网络】MobileNet系列

    论文:https://arxiv.org/abs/1704.04861 代码: 解读:【图像分类】2017-MobileNetV1 CVPR_說詤榢的博客-CSDN博客   论文:https://arxiv.org/abs/1801.04381 代码:https://github.com/d-li14/mobilenetv2.pytorch 解读:【图像分类】2018-MobileNetV2_[18]sandler m,howard a,zhu m,et al. mobilenetv2: i_說詤榢的博客-CSDN博客 论文

    2024年02月09日
    浏览(32)
  • 【RT-DETR有效改进】华为 | GhostnetV2移动端的特征提取网络效果完爆MobileNet系列

    👑 欢迎大家订阅本专栏,一起学习RT-DETR 👑  本文给大家带来的改进机制是华为移动端模型GhostNetV2,华为 GhostNetV2 是为 移动应用设计的轻量级卷积神经网络(CNN) ,旨在提供更快的推理速度,其引入了一种硬件友好的注意力机制,称为DFC注意力。这个注意力机制是基于全

    2024年01月22日
    浏览(51)
  • MobileNet系列(万文长字详细讲解,一篇足以)

    本篇讲一下CV相关的东西,MobileNet,想必大家已经很熟悉了,包括里面的一些模块,一些轻量型思想也是经常用到的。在这里我也是想着做一下总结,整理一下,也讲一讲自己的理解和看法。卷积神经网络CNN已经普遍应用在计算机视觉领域,并且已经取得了不错的效果。近年

    2024年02月06日
    浏览(40)
  • 轻量化CNN网络 - MobileNet

    传统卷积神经网络,内存需求大、运算量大,导致无法在移动设备以及嵌入式设备上运行。 MobileNet网络是由google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量。(相比V

    2024年01月18日
    浏览(32)
  • 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)

    摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别、视频识别、摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示。首先介绍了表情识别任务的背景与意义,总结近年来利用深度学习进行表情识别的相关技术和工作。在数据集选择上,本文选择

    2024年02月02日
    浏览(34)
  • Pytorch迁移学习使用MobileNet v3网络模型进行猫狗预测二分类

    目录 1. MobileNet 1.1 MobileNet v1 1.1.1 深度可分离卷积  1.1.2 宽度和分辨率调整 1.2 MobileNet v2 1.2.1 倒残差模块 1.3 MobileNet v3 1.3.1 MobieNet V3 Block  1.3.2 MobileNet V3-Large网络结构 1.3.3 MobileNet V3预测猫狗二分类问题 送书活动   MobileNet v1 是MobileNet系列中的第一个版本,于2017年由Google团队提

    2024年02月14日
    浏览(39)
  • Python基于深度学习机器学习卷积神经网络实现垃圾分类垃圾识别系统(GoogLeNet,Resnet,DenseNet,MobileNet,EfficientNet,Shufflent)

    文章目录 1 前言+ 2 卷积神经网络(CNN)详解+ 2.1 CNN架构概述+ 2.1.1 卷积层+ 2.1.2 池化层+ 2.1.3 全连接层 2.2 CNN训练过程+ 2.3 CNN在垃圾图片分类中的应用 3 代码详解+ 3.1 导入必要的库+ 3.2 加载数据集+ 3.3 可视化随机样本+ 3.4 数据预处理与生成器+ 3.5 构建、编译和训练CNN模型+ 3.5.

    2024年02月04日
    浏览(54)
  • EfficientNet系列(1): EfficientNetV2网络详解

    EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks,这篇论文是Google在2019年发表的文章。 EfficientNet这篇论文,作者同时关于 输入分辨率,网络深度,宽度 对准确率的影响,在之前的文章中是 单独增加图像分辨率或增加网络深度或单独增加网络的宽度 ,来试着提升网络的

    2023年04月25日
    浏览(33)
  • 【Linux系列】vmware虚拟机网络配置详解

    原文地址 [1] 首发博客地址 [2] 系列文章地址 [3] vmware 为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 打开 vmware 虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到 VMnet0(桥接模式)

    2024年02月10日
    浏览(43)
  • 【计算机网络】—— 详解码元,传输速率的计算|网络奇缘系列|计算机网络

    🌈个人主页:  Aileen_0v0 🔥系列专栏:  一见倾心,再见倾城  ---  计算机网络~ 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 目录 码元  速率和波特 思考1   思考2  思考3 带宽(Bandwidth)  📝总结 码元 是指用一个 固定时长的信号波形 _(数字脉冲),代表不同离散数值的基本波

    2024年02月04日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包