12.9深度学习_经典神经网络_MobileNet V1V2

news2024/12/20 6:07:15

一、MobileNet V1

1. 铭记历史

传统的卷积神经网络参数量大,导致预测时算力大,对于手机、嵌入式等设备来讲是不行的,例如VGG16大概有490M,ResNet的152层模型有644M,这种是不能在移动端部署的时候不但慢还暂用空间,就无法满足手机、人脸识别打卡机等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2017年,Google提出的移动端高效率模型MobileNet:相比VGG16,分类准确率下降了0.9%,但是模型参数仅仅是VGG16的1/32到1/33。

2. 网络创新

2.1 Depth wise Convolution

深度可分离卷积

先看传统的卷积:

DW卷积如下:

​ DW卷积核的通道等于1,每个卷积核分别与输入特征每个channel进行卷积计算,从而得到输出特征矩阵的每个channel,总结:输入特征的channel = 卷积核个数 = 输出特征channel。

​ 计算量相比于标准卷积降低了1个数量级,但没有有效利用不同通道在相同空间位置上的信息,鉴于此,我们需要再加一个PW卷积(Pointwise Conv,点卷积,大小1×1),如下图:

​

标准多通道卷积,卷积核的尺寸为1x1xMxN

M=512为输入特征通道数, N=512为输出特征通道数。

2.2 常规卷积和DW卷积对比

常规卷积(左)与深度可分离卷积(右)

3. 整体结构

3.1 结构

img src=".\media\image-20240530203637566.png" alt="image-20240530203637566" style="zoom:50%;" />

3.2 运算及参数量

4. 压缩比较

模型参数量与计算量压缩比较:

通常DW卷积和PW卷积是放在一起的,这种卷积比普通卷积能节省大量的计算量,论文中有相关公式求解计算量:分子为深度可分卷积的计算量,分母为普通卷积的计算量(步距默认为1):

上述公式的参数需要介绍一下:

注意:这里求解的计算量,不是参数量!

5. MobileNet 大小控制

Width multiplier 系数α:按比例减少通道数
Resolution multiplier 系数ρ:按比例降低特征图的大小

5.1 宽度系数

Width multiplier系数α取值范围为(0,1],计算公式公式:
D K ⋅ D K ⋅ α M ⋅ D F ⋅ D F + α M ⋅ α N ⋅ D F ⋅ D F D_K\cdot D_K\cdot\alpha M\cdot D_F\cdot D_F+\alpha M\cdot\alpha N\cdot D_F\cdot D_F DKDKαMDFDF+αMαNDFDF
常取值为1,0.25,0.5,0.75,计算量与参数量大概按着
α 2 \alpha^2 α2

比例下降。

5.2 分辨率系数

Resolution multiplier系数ρ取值范围为(0,1],计算公式如下:
D K ⋅ D K ⋅ α M ⋅ ρ D F ⋅ ρ D F + α M ⋅ α N ⋅ ρ D F ⋅ ρ D F D_K\cdot D_K\cdot\alpha M\cdot\rho D_F\cdot\rho D_F+\alpha M\cdot\alpha N\cdot\rho D_F\cdot\rho D_F DKDKαMρDFρDF+αMαNρDFρDF
网络输入分辨率通常为224,192,160,128,计算量与参数量大概按着
ρ 2 \rho^2 ρ2

比例下降。

5.3 实验性能对比

6. 性能比较

6.1 Stanford Dogs数据集

6.2 ImageNet数据集

7. V1存在的问题

使用ReLU后会造成信息丢失,通道少的特征图尤其明显:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ 对输入图像先通过随机矩阵T将数据转换为n维,后对n维数据进行ReLU操作,最后使用T的逆矩阵转换回来。当n很小,会导致很多信息的丢失,维度越高还原的图片和原图越相似。ReLU能够保持输入流形的完整信息,但前提是输入流形位于输入空间的低维子空间中。

​ 当输出维度m=2,3时,信息坍塌,当m>15时,信息基本被保留。

二、MobileNet V2

​ MobileNet V1网络的Depth wise部分的卷积核容易参数为0,导致浪费掉。

​ MobileNet V2网络是由谷歌团队在2018年提出的,它对于MobileNet V1而言,有着更高的准确率和更小的网络模型。

1. 网络的创新

  • 整体采用MobileNet V1的通道可分离卷积来降低运量
  • 采用ResNet思想,引入了特征复用结构,缓解特征退化问题(低精度训练尤其有效)
  • 采用Inverted residual block结构,回避ReLU缺陷,通道数比较少的瓶颈层不采用非线性激活函数

1.1 倒残差结构

​ 在之前的ResNet残差结构是先用1x1的卷积降维,再升维的操作。而在MobileNet V2中,是先升维,再降维的操作,所以该结构叫倒残差结构,网络结构表格中的bottleneck就是倒残差结构。

​ 来回顾一下残差结构,如下图所示:

​

