MobileNetV2: Inverted Residuals and Linear Bottlenecks
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的更多相关文章
- 深度学习论文翻译解析(十八):MobileNetV2: Inverted Residuals and Linear Bottlenecks
论文标题:MobileNetV2: Inverted Residuals and Linear Bottlenecks 论文作者:Mark Sandler Andrew Howard Menglong ...
- [论文阅读]MobileNetV2: Inverted Residuals and Linear Bottlenecks
0. 本文贡献点 本文的主要贡献点是一个构造了一个结构,称为the inverted residual with linear bottleneck.该结构与传统的residual bloc ...
- 论文-MobileNetV2: Inverted Residuals and Linear Bottlenecks
1.主要创新 1)提出了一种新的layer module:the inverted residual with linear bottleneck, 2)short connect被置于bottlen ...
- (原)MobileNetV2
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9410574.html 论文: MobileNetV2: Inverted Residuals and ...
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2
from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule ...
- 『高性能模型』轻量级网络MobileNet_v2
论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks 前文链接:『高性能模型』深度可分离卷积和MobileNet_v1 一.Mobil ...
- 机器视觉:MobileNet 和 ShuffleNet
虽然很多CNN模型在图像识别领域取得了巨大的成功,但是一个越来越突出的问题就是模型的复杂度太高,无法在手机端使用,为了能在手机端将CNN模型跑起来,并且能取得不错的效果,有很多研究人员做了很多有意义的 ...
- face recognition[MobileFaceNet]
本文来自<MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices> ...
- face recognition[MobiFace]
本文来自<MobiFace: A Lightweight Deep Learning Face Recognition on Mobile Devices>,时间线为2018年11月.是作 ...
随机推荐
- 【Java】 Java网络编程总结
一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...
- 使用GDB和GEF进行调试
使用GDB进行调试 这是编译ARM二进制文件和使用GDB进行基本调试的简单介绍.在您按照教程进行操作时,您可能需要按照自己的习惯使用ARM程序集.在这种情况下,你要么需要一个备用的ARM设备,或者你只 ...
- centos7.2升级openssh7.9p1
Centos7.2版本yum升级openssh版本最高到7.4,想要升级到更高的版本需要重新编译 一.查看当前openssh版本: [root@localhost ~]# ssh -VOpenSSH_ ...
- java8学习之收集器枚举特性深度解析与并行流原理
首先先来找出上一次[http://www.cnblogs.com/webor2006/p/8353314.html]在最后举的那个并行流报错的问题,如下: 在来查找出上面异常的原因之前,当然得要一点点 ...
- redis 加锁与释放锁(分布式锁1)
使用Redis的 SETNX 命令可以实现分布式锁 SETNX key value 返回值 返回整数,具体为 - 1,当 key 的值被设置 - 0,当 key 的值没被设置 分布式锁使用 impor ...
- JavaScript 函数调用时带括号和不带括号的区别
function countBodyChildren(){ var body_element = document.getElementsByTagName("body")[0]; ...
- buuctf@warmup_csaw_2016
from pwn import * io=remote('node3.buuoj.cn',27774) io.recvuntil('WOW:') addr=(io.recvuntil('\n')[:- ...
- b2b推广方式有哪些-
b2b推广方式有哪些 老黄牛推广软件订做 Q:935744345 专业团队,高效推广
- java设置Cookie
public static void setCookie(HttpServletResponse response, String key, String value){ Cookie cookie ...
- [Linux系统] (2)用户权限管理
示例---普通用户之间的文件共享:假设公司有2个项目组,共享同一台服务器. 1.为两个项目组各创建一个用户: useradd leo01 useradd leo02 2.为两个新用户设置密码: pas ...