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简要介绍相关推荐

  1. 第4周学习:MobileNetV1, V2, V3

    这里写目录标题 MobileNet V1 & V2 MobileNet V3 SENet 的基本原理和代码 HybridSN 高光谱分类-代码练习 MobileNet V1 & V2 ...

  2. MobileNetV1/V2/V3简述 | 轻量级网络

    MobileNet系列很重要的轻量级网络家族,出自谷歌,MobileNetV1使用深度可分离卷积来构建轻量级网络,MobileNetV2提出创新的inverted residual with line ...

  3. 第4周学习:MobileNetV1, V2, V3 SENet HybridSN

    这里写目录标题 Part1 论文阅读与视频学习: 1 Mobilenet系列 1.1 Mobilenet V1 1.2 Mobilenet V2 1.3 Mobilenet V3 2 SENet 2. ...

  4. 使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow)

    使用自己的数据集训练GoogLenet InceptionNet V1 V2 V3模型(TensorFlow) [尊重原创,转载请注明出处]https://blog.csdn.net/guyueali ...

  5. Dalvik虚拟机简要介绍和学习计划

    出自:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应 ...

  6. openstack及组件简要介绍

    openstack及组件简要介绍 为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中 ...

  7. 经典卷积神经系列(Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet)

    写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确.详细内容可以参考文中帖的链接,比较好!!! 经典的CNN:Inception v1\v2\v3\v4.Resnet.Resnext.D ...

  8. python解释器cpython的源码简要介绍

    0. 参考文档 参考文档如下: Your Guide to the CPython Source Code [python]带你入门cpython源代码,让你不再一头雾水!尝试去读读python的实现 ...

  9. IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour

    IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour 前段时间发了一个破解的PN532工具,详见 =========================== IC卡解密 ...

最新文章

  1. Activity的用法(三):开启网页 (没有弹出浏览器,不清楚是什么原因)
  2. endnotex7怎么导入中文文献_EndNote X7自动导入PDF功能详解 | 科研动力
  3. SharePoint优秀blog文章汇总
  4. boost::coroutine模块实现合并数组的测试程序
  5. STL学习之一(栈(statck))
  6. NIFI的ERROR报错信息如何清空
  7. python集合去重_python集合去重
  8. mogonvue账户密码存储的位置
  9. DPDK 网卡收包流程
  10. centos网卡发送被占满了_CentOS 查看实时网络带宽占用情况方法
  11. java 中的jframe_java中JFrame是什么
  12. 原型模式(Prototype) 1
  13. leetcode [27] 移除元素 / Remove Element
  14. VS的QT插件下载与qt版本下载
  15. java 内部邮件_java企业内部邮件email收发管理系统s2sh
  16. 雅虎团队经验:网站页面性能优化的 34条
  17. 2015计算机二级office真题,2015计算机二级office题库(含答案)
  18. Amplify Shader Editor手册
  19. 关于机械革命电脑关机后自动重启的解决方案
  20. ZYJ7型转辙设备安装调试工法

热门文章

  1. mgr未同步 mysql_MySQL MGR 节点管理及故障切换
  2. 前端性能测试工具Lighthouse
  3. Fluke DSX2-5000/8000诞生记——千锤百炼只为完美呈现
  4. 对计算机进行管理和维护的软件应属于,对计算机进行管理和维护的软件应属于应用软件。()...
  5. python微课视频教程_Python基础实例教程(微课版)
  6. jstl中Core标签库c:out标签的escapeXml属性
  7. css中hideFocus
  8. 潇湘博客 有GOOGLEPR值了 潇湘
  9. Mysql全文搜索match against的用法
  10. 任天堂Switch迷你便携底座方案