1. MobileNet V1
- paper:MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications
- link:MobileNet V1
- 核心点:将标准的卷积因式分解成为
depthwise convolution
和pointwise convolution
,假设输入channel数为M,输出channel数目为N,卷积kernel size为k * k * M * N
,输出FM为f * f * N
,标准卷积的计算量为k * k * M * N * f * f
。因式分解的第一步计算k * k * f * f
,表示用2维卷积卷积2维度输入;M个输入和N个卷积核就有f * f * k * k * M * N
计算量,标准卷积/depthwise conv/pointwise conv 如下图
- 卷积分解后的计算量变为
f * f * k * k * M + f * f * M * N
,计算量降到之前计算量的1/(k*k),标准卷积和分解卷积的差别如图所示
- Mobilenet的网络以及和标准卷积结构的准确率比对
- mobilenet提出了两个新的概念,目的是为了让模型变得更快更小,
width multiplier
表示channel数目和baseline的倍数,将输入通道数M变成a * M,输出通道数变成a * N,在任何模型结构基础上通过定义一个更瘦的模型并且权衡合理的精度、延迟的大小;resolution multiplier
表示对输入图像做缩放
- mobilenet作为目标检测系统的backbone,和ssd、fasterrcnn搭配使用
- mobilenet在face embedding中的表现
2. MobileNet V2
- paper:Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation
- link:MobileNet V2
- 核心点:传统的residual block是先用1 * 1的卷积对feature map进行降维,然后再进行3 * 3卷积操作,最后再使用1 * 1conv操作将feature map扩充,mobilenet V2的思路
inverted residuals
,先进行扩充操作然后再压缩; linear bottlenecks
在residual block的eltwise sum之前的1 * 1conv操作不采用relu操作,为了避免特征被破坏;- Mobilenet V1和V2的结构比对,主体构成都是由depthwise conv和point wise conv来提取特征;由于depth conv不具备改变输入channel的能力,所以在depth conv之前使用point conv来提升为度;去掉第二个point conv后面的relu,
activation可以在高维空间有效地增加非线性,但是在低维空间会破坏特征
,后面的point conv操作主要是为了降维,再使用relu会影响效果; - Mobilenet V2和resnet的结构比对,conv流程都是1 * 1 -> 3 * 3 -> 1 * 1,使用shortcut connection降输入输出相加;residual block使用标准卷积,Mobilenet使用dw conv;Mobilenet V2使用inverted residual block是为了适配dw conv,将特征提取在高维进行;
- MobileNet V2的主体结构,以及在stride为1和2的时候,inverted residual block的结构,图中结构和论文中的描述有所出入,论文描述有19个bottleneck,网络中没有采用pooling全部由stride为2的conv操作代替;为了使shortcut操作时feature map的尺度匹配stride为2时不采用short connection;
- MobilenetV2 V1以及其他轻量级网络的inference性能比对
3. ShuffleNet V1
- paper:An Extremely Efficient Convolutional Neural Network for Mobile Devices
- link:ShuffleNet V1
- 核心点:Shufflenet主要是利用group conv、dw conv、channel shuffle等思想对resnet进行改进,即resnet的压缩版本,group conv对每一个分组的feature map独立执行卷积,group conv使得模型的信息流限制在各个group内,group之间没有信息交换间接影响模型的表示能力,引入channel shuffle操作增加group之间的信息交换机制,channel shuffle仅仅是对通道的顺序进行了调整
- 对resnet的residual block的改进,将1 * 1的卷积操作改为分组卷积,同时后面跟一个channel shuffle,将原始的bottleneck unit的conv改为dw conv,针对性stride为2的情况,添加了avg pooling保证shortcut操作时feature map的尺寸适配;将resnet的eltwise sum操作改为concat
- Shufflenet的结构和resnet基本一样,由几个stage组成,在stage中将shufflenet unit代替residual block,在复杂度一定的情况下可以通过该改变group的数目来改变output channel的数量,更多的channel可以表示更多的特征;
- Shufflenet的核心就是使用shuffle unit替换resnet的residual block,到达减少计算量和提高准确率的效果,channel shuffle解决了group conv叠加出现的边界效应
4. ShuffleNet V2
- paper:Practical Guidelines for Ecient CNN Architecture Design
- link:ShuffleNet V2
- 核心点:shufflenet v2主要是针对模型加速和压缩来对网络结构进行改进,目前大部分模型评价加速效果的指标都是float-point operations,主要是衡量卷积层的乘法操作,但是在实际测试中发现FLOPs并不能完全用来衡量模型速度,有时候MFLOPs相同的网络实际速度差别很大;
- 影响模型速度的因素为MAC
memory access cost
,这个时间对模型速度影响较大但是难以在FLOPs中体现,实验1表明在给定FLOPs的情况下当输入输出channel数更接近时MAC值越小,模型速度越快;
* 实验2表明过多的卷积group操作会增大MAC,相同层数的ResNet和ResNeXt的参数量、FLOPs和resnet差不多,但是ResNeXt速度要慢很多; - 实验3表明模型中分支数量越少,模型速度越快,在FLOPs相同的情况下模型的支路越多
fragment
程度越高对并行计算越不利直接导致模型速度变慢 - 实验4探讨的是eltwise操作对模型速度的影响,实验表明eltwise操作的时间消耗远比在FLOPs上体现的数值要多,网络设计时要尽量减少eltwise操作,eltwise虽然FLOPs低但是时间消耗十分明显
- 针对4个实验所的结论设计shufflenet v2,使用channel split代替group conv,使用concat代替eltwise sum,shufflenet v2 c和d结构对应的是shufflenet v1 a和b两种结构
- 包括shufflenet v2在内的模型在速度、精度、FLOPs上的详细对比
*根据shufflenet v2的研究结果分析得到一个有效的网络应该包含 卷积层使用相同的输入输出通道、group conv的数量应该控制较小、减少网络分支降低网络结构的离散程度、减少eltwise操作