在MobileNet V2网络结构中,采用了倒残差结构,从名字可以联想到,它的结构应该是中间深,两边浅,它的结构如下图所示:

倒残差结构的过程是:

  1. 首先会通过一个1x1卷积层来进行升维处理,在卷积后会跟有BN和ReLU6激活函数

  2. 紧接着是一个3×3大小DW卷积,卷积后面依旧会跟有BN和ReLU6激活函数

  3. 最后一个卷积层是1x1卷积,起到降维作用,注意卷积后只跟了BN结构,并没有使用ReLU6激活函数。

    倒残差结构的具体过程如下图所示:

在MobileNet V1中,DW卷积的个数局限于上一层的输出通道数,无法自由改变,但是加入PW卷积之后,也就是升维卷积之后,DW卷积的个数取决于PW卷积的输出通道数,而这个通道数是可以任意指定的,因此解除了3x3卷积核个数的限制。

1.2 拓展因子t

​ 瓶颈层到中间层通道数的提升比例

1.3 ReLU6

​ 因为在低维空间使用非线性函数(如ReLU)会损失一些信息,高维空间中会损失得相对少一些,因此引入Inverted Residuals,升维之后再卷积,能够更好地保留特征。

​ 从上图中可以看到,卷积之后跟着的激活函数不再是MobileNet V1的ReLU激活函数,而是ReLU6激活函数,它的表达式是:

y = R e L U 6 ( x ) = m i n ( m a x ( x , 0 ) , 6 ) y=ReLU6(x)=min(max(x,0),6) y=ReLU6(x)=min(max(x,0),6)

​ 它的图像是:

在这里插入图片描述

​ 可以看到ReLU6激活函数是ReLU的变种,它的输入小于0时,结果为0,输入大于6时:结果为6。在0到6之间时:y=x。

1.4 Shortcut

注意:Shortcut并不是该网络提出的,而是残差结构提出的。

​ 这里由于具有倒残差结构,所以也会有shortcut操作,如下图所示,左侧为有shortcut连接的倒残差结构,右侧是无shortcut连接的倒残差结构:

shortcut将输入与输出直接进行相加,可以使得网络在较深的时候依旧可以进行训练。

注意:这里只有stride=1且输入特征矩阵与输出特征矩阵shape相同时才有shortcut连接。

2. 模型结构

第一层是标准卷积,后面是前述的瓶颈结构。其中t是扩展因子,c是输出通道数,n是重复次数,s代表步长。

3. 实验

对比不同的跳跃连接方式和是否采用线性瓶颈结构,进一步验证网络设计的合理性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不同版本的MobileNet V2,与其他模型的比较

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC

原文链接 Apache Tomcat 最新RCE 稳定复现分析 保姆级!!!附复现视频POC 前言 最近爆出 Apache Tomcat条件竞争导致的RCE,影响范围当然是巨大的,公司也及时收到了相关情报,于是老大让我复现,以…

二、Jmeter Web压测

