当前位置: 首页 > news >正文

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却差了一些

总结:

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

相关文章:

MobileNetv2网络详解

背景: MobileNet v1中DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0” MobileNet v2网络是由Google团队在2018年提出的,相比于MobileNet v1网络,准确率更高,模型更小 网络亮点: Inverted Residu…...

惊了!大模型连这样的验证码都能读懂_java_识别验证码

最近在看视觉大模型的能力,然后用了某网站的一个验证码试了试,竟然连这样的验证码都能认识,这个有点夸张,尤其是这个9和6颠倒的都能理解,现在的能力已经这么牛了么 具体就是用了通义最新的qwen vl模型spring ai alibab…...

【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)

目录 1 先从一个例题出来,预期值和现实值的差异怎么评价? 1.1 这样一个问题 1.2 我们的一般分析 1.3 用到的关键点1 1.4 但是差距多远,算是远呢? 2 极大似然估计 2.1 极大似然估计的目的 2.1.1 极大似然估计要解决什么问题…...

【日常记录-Java】SLF4J扫描实现框架的过程

1. 简介 SLF4J(Simple Logging Facade for Java)作为一种简单的门面或抽象,服务于其他各种日志框架,例如JUL、log4j、logback等,核心作用有两项: 提供日志接口;提供获取具体日志对象的方法; 2. 扫描过程 …...

uni-app 获取 android 手机 IMEI码

1、需求来源 最近项目上需要获取手机的IMEI码,并且在更换手机号登录后,需要提示重新更新IMEI码。 2、需求拆分 2.1 获取 IMEI 码 查阅 uni-app 官网发现在android 10 已经无法获取imei码,所以对于这个需求拆分成两种情况。 第一种情况&am…...

后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用

文章目录 1 认证机制介绍1.1 HTTP Basic Auth1.2 Cookie-Session Auth1.3 OAuth1.4 Token Auth 2 JWT2.1 JWT介绍2.2 JWT的数据结构2.2.1 JWT头2.2.2 JWT有效载荷2.2.3 JWT签名 3 jjwt3.1 jjwt介绍3.2 jjwt案例 1 认证机制介绍 1.1 HTTP Basic Auth HTTP Basic Auth 是一种简…...

接口测试 —— Postman 变量了解一下!

Postman变量是在Postman工具中使用的一种特殊功能,用于存储和管理动态数据。它们可以用于在请求的不同部分、环境或集合之间共享和重复使用值。 Postman变量有以下几种类型: 1、环境变量(Environment Variables): 环境变量是在…...

鸿蒙系统:核心特性、发展历程与面临的机遇与挑战

好动与不满足是进步的第一必需品 文章目录 前言重要特点和组成部分核心特性主要组件发展历程 机遇挑战总结 前言 鸿蒙系统(HarmonyOS)是由华为技术有限公司开发的一款面向全场景的分布式操作系统。它旨在为用户提供更加流畅、安全且高效的数字生活体验&…...

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…...

半天入门!锂电池剩余寿命预测(Python)

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客 拒绝信息泄露!VMD滚动分…...

学生党头戴式耳机哪款音质更胜一筹?TOP4好音质头戴式耳机推荐

在挑选头戴式耳机时,市场上琳琅满目的品牌和型号常常让人目不暇接。究竟哪个学生党头戴式耳机哪款音质更胜一筹?这已成为许多人面临的难题。由于每个人对耳机的偏好各有侧重——一些人追求音质的纯净,一些人重视佩戴的舒适性,而另…...

数据结构 ——— 二叉树的概念及结构

目录 二叉树的概念 特殊的二叉树 一、满二叉树 二、完全二叉树 二叉树的概念 二叉树树示意图: 从以上二叉树示意图可以看出: 二叉树每个节点的度不大于 2 ,那么整个二叉树的度也不大于 2 ,但是也不是每个节点都必须有 2 个…...

【React】React 的核心设计思想

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 React 的核心设计思想引言声明式编程声明式 vs 命令式示例 组件化组件的优势组件…...

C++ 二叉树进阶:相关习题解析

目录 1. 二叉树创建字符串。 2. 二叉树的分层遍历1 3. 二叉树的分层遍历2 4. 二叉树的最近公共祖先 5. 将二叉搜索树转换为排序的双向链表 6. 从前序与中序遍历序列构造二叉树 7. 从中序与后序遍历序列构造二叉树 8. 二叉树的前序遍历,非递归迭代实现 9.…...

Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法 蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制,在同一时间内路径越短蚂蚁分泌的信息就越多,蚂蚁选择该路径的概率就更大。 蚁群算法的思想来源于自然界蚂蚁觅食&a…...

2024年10月HarmonyOS应用开发者基础认证全新题库

注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同 这是基础认证题库,不是高级认证题库注意看清楚标题 高级认证题库地址:20…...

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好,我是锋哥。今天分享关于【kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?】面试题?希望对大家有帮助; kafka 分布式(不是单机)的情况下,如何保证消息的…...

数据分析案例-苹果品质数据可视化分析+建模预测

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

沈阳乐晟睿浩科技有限公司抖音小店运营创新

