CV模型消化与提炼 2

image.png

inception

  • 稀疏网络结构,保证计算资源的使用效率。
  • 一种结构是将CNN中常用的卷积(1x1,3x3,5x5)、池化操作(3x3)堆叠在一起(卷积、池化后的尺寸相同,将通道相加),一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。每一个卷积层后都要做一个ReLU


    image.png
  • inception V1还提出一个上面图片基础上的小改进。注意这里没有depthwise conv操作。蓝色的3x3和5x5就是普通卷积。


    image.png
  • 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结合起来,表述的


    image.png

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网络。


    image.png

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.
    image.png

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。因此,也称为线性模块单元。


    image.png

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 的论文。
    image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容