轻量化网络-MobileNet系列

整理备忘


目录

1. MobileNetV1

1.1 论文

1.2 网络结构

1.3 深度可分离卷积

1.4 计算量下降了

1.5 参数量下降了

2. MobileNetV2

2.1 论文

2.2 网络结构

2.3 效果

3. MobileNetV3

3.1 论文

3.2 网络结构

3.3 效果 


1. MobileNetV1

1.1 论文

https://arxiv.org/abs/1704.04861

MobileNets基于流线型架构,使用深度可分离卷积来构建轻量级的深度神经网络。

1.2 网络结构

以深度可分离卷积为组件,构建的网络结构如下:

Figure3是深度可分离网络组件Conv dw,Table1是MobileNetV1网络结构。前五次通过Conv dw进行下采样,最后一次通过Avg Pool下采样变成1x1x1024,再接分类层,网络结构简单。

1.3 深度可分离卷积

 图片来源:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 - 知乎

普通卷积:使用大小为5x5x3的卷积,去和12x12x3特征图点乘求和,得到8x8的特征图,有256个卷积去卷积,就得到8x8x256的特征图:

深度可分类卷积:将普通卷积(核大小5x5x3)拆分成深度卷积(核大小5x5x1),逐点卷积(核大小1x1x3),过程如下图。

(1)深度卷积,逐个通道去卷积,一个卷积(核大小5x5x1)去卷12x12x3,得到8x8x3特征图

(2)逐点卷积(就是1x1的卷积),逐个点去卷积,一个卷积(核大小1x1x3)去卷8x8x3,得到8x8x1特征图

256个卷积去卷,就得到8x8x256特征图

 1.4 计算量下降了

(1)普通卷积的计算量

 D_k是卷积核大小,M,N分别是输入通道数,输出通道数;D_F是特征图大小。

(2)深度卷积的计算量

(3)两者比例,输出通道数N和卷积核大小D_k越大,深度可分离卷积计算量相对就越小:

卷积核大小是3x3,计算量下降到原来的1/9到1/8. 

将普通卷积换成深度可分离卷积后,实验效果,计算量下降了很多,但是精度没有下降多少。

1.5 参数量下降了

不仅计算量下降了很多,总参数数量也下降了。

(1)普通卷积

对于一个普通的卷积层,假设输入通道数为M,输出通道数为N,卷积核大小为(D_K, D_K, M),那么参数数量可以为,一个卷积核的参数量是M*D_K*D_K,有N个卷积核:

N*M*D_K*D_K

(2)深度可分离卷积

  • 深度卷积:对每个输入通道进行单独的卷积(核大小是5x5x1),只有一个深度卷积核,所以

1*M*D_K*D_K

  • 逐点卷积:在深度卷积之后,应用1×1的卷积(核大小是1x1xM)来组合输出通道,有N个逐点卷积核,所以参数数量为:

N *M*1*1

 深度可分离卷积,总参数量是:

1*M*D_K*D_K +N *M*1*1

2. MobileNetV2

(1)MobileNetV2引入了残差连接,有助于梯度的流动,提高了网络的训练效率;

(3)MobileNetV2通过调整超参数,如宽度乘数(Width Multiplier)和分辨率乘数(Resolution Multiplier),提供了更大的灵活性,可以根据应用场景进行调整。

2.1 论文

https://arxiv.org/abs/1801.04381

2.2 网络结构

(1)同样是5次下采样,最后是一次AvgPooling接分类层。

(2)不同的是组件不再是一种深度可分离卷积,而是水桶型结构:先1x1卷积通道升维,再深度卷积,再接1x1卷积(也就是逐点卷积)降维,这里与Resnet刚好相反(所以叫Inverted Residuals),ResNet 先降维(0.25倍)、卷积、再升维,是沙漏型结构。

(3)步长为1时,再接一个跳层连接。

其中t是扩展通道的倍数。

为何要升维度呢?因为深度卷积没有升维度的能力,如果输入特征通道很少,则深度卷积只能在低维度上工作。所以先1x1卷积进行升维度。

2.3 效果

左图分类,右图分割任务。参数量更少,速度更快,准确率更高(实际哪个好要自己试)。 

3. MobileNetV3

3.1 论文

 Searching for MobileNetV3

https://arxiv.org/abs/1905.02244

(1)提出一种新的激活函数Hard Swish;

(2)引入了通道注意力机制(Channel Attention),以便网络能够更好地关注对特定任务重要的通道,从而提高了模型的性能。

(3)通过NAS,提供了两个不同的版本MobileNetV3,Large和Small,以适应不同的应用场景。MobileNetV3-Large在准确性上更为注重,而MobileNetV3-Small则更注重轻量化和快速推理。

3.2 网络结构

去掉V2最后几层卷积(黄色区域),然后后面接一个Avg-pooling再接分类层。

其中网络组件搞得更加复杂,V2和V3对比。

网络结构: 

3.3 效果 

图像分割任务,V3-Small在cpu下,1024x2048图片用时1.21s,512x1024用时0.327s.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/292984.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始python学习-39.requsts库

目录 HTTP协议 1. 请求 2. 响应 Requests库 1. 安装 2. 请求方式 2.1 requests.请求方式(参数) 2.2 requests.request() 2.3 requests.session().request() 2.4 三种方式之间的关联 3. 请求参数 3.1 params:查询字符串参数 3.2 data:Form表单…

