论文阅记 MobileNetV2:Inverted Residuals and Linear Bottlenecks

  论文题目:MobileNet V2:Inverted Residuals and Linear Bottlenecks  

  文献地址:https://arxiv.org/abs/1801.04381

  (非官方)源码地址:

  (1)Caffe 实现:https://github.com/shicai/MobileNet-Caffe

  (2)Pytorch实现:https://github.com/tonylins/pytorch-mobilenet-v2

  (3)TensorFlow实现:https://github.com/neuleaf/MobileNetV2

MobileNet V1优劣

  MobileNet V1中虽然提出了很有价值的Depthwise Convolution的卷积方式,极大程度上减少了参数量和计算量。但其网络结构却采用非常复古式的直筒结构,网络结构性价比不高。并且由于每一次卷积的维度都很小,卷积后的结果再经过ReLU激活函数,很容易获得0值,丧失有价值的信息。

MobileNet V2思想与结构

  因此,MobileNet V2 的版本中引入了两个改动:Inverted Residuals and Linear Bottlenecks

  一方面,为模型添加了潮流的结构,(潮流的结构使用的是扩张-特征提取-压缩的方式,Inverted Residuals)由于卷积操作采用的DW操作,先对通道数量进行扩张并不会增加多少参数量和计算量。【输入和输出的通道数量均为低维度的张量】

  另一方面,去掉了ReLU激活函数,使用线性的结构以防止该层毁灭一些有用的信息,以防止深度卷积训出来的卷积核不少为空的现象

  整理一下: MobileNet v2 依旧使用depthwise separable convolutions操作,但主体结构变为如下右图的形式:

  主体结构的block包含了3个卷积层,最后两个卷积层是在MobileNet V1中提到的结构:一个DW (depthwise convolution),一个PW (pointwise convolution) 。然而,此时的1*1的PW操作与MobileNet稍有不同。

  • 在V1中,PW卷积用于保持通道数量相同或者2倍于之前的通道数量。 【扩大】
  • 在V2中,PW卷积操作用于降低通道数量。 :它将维数高的数据(通道)投射到维数低得多的张量中。 【压缩】

In V1 the pointwise convolution either kept the number of channels the same or doubled them. In V2 it does the opposite: it makes the number of channels smaller.

  第一个卷积层是一个新增的层,其依旧是1*1卷积的PW操作。其主要目的是扩大通道数量。将通道数量扩大后的feature map 传递给DW进行depthwise convolutions。扩充数量通过扩张因子t决定。【扩张】

  也就是说,其内部是一个 扩张-特征提取-压缩的过程。如下图可以看出网络结构详细的变化(扩张因子factor的作用):

  从上图可以看出,通过这样的结构,输入和输出都是低维度的张量;在块内进行DW操作的是一个高维度的张量。由于此时的卷积操作是DW的操作,即使是高维度的张量,也不会增加多少参数和计算量。

  另一方面增添了residual connection 的连接,为MobileNet V1中直筒的结构增添了ResNet作用的结构。

  另外,除了projection convolution 层的输出结构没有激活函数ReLU6,其余的各层都会添加BN结构和ReLU6的结构。

  Expansion layer充当解压器(如解压缩),它首先将数据恢复到其完整的形式,然后Depthwise layer执行在网络的这个阶段中任何重要的过滤,最后Projection layer压缩数据使其再次变小。

  

  作者为什么要将DW操作的张量维度提升呢?这么做有什么用意呢?

  当n = 2,3时(n为通道数量),与Input相比有很大一部分的信息已经丢失了。而当n = 15到30,还是有相当多的地方被保留了下来。也就是说,对低维度做ReLU运算,很容易造成信息的丢失。而在高维度进行ReLU运算的话,信息的丢失则会很少。

  

  1. Inverted Residuals:

  从上图中可以看出,Inverted Residuals与Residual Net不同在于:

  • ResNet (V1) 中采用1*1卷积、3*3卷积、1*1卷积的组合方式进行"压缩"-"特征提取"-"扩张"的方式。即先将通道数量减少,再进行3*3卷积,最后通过1*1卷积还原输入的通道数量。
  • Inverted Residuals 中由于采用Depth-wise convolutions的操作,进行"扩张"-"特征提取"-"压缩"的方式。正好与上述ResNet的方式相反,所以称之为Inverted Residuals。

  2. Linear Bottleneck:

  为了解决MobileNet V1中,由于DW操作只针对一个通道,维度较低,feature map经ReLU激活后极易造成输出的值大多全为0,造成卷积核训练无效。

  从上图中可以看出,MobileNet V1 版本和V2版本的区别,即在最终PW的输出后使用Linear代替了ReLU6的激活函数。(ReLU激活函数的非零部分实际上也就是线性激活函数)

  

  MobileNet 的网络结构(修改后的网络结构):

  结构图源自:https://pytorch.org/hub/pytorch_vision_mobilenet_v2/

  

  针对stride=1 和stride=2,在block上有稍微不同,主要是为了与shortcut的维度匹配,因此,stride=2时,不采用shortcut。 具体如下图:

原文地址:https://www.cnblogs.com/monologuesmw/p/12272010.html

