mobilenetv1,v2,v3简要介绍
mobilenetv1
1.mobilenetv1的一个主要特点是网络所需要的参数很少,以至于在手机这种移动设备上都可以跑,在准确率小幅度降低的代价下,可以再次大幅度减少我们的参数量,如下图mobilenetv1和vgg16相比准确率只下降了0.9%,但是参数量从15300m和138m,下降到了569m和4.2m,大大的降低了参数量
2.mobilenet使用了dw卷积大幅度减少了运算量和参数量,从输入到输出,c是不会改变的
同时也使用了pw卷积
pw卷积的特点是卷积核的维度是1*1,从输入到输出可以改变维度,dw和pw通常是一起使用的
dw和pw的使用可以大大减少参数量,通常是普通卷积参数的1/8-1/9(这里不做推理)
conv/s2:使用普通的卷积,stride=2
filter3*3*3*32:卷积核的尺寸为尺寸为3*3,深度为3,卷积核个数为32
conv dw/s1:使用dw卷积因为dw卷积的深度为1,第三个参数就没写,s=1,尺寸为3*3,个数为32
3.引入了超参数和
指是卷积核的倍率,值越大,则使用的卷积核数量越多,就算大幅度降低,准确率也不会降低太多,但是参数量会大幅度降低
指的是输入的图像的尺寸图像的大小从224到128,准确率小幅度降低,但是参数量会大幅度降低
mobilenetv2
与v1相比v2的模型跟小,但准确(inverted residuals),和resnet一样,v2也有一个short cut,但resnet的是一个两边大,中间小的结构,但是v2是一个两边小,中间大的结构。
reset中采用的是relu函数,但v2中使用的是relu6激活函数,与普通的relu相比,就是给函数设置了一个上限为6,在x=6及其以后的值都为6。
特点2:linear bottleneck
在我们倒残差的最后一个1*1的卷积层,它使用了一个线性的激活函数(个人理解是relu激活函数在低维度的信息会造成较大的损失,高维信息造成的损失很小,就使用一个线性的激活函数,防止我们损失太多的信息)
倒残差结构中先使用的是一个1*1的卷积核,使用relu6激活函数,再使用3*3的卷积核,使用dw卷积,最后使用一个1*1的卷积核,使用的是一个linear线性函数并不是每一个结构中都有short cut,只有当s=1,且输入矩阵和输出矩阵的shape相同的时候才会有short cut
t是我们的扩展因子如第一层我们的深度是k,我们的扩展因子为t,则我们的输出因子的深度为tk
(最后一层实现的是一个降维的处理,从tk到)
c:输出特征矩阵的深度channel
n:linear bottleneck重复的次数
s:指的是每一个block它的第一个bottleneck的步距,其他情况下s都为1
这里的最后一层是一个卷积层,但是是1*1的会起到和全连接层一样的作用效果
mobilenetv3
mobilenetv3有large和small两种版本
large版本
特点1:更新了block(在倒残差的结构上进行了轻微的改动)
加入了se机制(注意力机制),以及激活函数的更新
最明显的改变还是我们的注意力机制
我们得到的特征矩阵,我们对它每一个channel进行一个池化处理,我们有多少个channel,我们池化后得到的一维向量就会有多少个元素,之后通过两个全连接层,第一个全连接的节点个数是我们channel的1/4,第二个全连接层节点个数和我们的一维向量节点个数是相等的
如图是一个se机制的示意图,我们 特诊矩阵的c为2,我们会经过一个平均池化的操作,得到一个一维向量,c为2,则元素个数也为2,第一个fc的节点个数是c的1/4,我们这里举的例子不太正确,但实际情况下,我们的c是一个很大的数,第一个fc我们使用的是一个relu激活函数,第二个fc节点个数和c是相等的,则节点个数为2,使用的激活函数为hard-sigmoid函数(后面会讲到),最后我们得到一个两个元素的向量,两个值一一对应的是我们两个矩阵的权重,例如我们第一个矩阵的权重是0.5,则我们将其这个权重0.5和我们矩阵中的每一个元素进行相乘,得到我们新的矩阵,第二个权重0.6也是如此
这里的两个地方写了nl,nl指的就是我们的非线性激活函数,不用的层之间使用的非线性激活函数是不一样的,我们这里统称为nl
特点2:nas搜索参数(这里不做讲解)
特点3:重新设计耗时层结构
1.
第一层卷积核的个数我们从32降为了16,v3的作者发现,用16和32的准确率是一样的,就减少了卷积核的数量
2.精简了last stage
在nas搜索出来的最后一个网络结构我们称之为last stage,大致流程如下
作者发现这个original last stage是一个比较耗时的结构,就将其进行了改变
减少了很多层的结构,但准确率并没有太大的变化、
激活函数
hard-sigmoid函数
hard-sigmoid函数的图像和我们的sigmoid函数图像十分相似,有些时候我们会用hard-sigmoid来代替sigmoid函数
如图是我们v3 large的结构图
swish激活函数
hard-swish激活函数
exp size:指的就是我们需要升的维度exp size为16时我们就要用1*1的卷积核将我们的矩阵升到多少维
#out:我们经过se之后我们需要降的维度,#out为16时,我们就要用1*1的卷积核将其降为到16
SE:打勾就是要使用我们的注意力机制,不打勾就不使用
HS:hard-swish函数
RE:relu激活函数
s:步距stride
NBN:有NBN的卷积层不使用bn层结构
这两层就相当于一个fc结构
bneck就是我们更新的block结构
这里有一点需要注意,第一个bneck结构的input和out都是16
故它一开始没有1*1的卷积,其他结构都有
small版本的结构图如下,不做过多解释,内容和large版本差不多
small版本也是如此,第一个bneck结构没有1*1的卷积
mobilenetv1,v2,v3简要介绍相关推荐
- 第4周学习:MobileNetV1, V2, V3
这里写目录标题 MobileNet V1 & V2 MobileNet V3 SENet 的基本原理和代码 HybridSN 高光谱分类-代码练习 MobileNet V1 & V2 ...
- MobileNetV1/V2/V3简述 | 轻量级网络
MobileNet系列很重要的轻量级网络家族,出自谷歌,MobileNetV1使用深度可分离卷积来构建轻量级网络,MobileNetV2提出创新的inverted residual with line ...
- 第4周学习:MobileNetV1, V2, V3 SENet HybridSN
这里写目录标题 Part1 论文阅读与视频学习: 1 Mobilenet系列 1.1 Mobilenet V1 1.2 Mobilenet V2 1.3 Mobilenet V3 2 SENet 2. ...
- 使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow)
使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow) [尊重原创,转载请注明出处]https://blog.csdn.net/guyueali ...
- Dalvik虚拟机简要介绍和学习计划
出自:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应 ...
- openstack及组件简要介绍
openstack及组件简要介绍 为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中 ...
- 经典卷积神经系列(Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet)
写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确.详细内容可以参考文中帖的链接,比较好!!! 经典的CNN:Inception v1\v2\v3\v4.Resnet.Resnext.D ...
- python解释器cpython的源码简要介绍
0. 参考文档 参考文档如下: Your Guide to the CPython Source Code [python]带你入门cpython源代码,让你不再一头雾水!尝试去读读python的实现 ...
- IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour
IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour 前段时间发了一个破解的PN532工具,详见 =========================== IC卡解密 ...
最新文章
- Activity的用法(三):开启网页 (没有弹出浏览器,不清楚是什么原因)
- endnotex7怎么导入中文文献_EndNote X7自动导入PDF功能详解 | 科研动力
- SharePoint优秀blog文章汇总
- boost::coroutine模块实现合并数组的测试程序
- STL学习之一(栈(statck))
- NIFI的ERROR报错信息如何清空
- python集合去重_python集合去重
- mogonvue账户密码存储的位置
- DPDK 网卡收包流程
- centos网卡发送被占满了_CentOS 查看实时网络带宽占用情况方法
- java 中的jframe_java中JFrame是什么
- 原型模式(Prototype) 1
- leetcode [27] 移除元素 / Remove Element
- VS的QT插件下载与qt版本下载
- java 内部邮件_java企业内部邮件email收发管理系统s2sh
- 雅虎团队经验:网站页面性能优化的 34条
- 2015计算机二级office真题,2015计算机二级office题库(含答案)
- Amplify Shader Editor手册
- 关于机械革命电脑关机后自动重启的解决方案
- ZYJ7型转辙设备安装调试工法
热门文章
- mgr未同步 mysql_MySQL MGR 节点管理及故障切换
- 前端性能测试工具Lighthouse
- Fluke DSX2-5000/8000诞生记——千锤百炼只为完美呈现
- 对计算机进行管理和维护的软件应属于,对计算机进行管理和维护的软件应属于应用软件。()...
- python微课视频教程_Python基础实例教程(微课版)
- jstl中Core标签库c:out标签的escapeXml属性
- css中hideFocus
- 潇湘博客 有GOOGLEPR值了 潇湘
- Mysql全文搜索match against的用法
- 任天堂Switch迷你便携底座方案