出现 No such instance field: ‘XXXX‘ 的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 作为一个全栈的开发玩家,需要调试前后端的数据传输,方便发现问题所在! 在debug整个项目的时候,检查传输数据的时候,发现前端可以传输,但是后端一直拿不到 出现如下问题:No such instance field: parentModel 截图…

【git使用】了解三种git commit合并的使用场景(rebase、merge、cherry-pick)

参考 【Git学习笔记】逃不掉的merge和rebase-腾讯云开发者社区-腾讯云git merge 和 git rebase - 知乎git cherry-pick 教程 - 阮一峰的网络日志 简单理解各种合并的方法 线性合并,使用 rebase —— feature 分支开发,提交前拉取 master 最新改动进行…

Java Review - MapStruct_使用 Intellij 和 Maven Debug 分析MapStruct实现原理

文章目录 Java动态编译、JSR 269 和 MapStructJSR 269JSR 269的工作原理MapStruct示例 MappingProcessor调试编译期生成的代码 Java动态编译、JSR 269 和 MapStruct Java动态编译是指在运行时动态地将Java源代码编译成字节码并加载到Java虚拟机中执行。 JSR 269 是Java规范请求…

使用Kafka与Spark Streaming进行流数据集成

在当今的大数据时代,实时数据处理和分析已经变得至关重要。为了实现实时数据集成和分析,组合使用Apache Kafka和Apache Spark Streaming是一种常见的做法。本文将深入探讨如何使用Kafka与Spark Streaming进行流数据集成,以及如何构建强大的实…

Java面试题之集合篇

前言 本篇主要总结JAVA面试中关于集合相关的高频面试题。本篇的面试题基于网络整理以及自己的总结编辑。在不断的完善补充哦。欢迎小伙伴们在评论区发表留言哦! 1、基础 1.1、Java 集合框架有哪些? Java 集合框架,大家可以看看 《Java 集…

读算法霸权笔记11_微目标

1. 脸书 1.1. 一份请愿书属于脸书了,而社交网络的算法会对如何最大限度地利用这份请愿书做出判断 1.1.1. 脸书的算法在决定谁能看到我的请愿书时会把所有因素都考虑在内 1.2. 通过改变信息推送的方式,脸书研究了我们…

MATLAB全局最优搜索函数:GlobalSearch函数

摘要:本文介绍了 GlobalSearch 函数的使用句式(一)、三个运行案例(二)、以及 GlobalSearch 函数的参数设置(三、四)。详细介绍如下: 一、函数句法 Syntax gs GlobalSearch gs Glo…

java每日一题——输出星星塔(答案及编程思路)

前言: 打好基础,daydayup! 题目:请编写输出如下图的星星塔 编程思路:1,计算要输入几行;2,计算每行的⭐数量,及空格的数量;计算相应的关系; 如图:假…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章: 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

react+AntDesign 之 pc端项目案例

1.环境搭建以及初始化目录 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start2.安装SCSS SASS 是一种预编译的 CSS,支持一些比较高级的语法,…

优化企业运营,深入探索SAP库存管理解决方案

SAP库存管理是SAP提供的一款领先的企业库存管理解决方案。它致力于帮助企业实现对库存的全面掌控,优化供应链管理,降低库存成本,提高客户满意度。这个功能强大的系统为企业提供了丰富的仓储管理功能,如库存盘点、物料追踪、供应商…

C# 使用Microsoft消息队列(MSMQ)

写在前面 Microsoft Message Queuing (MSMQ) 是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。 使用消息队列可以实现异步通讯,无需关心接收端是否在…

CCNP课程实验-06-EIGRP-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错误1:没有配置IP地址,IP地址宣告有误错误2:R3配置了与R1不同的K值报错了。错误3:R4上的AS号配置错,不是1234错误4:R2上配置的Key-chain的R4上配置的Key-chain不一致…

实时记录和查看Apache 日志

Apache 是一个开源的、广泛使用的、跨平台的 Web 服务器,保护 Apache Web 服务器平台在很大程度上取决于监控其上发生的活动和事件,监视 Apache Web 服务器的最佳方法之一是收集和分析其访问日志文件。 Apache 访问日志提供了有关用户如何与您的网站交互…

pinia 给 state 指定变量类型

pinia 给 state 指定变量类型 问题描述 自从用 vitetsvue3 以来,我一直有一个很大的疑问,就是 pinia 中的 state 变量类型该从哪定义,如何定义它? 因为我在使用未定义类型的 state 变量的时候一直会有一个提示,提示说…

HttpSession的使用

1 HttpSession 概述 在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内,单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同…

MathType2024MAC苹果电脑版本下载安装图文教程

在数学和科学的世界里,表达精确的方程式和化学公式是至关重要的。MathType作为一款及其优秀且有全球影响力的数学公式编辑器,让这一切变得触手可及。MathType Mac版已全新升级,作为Microsoft Word和PowerPoint的Add-In插件,为您的…

JavaWeb——后端之maven

三、后端Web开发 1. Maven 1.1 概念 概念: 一款用于管理和构建java项目的工具,是apache下的一个开源项目 作用: 依赖管理:jar包,避免版本冲突问题——不用手动导jar包,只需要在配置文件(pom…

burpsuite模块介绍之项目选项

使用该模块中的功能实现对token的爆破 靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 实现 1)先抓个包 2)设置宏 要实现我们爆破的时候请求的token也跟靶场一样一次一换从而实现爆破,那就需要用到项目选项中的宏(预编译功能)