Jmeter Web压测 一、JMeter简介二、安装JMeter三、使用JMeter进行Web压测的基本步骤 (一)创建测试计划(二)添加HTTP请求(三)添加监听器(四)运行测试 四、高级应用 (一&am…

【Python爬虫系列】_032.Scrapy_全站爬取

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈

[LeetCode-Python版] 定长滑动窗口——灵神思路(1)

思路 把问题拆解成三步&#xff1a;入-更新-出。 入&#xff1a;下标为 i 的元素进入窗口&#xff0c;更新相关统计量。如果 i<k−1 则重复第一步。更新&#xff1a;更新答案。一般是更新最大值/最小值。出&#xff1a;下标为 i−(k-1) 的元素离开窗口&#xff0c;更新相关…

紧固件设计之——开槽长圆柱端紧定螺钉结构仿真APP

按照产品形态分类&#xff0c;紧固件通常包括以下12类&#xff1a;螺栓、螺柱、螺钉、螺母、自攻螺钉、木螺钉、垫圈、挡圈、销、铆钉、焊钉、组合件与连接副&#xff0c;是一类用于连接和固定各种构件和零部件的重要机械零件&#xff0c;可确保机械装置或设备结构的牢固和稳定…

el-tabs标签过多

tab-position&#xff1a;top情况 .el-tabs__nav-wrap{overflow-x: auto ;width: 86% ;margin-left: 10px ; } 效果&#xff1a; tab-position&#xff1a;left情况 .el-tabs__nav-wrap{overflow-x: auto ;height: 高度 ;margin-top: 10px ; } 效果&#xff1a; 注意&…

Docker日志与监控

一、引言 随着容器技术在生产环境中被广泛应用&#xff0c;Docker容器的日志管理与监控变得尤为重要。在现代应用程序中&#xff0c;容器化的应用通常是由多个容器组成的服务&#xff0c;而容器中的日志与监控则是确保服务健康运行、诊断问题和优化性能的关键。通过日志和监控…

期权VIX指数构建与择时应用

芝加哥期权交易 所CBOE的波动率指数VIX 是反映 S&P 500 指数未来 30 天预测期波动率的指标&#xff0c;由于预期波动率多用于表征市场情绪&#xff0c;因此 VIX 也被称为“ 恐慌指数”。 VIX指数计算 VIX 反映了市场情绪和投资者的风险偏好&#xff0c; 对于欧美市场而言…

Centos创建共享文件夹拉取文件

1.打开VMware程序&#xff0c;鼠标右检你的虚拟机&#xff0c;打开设置 2.点击选项——共享文件夹——总是启用 点击添加&#xff0c;设置你想要共享的文件夹在pc上的路径&#xff08;我这里已经添加过了就不加了&#xff09; 注意不要中文&#xff0c;建议用share&#xff0c…

CSS|12 display属性

display display显示的意思&#xff0c;用来进行 行内元素与块级元素之间的相互转换&#xff01;将隐藏的元素显示或者是将显示的元素进行隐藏。 display这个属性的取值&#xff1a; inline 行内 当我们将一个行内元素的display属性的值设置为inline以后&#xff0c;那么这个…

启动打印服务提示:Http端口已被使用,请修改

分销AV 10.0.0及其以上版本启动打印服务提示&#xff1a;Http端口已被使用&#xff0c;请修改。该如何处理&#xff1f; 一、先将打印服务退出,电脑桌面右下角任我打印服务操作退出。 二、到打印管理器安装目录\print下找到CONFIG文件&#xff0c;用记事本打开后&#xff0c;将…

workman服务端开发模式-应用开发-gateway长链接端工作原理

一、长链接的工作原理 Register类其实也是基于基础的Worker开发的。Gateway进程和BusinessWorker进程启动后分别向Register进程注册自己的通讯地址&#xff0c;Gateway进程和BusinessWorker通过Register进程得到通讯地址后&#xff0c;就可以建立起连接并通讯了。而Register进程…

Docker挂载

目录 数据卷挂载 本地目录挂载 数据卷挂载 宿主机默认的存放所有容器数据卷的目录&#xff1a;/var/lib/docker/volumes nginx容器静态资源的目录&#xff1a;/usr/share/nginx/html 修改宿主机的内容&#xff0c;进入到容器查看信息&#xff0c;也同步修改 容器与数据卷的挂…

【计算机毕设】基于Python预制菜可视化数据分析预测推荐系统(完整系统源码+数据库+详细部署教程)✅

目录 【计算机毕设】基于Python预制菜可视化数据分析预测推荐系统&#xff08;完整系统源码数据库详细部署教程&#xff09;✅源码获取方式在文章末尾 一、项目背景 二、研究目的 三、项目意义 四、项目功能 五、项目创新点 六、开发技术介绍 七、数据库设计 八、项目…

Windows系统如何配置远程音频

场景 RemoteFx 是 Windows RDP 桌面协议升级版&#xff0c;RDP 8.0起可以使用 RemoteFx 来使用 USB 重定向&#xff0c;将本地 USB 设备通过 RDP 的数据通道重定向到远程桌面&#xff0c;解决云端机器无法使用 USB 设备的问题。 客户端&#xff1a;Windows 10 操作系统 服务…

【HAL库】STM32CubeMX开发----STM32F407----Time定时器中断实验

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 前言 本次实验以 STM32F407VET6 芯片为MCU&#xff0c;使用 25MHz 外部时钟源。 实现定时器TIM3中断&#xff0c;每1s进一次中断。 定时器计算公式如下&#xff1a; arr 是自动装载值&#x…

rabbitMq举例

新来个技术总监&#xff0c;把 RabbitMQ 讲的那叫一个透彻&#xff0c;佩服&#xff01; 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

基于 uniapp 开发 android 播放 webrtc 流

一、播放rtsp协议流 如果 webrtc 流以 rtsp 协议返回&#xff0c;流地址如&#xff1a;rtsp://127.0.0.1:5115/session.mpg&#xff0c;uniapp的 <video> 编译到android上直接就能播放&#xff0c;但通常会有2-3秒的延迟。 二、播放webrtc协议流 如果 webrtc 流以 webrt…

Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑

在人工智能领域&#xff0c;Meta的最新动作再次引起了全球的关注。今天&#xff0c;我们见证了Meta发布的Llama 3.3 70B模型&#xff0c;这是一个开源的人工智能模型&#xff0c;它不仅令人印象深刻&#xff0c;而且在性能上达到了一个新的高度。 一&#xff0c;技术突破&#…

游戏AI实现-寻路算法(DFS)

​深度优先搜索算法&#xff08;英语&#xff1a;Depth-First-Search&#xff0c;缩写为DFS&#xff09;是一种用于遍历或搜索树或图的算法。 寻路地图搭建&#xff1a; 游戏AI实现-寻路地图搭建-CSDN博客 算法过程&#xff1a;遍历方向为从竖直向上沿顺时针方向 1.首先将开…