MobileNetv2网络详解

背景:

MobileNet v1中DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0”

MobileNet v2网络是由Google团队在2018年提出的,相比于MobileNet v1网络,准确率更高,模型更小

网络亮点:

Inverted Residuals(倒残差结构)

Linear Bottlenecks

倒残差结构:

Residual Block:

ResNet网络中提出了一种残差结构

1.输入特征矩阵采用1*1的卷积核来对特征矩阵做压缩,减少输入特征矩阵的channel

2.采用3*3的卷积核做卷积处理

3.采用1*1的卷积扩充channel

形成两头大,中间小的瓶颈结构

Inverted Residual Block:

1.采用1*1的卷积核升维,让channel变得更深

2.通过卷积核大小为3*3的DW卷积操作进行卷积

3.通过1*1的卷积进行降维

结构图:

过程:

1.通过大小为1*1的卷积,激活函数为ReLU6

2.通过DW卷积,卷积核大小为3*3,激活函数为ReLU6

3.通过卷积核大小为1*1的卷积处理,使用线性激活

1.h*w*k的输入,经过1*1卷积核、ReLU6(t为扩展因子,1*1卷积核的个数为tk),输出h*w*(tk)

2.第二层输入等于第一层输出,使用DW卷积,卷积核大小为3*3,步距为s(给定),输出的特征矩阵深度和输入特征矩阵的深度相同(MobileNet v1中提到过DW卷积),由于步距为s,输出特征矩阵的高宽缩减为\frac{h}{s}\frac{w}{s}

3.第三层的1*1卷积为降维操作,所采用的卷积核个数为{k}'

ReLU6激活函数:

ReLU激活函数的改进版,诸如此类的改进函数还有很多,类似Leakey ReLU等

在普通的ReLU激活函数中,当输入值小于零,默认全置零;当输入值大于零,不对值进行处理

在ReLU6激活函数中,当输入值小于零,默认全置零;在(0,6)区间,不会改变输入值;当输入值大于“6”,将输入值全部置为“6”

作用:

①避免网络出现激活值过大的情况,稳定训练过程

②适合量化

③保留非线性特征

④提高训练速度

对比:

原始的残差结构是先降维再升维,而倒残差结构是先升维再降维

在普通残差结构中使用的ReLU激活函数,而倒残差结构采用的是ReLU6激活函数

shortcut:

在倒残差结构中,并不是每一个倒残差结构都有shortcut(捷径)分支,在论文中提到当stride=1时有捷径分支,stride=2时没有捷径分支

分析得知上述表达有误:当stride=1且输入特征矩阵与输出特征矩阵shape相同时,才有shortcut连接;若不满足都没有shortcut

倒残差结构的作用:

1. 高效的特征提取:结合深度卷积和逐点卷积,能够有效提取特征,同时减少计算复杂度。

2. 减少梯度消失问题:通过直接将输入特征传递到输出,减轻了深层网络中的梯度消失问题,有助于更快收敛。

3. 灵活的通道扩展:通过设置 expand_ratio,可以灵活调整特征维度,增强模型的表达能力,同时避免不必要的计算。

4. 内存和计算效率:尽管在某些情况下会增加参数量,但整体上,倒残差结构通常能保持相对较低的内存和计算需求,适合在移动设备上运行。

5. 增强非线性变换:通过激活函数,倒残差结构能够引入非线性,使得模型可以学习更复杂的特征关系。

6. 适应性强:能够根据不同任务的需求,调整网络的复杂性和参数设置,适应多种应用场景。

Linear Bottlenecks:

对于倒残差结构的最后一个1*1卷积层,使用线性激活函数而不是ReLU激活函数

线性激活函数使用原因:

在原论文中,作者做了相关实验。输入是二维的矩阵,channel为1,分别采用不同维度的Matrix(矩阵)T对其进行变换,变换到一个更高的维度;再使用ReLU激活函数得到输出值;再使用T矩阵的逆矩阵T^{-1},将输出矩阵还原为2D特征矩阵