在当今这个数字化迅猛发展的时代,电子商务已经成为推动经济增长的重要引擎。而在电商的广阔舞台上,短视频与直播带货的崛起无疑是最为耀眼的明星之一。作为这一领域的佼佼者,抖音小店凭借其庞大的用户基础和独特的算法优势,吸引了…...

【前端】CSS知识梳理

基础:标签选择器、类选择器、id选择器和通配符选择器 font:font-style(normal) font-weight(400) font-size(16px) /line-height(0) font-family(宋体) 复合: 后代选择器( )、子选择器(>)、并集选择器(…...

【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译

最近学习sylar项目,编译项目时遇到链接库不匹配的问题,记录下自己解决问题过程,虽然过程很艰难,但还是解决了,以下内容供大家参考! undefined reference to 问题分析 项目编译报错 /usr/bin/ld: ../lib/lib…...

IDEA解决 properties 文件乱码问题

博主介绍: 计算机科班人,全栈工程师,掌握C、C#、Java、Python、Android等主流编程语言,同时也熟练掌握mysql、oracle、sqlserver等主流数据库,具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、…...

超越Jira?2024年探索项目管理新工具!

一、Jira 在项目管理中的地位 Jira 作为一款在项目管理领域久负盛名的工具,有着不可忽视的地位。它以强大的问题跟踪和管理功能著称,无论是软件缺陷、新功能需求、任务分配还是技术难题的解决,都能精准把控。其高可定制性更是满足了不同团队…...

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】 问题一:讲一讲计算图中pytorch是什么,TensorFlow是什么?1. PyTorch2. TensorFlow区别总结 问题二:Llama…...

凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级

恒指正处在一种“奇妙”的波动当中。低估反弹,瞬时拉高,极速回调。这些变化集中在一条曲线上,让市场无所适从。 但事实上,所有的趋势一定总是以长期为锚。这个长期的尺度,可能会超过一般人的预估。因为中间需要经历很…...

Oracle视频基础1.2.1练习

1.2.1 需求: 完整格式查看所有用户进程判断oracle启动状态 连接sqlplus不登陆 以sysdba身份登陆,通过登陆信息判断oracle启动状态 启动数据库,查系统全局区动态组件表 使用shell,启动监听然后返回sql ps -ef sqlplus /nolog con…...

15、基于AT89C52的数码电子时钟proteus仿真设计

一、仿真原理图: 二、仿真效果: 三、相关代码: 1、timer0定时中断: void Time0(void ) interrupt 1 using 1 { count++; if(count == 20) { count = 0; second++; if(second >= 60) { second = 0; …...

UML总结

零:学习链接 UML_哔哩哔哩_bilibili 一:UML概述 二:类图 类图(Class Diagram)是统一建模语言(UML)中一种重要的图形表示,用于描述系统中的类及其之间的关系。它是面向对象设计中常…...

网站被浏览器提示不安全怎么办?——附解决方案

当你的网站被浏览器标记为不安全时,这通常意味着有一些问题需要解决。以下是一些解决这个问题的步骤: 检查SSL证书:首先,确保你的网站使用了有效的SSL证书。SSL证书可以加密浏览器和服务器之间的数据传输,保护用户数据…...

“前端兼容——CSS篇”(进阶版)

“前端兼容——CSS篇”(进阶版) 上一篇文章写了css 兼容问题处理的基础篇 点击这里基础篇—传送门,这里想给粉丝分享一下css 更深一点的兼容场景,和处理方案 文章目录 “前端兼容——CSS篇”(进阶版)进阶CS…...

微信红包开发平台/百度seo优化方案

一、DLL文件常识DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时&…...

做搜狗手机网站快速排/指数平滑法

1.配置Console口密码Router(config)#line console 0Router(config-line)#password 123Router(config-line)#login完成配置后,查看show runline con 0password 123loginline vty 0 4login2.配置特权模式密码Router(config)#enablepassword 123 明文密码Router(config…...

wordpress前台增加编辑/株洲百度seo

1,从操作系统的角度看什么是线程,线程和进程的区别。 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程&…...

临安规划建设局网站/网页开发用什么软件

前言:前面讨论了信号、管道的进程间通信方式,接下来将讨论消息队列。一、系统V IPC三种系统V IPC:消息队列、信号量以及共享内存(共享存储器)之间有很多相似之处。每个内核中的 I P C结构(消息队列、信号量或共享存储段)都用一个非负整数的标…...

芜湖 网站建设/学生网页设计模板

前言 有很多时候,我们希望可以在C类里面对那些比较耗时的函数使用多线程技术,但是熟悉C对象语法的人应该知道,C类的成员函数的函数指针不能直接做为参数传到pthread_create,主要因为是C成员函数指针带有类命名空间,同时成员函数末…...

做网站需要上门服务吗/表白网页制作免费网站制作

0x00 前言 为了练习python,强迫自己能用Python的题都用python解题还有各种密码 0x01 奇怪的字符串 实验吧题目:信息保密的需求和实际操作自古有之,与之相应的信息加密与解密也是历史悠久,现有一段经过古典密码理论(不止…...