1. 摘要

作者提出了一个新的网络架构 MobileNetV2,该架构基于反转残差结构,其中的跳跃连接位于较瘦的瓶颈层之间。中间的扩展层则利用轻量级的深度卷积来提取特征引入非线性,而且,为了维持网络的表示能力作者去除了较窄层的非线性激活函数。

2. 讨论和直觉

2.1. 深度可分离卷积

MobileNetV2 采用和 MobileNetV1 一样 3×3 大小的深度可分离卷积,相比标准卷积可以减少 8 到 9 倍的计算量。

2.2. 线性瓶颈结构

长期以来,人们一直认为神经网络中的兴趣流形(mainfold of interest)也就是激活特征,可以被嵌入到低维子空间中。基于这个事实,我们可以通过减少某一层网络的维度也就是通道数来减少激活特征的空间维度。MobileNetV1 中的宽度因子就是用来减少激活空间的维度的,直到激活特征可以扩展出整个空间,我们就找到了一个最佳的参数。

但是,神经网络中还有非线性激活函数,这时候,上面的直觉就不成立了。比如 ReLU 会把负的激活值变为零,换句话说,深度网络仅在输出域的非零部分具有线性分类器的功能。如果 ReLU 使得某一个通道的一些值变为零,这会不可避免地带来那个通道的信息损失,但如果通道数比较多,我们就可以通过一种结构用其它通道的激活值来补偿这个损失。

用一个随机矩阵 \(T\) 将左边的螺旋线嵌入到 \(n\) 维空间然后用 ReLU 激活,再用 \(T^{-1}\) 投影回去。可以看到 \(n=2,3\) 时信息损失非常大,而维度较高时则恢复得比较好。

因此,为了避免损失太多信息,作者采用线性瓶颈层,也就是在通道数比较少的瓶颈层不采用非线性激活函数。

2.3. 反转残差

上图中每个块的厚度代表通道数的大小。可以看到,之前的残差结构先用一个 1×1 的卷积来降低通道数,然后进行一个卷积操作,最后再用一个 1×1 的卷积将通道数恢复到原始大小,跳跃连接建立在两个通道数比较多的层之间,并且每一层都采用 ReLU 激活。

而反转残差结构则是先用一个 1×1 的卷积来提高通道数,然后进行一个深度卷积操作,最后再用一个 1×1 的卷积将通道数降低到原始大小,跳跃连接建立在两个通道数比较少的瓶颈层之间,并且画阴影的两个块没有 ReLU 激活函数。

上图右边中间两层通道数比较多,所以采用激活函数,信息损失也没有那么大;而两端通道数比较少,如果激活的话信息损失会非常大,所以不采用激活函数。

详细结构如下所示,其中瓶颈层到中间层通道数的提升比例称之为扩展因子 t,激活函数采用 ReLU6,也就是限制激活的最大值为 6。

3. 网络结构

如上表所示,第一层是标准卷积,然后后面是前述的瓶颈结构。其中 t 是扩展因子,c 是输出通道数, n 是重复次数,s 代表步长。如果步长为 2 ,代表当前重复结构的第一个块步长为 2,其余的步长为 1,步长为 2 时则没有跳跃连接,如下图所示。

此外,也可以像 MobileNetV1 那样继续利用宽度乘子和分辨率乘子进一步降低模型的大小。

4. 实验结果

在 ImageNet 上的分类结果如下所示:

在 COCO 数据集上的目标检测结果如下图所示:

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

获取更多精彩,请关注「seniusen」!

MobileNetV2: Inverted Residuals and Linear Bottlenecks的更多相关文章

  1. 深度学习论文翻译解析(十八):MobileNetV2: Inverted Residuals and Linear Bottlenecks

    论文标题:MobileNetV2: Inverted Residuals and Linear Bottlenecks 论文作者:Mark Sandler Andrew Howard Menglong ...

  2. [论文阅读]MobileNetV2: Inverted Residuals and Linear Bottlenecks

    0.      本文贡献点 本文的主要贡献点是一个构造了一个结构,称为the inverted residual with linear bottleneck.该结构与传统的residual bloc ...

  3. 论文-MobileNetV2: Inverted Residuals and Linear Bottlenecks

    1.主要创新 1)提出了一种新的layer module:the inverted residual with linear bottleneck, 2)short connect被置于bottlen ...

  4. (原)MobileNetV2

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9410574.html 论文: MobileNetV2: Inverted Residuals and ...

  5. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2

    from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...

  6. 『高性能模型』轻量级网络MobileNet_v2

    论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks 前文链接:『高性能模型』深度可分离卷积和MobileNet_v1 一.Mobil ...

  7. 机器视觉:MobileNet 和 ShuffleNet

    虽然很多CNN模型在图像识别领域取得了巨大的成功,但是一个越来越突出的问题就是模型的复杂度太高,无法在手机端使用,为了能在手机端将CNN模型跑起来,并且能取得不错的效果,有很多研究人员做了很多有意义的 ...

  8. face recognition[MobileFaceNet]

    本文来自<MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices> ...

  9. face recognition[MobiFace]

    本文来自<MobiFace: A Lightweight Deep Learning Face Recognition on Mobile Devices>,时间线为2018年11月.是作 ...

随机推荐

  1. simhash算法:海量千万级的数据去重

    simhash算法:海量千万级的数据去重 simhash算法及原理参考: 简单易懂讲解simhash算法 hash 哈希:https://blog.csdn.net/le_le_name/articl ...

  2. docker私有仓库registry的使用

    1.registry的安装 关于docker registry的安装,可以说简单的不能再简单了,docker run一个容器就好了,也就是一条命令的事 docker run -d -p : --res ...

  3. Python测开面试题之装饰器

    Python的装饰器是面试常被问到的问题之一,在面试Python测试开发时被问到的概率不低于70%,那么装饰器的原理是什么,怎么快速写出一个装饰器呢,接下来我们详细讲解装饰器的实现方法. Python ...

  4. height 自适应问题

    何为高度自适应? 高度自适应就是高度能跟随浏览器窗口的大小改变而改变,典型的运用在一些后台界面中上面一栏高度固定用作菜单栏或导航栏,下面一栏高度自适应用于显示内容.高度自适应不像宽度自适应那样简单,在 ...

  5. HDU - 6583 Typewriter (后缀自动机+dp)

    题目链接 题意:你要打印一段字符串,往尾部添加一个字符需要花费p元,复制一段字符到尾部需要花费q元,求打印完全部字符的最小花费. 一开始想的贪心,后来发现忘了考虑p<q的情况了,还纳闷怎么不对. ...

  6. Visual Studio开发首选!DevExtreme v19.1.6全新来袭

    DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动.Web开发框架,可以直接在Visual Studio集成开发环境,构建 ...

  7. Observer-Proxy拦截器 -ES6

    在目标对象前嫁接了一个拦截层,外界对该对象的访问都必须通过这层拦截 可实现观察者模式

  8. java获取音频文件播放时长

    方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...

  9. JQ其他

    关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定 ...

  10. MySql触发器简介

    MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 My ...