inception
- 稀疏网络结构,保证计算资源的使用效率。
-
一种结构是将CNN中常用的卷积(1x1,3x3,5x5)、池化操作(3x3)堆叠在一起(卷积、池化后的尺寸相同,将通道相加),一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。每一个卷积层后都要做一个ReLU
-
inception V1还提出一个上面图片基础上的小改进。注意这里没有depthwise conv操作。蓝色的3x3和5x5就是普通卷积。
- GoogLeNet网络结构:分成了5个阶段,最深达到了1024维,输入从最初的224x224一路降采样到7x7,然后经由avg pool变成了一个1x1x1000的一个vector,进行classification。不同的阶段,tensor的宽和高不同,另外每一个阶段里面,他对于不同的尺寸的卷积核分配的通道数也不同。
Inception V2
- Inception V2版本的解决方案就是修改Inception的内部计算逻辑,提出了比较特殊的“卷积”计算结构。
- 卷积分解(Factorizing Convolutions)大尺寸的卷积核可以带来更大的感受野,但也意味着会产生更多的参数,比如5x5卷积核的参数有25个,3x3卷积核的参数有9个.用2个连续的3x3卷积层组成的小网络来代替单个的5x5卷积层,即在保持感受野范围的同时又减少了参数量
- 在网络的前期使用这种分解效果并不好,在中度大小的特征图(feature map)上使用效果才会更好(特征图大小建议在12到20之间)
-
inceptionV2的文章里面还是将inceptionV2与GoogLeNet结合起来,表述的
InceptionV3
- Inception V3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性(每增加一层都要进行ReLU)。
- 另外,网络输入从224x224变为了299x299。
InceptionV4
-
Inception V4研究了Inception模块与残差连接的结合,来改进V3结构,得到Inception-ResNet-v1,Inception-ResNet-v2,Inception-v4网络。
MobileNet
- MobileNet的基本单元是深度级可分离卷积(depthwise separable convolution),其实这种结构之前已经被使用在Inception模型中。
- 包括:depthwise convolution和pointwise convolution
- Google提出的移动端模型MobileNet,其核心是采用了可分解的depthwise separable convolution,其不仅可以降低模型计算复杂度,而且可以大大降低模型大小
- tensorflow 有相应的api。tf.nn.depthwise_conv2d(),applies a different filter to each input channel (expanding from 1 channel to
channel_multiplier
channels for each), then concatenates the results together.
MobileNetV2
- 提出了逆向的残差结构(Inverted residuals)ResNet的残差结构是0.25倍降维,MobileNet V2残差结构是6倍升维
- ResNet的残差结构中33卷积为普通卷积,MobileNet V2中33卷积为depthwise conv
- v2版本在进入33卷积之前,先进行了11pointwise conv升维,并且经过RELU。1*1卷积出去后,没有进行RELU操作
- 精度上,MobileNet v2优于MobileNet v1
- 速度上,在GPU有并行的情况下,v1和v2速度基本差不多,在cpu这种无并行的情况下,v2要比v1慢大概40%。就是说,v2比v1的乘加运算量确实是小,但是最终速度是由好多因素决定的,这也就是shuffle v2的改进由来。
-
MobileNet v2中为了保证信息不被大量损失,应此在残差模块中去掉最后一个的RELU。因此,也称为线性模块单元。
SqueezeNet
- squeeze层采用 1*1 卷积核对上一层 feature map 进行卷积,主要目的是减少 feature map 的维数
- 提出 fire module。 fire module 包含两个部分: squeeze层 和 expand 层。首先是 squeeze 层,就是 11 卷积,其卷积核数要少于上一层的 feature map 数; expand 层分别用 11 和 3*3 卷积,然后concat(通道数相加)。SqueezeNet 的创新点在 inception 中都有,进行了一些列的改变。有需要的话可以参考 inception 的论文。