时间: 2024-10-25 17:43:24

论文阅记 MobileNetV2:Inverted Residuals and Linear Bottlenecks的相关文章

论文阅记 Segmentation-Based Deep-Learning Approach for Surface-Defect

论文题目: Segmentation-Based Deep-Learning Approach for Surface-Defect 文献地址:https://arxiv.org/abs/1903.08536v3 源码地址:https://github.com/Wslsdx/Deep-Learning-Approach-for-Surface-Defect-Detection 最近接到表面缺陷检测的需求,在Github上查找Defect Detection开源代码时,“最先进的缺陷检测网络”赫然

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

from:https://blog.csdn.net/qq_14845119/article/details/73648100 Inception v1的网络,主要提出了Inceptionmodule结构(1*1,3*3,5*5的conv和3*3的pooling组合在一起),最大的亮点就是从NIN(Network in Network)中引入了1*1 conv,结构如下图所示,代表作GoogleNet 假设previous layer的大小为28*28*192,则, a的weights大小,1*

face recognition[MobileFaceNet]

本文来自<MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices>,时间线为2018年4月.是北京交通大学和握奇数据公司的作品. 人脸发展至今,效果相比传统方法有了很大的提升,然而受限于机器资源和实时性部署等需求,需要考虑诸如MobileNet等网络的使用. 0 引言 在越来越多的手机和嵌入式设备上,人脸验证变成越来越流行的一个认证技术.然而,现在高准确度的人脸验证模型都

MovibleNet

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNetV2: Inverted Residuals and Linear Bottlenecks 背景 自从AlexNet在2012年赢得ImageNet大赛的冠军一来,卷积神经网络就在计算机视觉领域变得越来越流行,一个主要趋势就是为了提高准确率就要做更深和更复杂的网络模型,然而这样的模型在规模和速度方面显得捉襟见肘,在

MnasNet阅读笔

Abstract 设计移动设备上的CNN具有挑战性,需要保证模型小速度快准确率高,人为地权衡这三方面很困难,有太多种可能结构需要考虑. 本文中作者提出了一种用于设计资源受限的移动CNN模型的神经网络结构搜索方法.作者提出将时间延迟信息明确地整合到主要目标中,这样搜索模型可以识别一个网络是否很好地平衡了准确率和时间延迟. 先前的工作中通常用其他量来代表速度指标,如FLOPS,作者的做法是在特定平台(Pixel phone)上运行模型并直接测量其时间延迟. 为适当平衡搜索的灵活性和搜索空间的大小,作

新年计划(参考)

新年计划 还是给自己一个计划. 新年规划,还是按照我的观念,先生活后工作: 1.首要大事应该是要搞定每次打电话回家父母都要关心的事情了.但愿吧,自己不急,感觉时间大把,但是父母以他们的观念来看,已经等不及了. 2.从今年开始,每年孝敬父母一个月的工资,算是每年为父母工作一个月吧. 3.职业发展上能够再上一层楼.至于是什么就不说了,心里有数. 4.开始学会理财,08年底和09年底都把自己的所有支出统计了一次,发现工资的收入几乎是和支出相等的,没有什么剩余.看着一堆的支出项,却又不知道花往何处了.今

卡尔曼滤波(Kalman Filter)在目标边框预测中的应用

1.卡尔曼滤波的导论 卡尔曼滤波器(Kalman Filter),是由匈牙利数学家Rudolf Emil Kalman发明,并以其名字命名.卡尔曼出生于1930年匈牙利首都布达佩斯.1953,1954年分别获得麻省理工学院的电机工程学士以及硕士学位.1957年于哥伦比亚大学获得博士学位.卡尔曼滤波器是其在博士期间的研究成果,他的博士论文是<A New Approach to Linear Filtering and Prediction Problem>[1]. 卡尔曼滤波器是一个最优化自回归

windows+ubuntu双系统,在windows中访问ubuntu文件

今天被告知ubuntu磁盘空间不足,百度得知可以通过autoremove命令清理,然而,,再也进不去ubuntu系统了,具体表现为第一次选择ubuntu之后一直是空白紫屏,如果强制关机再开机后选择ubuntu,则会不断调回boot界面重复选择系统,总之,ubuntu是进不去了. 但是,ubuntu中有着一篇很重要的论文,记不得名字了,必须通过进入ubuntu得知,最终使用Linux Reader软件完成对ubuntu中文件的查看,该软件直接打开即可运行,在windows中可以对ubuntu进行访

声纹识别之PLDA算法描述

之前我写过<我对说话人识别/声纹识别的研究综述>,本篇基本上可以是这个综述的续写.其实,写的也没有什么深度,想获得深度信息的朋友们可以不用往下看了,还不如下载几篇领域内的国内博士论文看看.为什么是国内呢?因为国内博士论文前面的综述写的还不错,嘿嘿~我写这个主要是给不熟悉这个领域内的朋友看的,用通熟的话描述这个领域内重要的一些算法,等于是入个门吧. PLDA算法 前面博客已经提到过声纹识别的信道补偿算法,而且重点说了LDA算法.PLDA(Probabilistic Linear Discrimi