当Matrix T维度为2和3时,通过观察下图可以发现,二维三维的特征矩阵丢失了很多信息

但随着Matrix T的维度不断加深,丢失的信息越来越少

总结:

ReLU激活函数会对低维特征信息造成大量损失,而对于高维特征造成的损失小

倒残差结构为“两边细,中间粗”,在中间时为一个低维特征向量,需要使用线性函数替换ReLU激活函数,避免信息损失

网络结构:

t:扩展因子

c:输出特征矩阵的深度,channel

n:bottleneck(论文中的倒残差结构)重复的次数

s:步距,只代表每一个block(每一个block由一系列bottleneck组成)的第一层bottleneck的步距,其他的步距都为1

当stride=1时:输入特征矩阵的深度为64,输出特征矩阵的深度为96;若有捷径分支,捷径分支的输出的特征矩阵分支深度为64,但是通过主分支的一系列操作,所输出的深度为96,很明显深度时不同的,无法使用加法操作,也就无法使用shortcut

对于上述提到的block的第一层一定是没有shortcut的,但对于第二层,stride=1(表中的s只针对第一层,其他层的stride=1),输入特征矩阵深度等于上一层输出特征矩阵的深度,为96;输出特征矩阵深度为96,因此在bottleneck第二层输出特征矩阵的shape和输入特征矩阵的shape相同,此时可以使用shortcut分支

在网络的最后一层为一个卷积层,就是一个全连接层,k为分类的个数

性能分析:

图像分类:

准确率,模型参数都有一系列的提升,基本上达到了实时的效果

目标检测:

将MobileNet与SSD联合使用,将SSD中的一些卷积换为DW卷积和PW卷积,相比原始的模型有一些提升,但对比MNet v1却差了一些

总结:

基本实现了在移动设备或嵌入式设备上跑深度学习模型,也将研究和日常生活紧密结合

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣题86~90

题86(中等): python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…

(史上超级清晰带图解)红黑树的实现--C++

文章目录 一、红黑树的概念1、红黑树的规则:2、那红黑树如何确保最长路径不超过最短路径的2倍的?3、红黑树的效率: 二、红黑树的实现1、红黑树的结构2、红黑树的插入2.1、红黑树树插入一个值的大概过程2.2、情况1:变色2.3、情况2&…

大模型低资源部署策略

文章目录 解码效率分析大模型训练后量化方法经验性分析与相关结论由于大模型的参数量巨大,在解码阶段需要占用大量的显存资源,因而在实际应用中的部署代价非常高。在本文中,我们将介绍一种常用的模型压缩方法,即模型量化(ModelQuantization),来减少大模型的显存占用,从…

基于spootboot学生选课系统设计与实现

资料下载 https://download.csdn.net/download/qq_63753925/89888794 https://download.csdn.net/download/qq_63753925/89888793 https://download.csdn.net/download/qq_63753925/89885091 https://download.csdn.net/download/qq_63753925/89882320 摘 要 近年来&#xf…

25届电信保研经验贴(自动化所)

个人背景 学校:中九 专业:电子信息工程 加权:92.89 绩点:3.91/4.0 rank:前五学期rank2/95,综合排名rank1(前六学期和综合排名出的晚,实际上只用到了前五学期) 科研…

Gateway 统一网关

一、初识 Gateway 1. 为什么需要网关 我们所有的服务可以让任何请求访问,但有些业务不是对外公开的,这就需要用网关来统一替我们筛选请求,它就像是房间的一道门,想进入房间就必须经过门。而请求想要访问微服务,就必须…

STM32主从定时器输出个数、频率可调的脉冲

STM32中发出脉冲一般有两种方式: 1)利用定时中断输出脉冲,但是间隔的延时会影响其他主程序的进程,当控制多个电机的时候就非常不可取; 2)利用PWM脉宽调制,并通过主从定时器进行设定&#xff0…

微知-Lecroy力科的PCIe协议分析仪型号命名规则(PCIe代,金手指lanes数量)

文章目录 要点主要型号命名规则各代主要产品图片Summit M616 协议分析仪/训练器Summit T516 分析仪Summit T416 分析仪Summit T3-16分析仪Summit T28 分析仪 综述 要点 LeCroy(力科)成立于1964年,是一家专业生产示波器厂家。在美国纽约。一直把重点放在研制改善生产…

安卓14上蓝牙调用SystemProperties.set(),解决找不到SystemProperties.set()的问题

近期遇到一个需求,要在安卓14的蓝牙模块中调用SystemProperties.set()。 安卓14中的蓝牙,和安卓12的版本有较大的不同。它在packages/modules目录下,而安卓12是分散在packages/apps和frameworks/base等目录下;安卓14的蓝牙打包产…

Hash表算法

哈希表 理论知识(本文来自于代码随想录摘抄)什么是哈希常见的三种哈希结数组:set:map:其他常用方法或者技巧(自己总结的) 练习题和讲解有效的字母移位词349. 两个数组的交集1. 两数之和454. 四数相加 II15. 三数之和 总…

4款专业音频在线剪辑工具帮你开启创意之路。

音频在线剪辑工具能够为我们提供很大的便利,对于不管是专业的音乐制作人还是音频创作爱好者来说,都能借助一些音频编辑工具来充分发挥自己的创意。所以这一次,我要给大家介绍几个专业方便的音频剪辑工具。 1、福昕音频在线 直达链接&#x…

基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili (一)简介 基于yolov8的布匹缺陷检测系统是在 PyTo…

基于SSM的心理咨询管理管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的心理咨询管理管理系统拥有三个角色:学生用户、咨询师、管理员 管理员:学生管理、咨询师管理、文档信息管理、预约信息管理、测试题目管理、测试信息管理…

Cesium基础-(Entity)-(Corridor 走廊)

里边包含Vue、React框架代码详细步骤、以及代码详细解释 4、Corridor 走廊 以下是 CorridorGeometry 类的属性、方法和静态方法,以表格形式展示: 属性 属性名类型默认值描述positionsArray.定义走廊中心的坐标点数组。widthnumber走廊

预览 PDF 文档

引言 在现代Web应用中,文件预览功能是非常常见的需求之一。特别是在企业级应用中,用户经常需要查看各种类型的文件,如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…

GIT使用list

清空当前commit区 方法 1:软重置到初始状态 如果希望保留文件内容,但清空所有 commit 历史,可以使用以下命令: git reset --soft $(git rev-list --max-parents0 HEAD)解释: --soft 表示重置 commit 历史&#xff…

uniapp的IOS证书申请(测试和正式环境)及UDID配置流程

1.说明 本教程只提供uniapp在ios端的证书文件申请(包含正式环境和开发环境)、UDID配置说明,请勿用文档中的账号和其他隐私数据进行测试,请勿侵权! 2.申请前准备 证书生成网站:苹果应用上传、解析&#x…

【AscendC算子开发】笔记3 矩阵计算及高级开发技巧

pytorch调用算子 矩阵计算 为什么上图提供了两种矩阵结果访问方式? 如果只需要结果,那么拿注释的一行代码就可以得到结果,如果之后还有其他的操作,可以计算一小块就用起来,那么需要使用上述操作,可以形成流…

Unity Newtonsoft.Json 大对象序列化失败

Unity Newtonsoft.Json 大对象序列化失败 💣崩溃了没?😀替代方案 💣崩溃了没? Newtonsoft.Json.JsonTextWriter:WriteValueInternal(string,Newtonsoft.Json.JsonToken) InvalidCastException: Specified cast is not…

Kafka认证时Successfully logged in真的认证成功了?

背景 某个应用需要配置 Kafka 集群信息,且需要在验证集群是否可达。基本实现思路是创建一个生产者对象,然后发送一条测试数据,调用 Producer 的 send 方法发送消息后,再调用 get() 方法,即同步发送消息,测…