专栏名称: AI开发者
AI研习社,雷锋网旗下关注AI开发技巧及技术教程订阅号。
目录
相关文章推荐
宝玉xp  ·  转发微博-20250313022628 ·  17 小时前  
道与术抓妖  ·  二波一定需要一个龙头打高度的——3.11 ·  昨天  
道与术抓妖  ·  二波一定需要一个龙头打高度的——3.11 ·  昨天  
黄建同学  ·  //@硅谷亨特:刚才花了5min试了一下,确 ... ·  3 天前  
爱可可-爱生活  ·  【[35星]YALS:一个为llama.cp ... ·  3 天前  
51好读  ›  专栏  ›  AI开发者

专栏 | 卷积神经网络学习路线(十六) | ICLR 2017 SqueezeNet

AI开发者  · 公众号  · AI  · 2020-01-31 17:00

正文


点击上方“蓝字”关注“AI开发者”



本文来自 @BBuf 的社区专栏 GiantPandaCV ,文末扫码即可订阅专栏。

前言

这是卷积神经网络学习路线的第16篇文章,介绍ICLR 2017的SqueezeNet。近些年来深层卷积网络的主要方向集中于提高网络的准确率。而对于相同的正确率,更小的CNN架构可以提供如下优势:(1)在分布式训练中,与服务器通信需求更小。(2)参数更少,从云端下载模型的数据量少。(3)更适合在FPGA等内存受限的设备上部署。基于这些优点,这篇论文提出了SqueezeNet。它在ImageNet上实现了和AlexNet相同的准确率,但是只使用了AlexNet 的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到 0.5 M,这是AlexNet的

SqueezeNet细节

结构设计技巧

  • (1)使用 卷积代替 卷积:参数减少为原来的
  • (2)减少输入通道数量:这一部分使用 squeeze 层来实现。
  • (3)将下采样操作延后,可以给卷积层提供更大的特征图:更大的激特征图保留了更多的信息,可以获得更高的分类准确率
  • 其中,(1)和(2)可以显著减少参数数量,(3)可以在参数数量受限的情况下提高准确率。

FIRE MODULE

Fire Module是SqueezeNet中的基础构建模块,Fire Module如Figure1所示 :

  • squeeze convolution layer :只使用 卷积核,即上面提到的策略(1)。
  • expand layer :使用 卷积核的组合。
  • Fire module中有 3 个可调的超参数: ( squeeze convolution layer 卷积核的个数), ( expand layer 卷积核的个数), expand layer 卷积核的个数)
  • 使用Fire Module的过程中,令 ,这样 squeeze layer 可以限制输入通道数量,即 结构设计技巧 提到的技巧(2)。

网络结构

SqueezeNet以卷积层 conv1 开始,接着使用 8 Fire modules ( fire 2-9 ),最后以卷积层 conv10 结束。每个Fire Module中的 Filter 数量逐渐增加,并且在 conv1 , fire4 , fire8 , 和 conv10 这几层之后使用步长为2的 Max-Pooling ,即将池化层放在相对靠后的位置,这使用了以上的策略(3)。 如图,左边为原始版本的SqueezeNet,中间为包含简单跳跃连接的改进版本,最右侧为使用复杂跳跃连接的改进版本。更加具体的细节如Table1所示:

这里有一些细节,例如我们看 fire2 这个模块在剪枝前的参数是 11920 ,这个参数是怎么计算得到的呢? fire2 之前的 maxpool1 层的输出是 ,之后接着的 Squeeze 层有 16 的卷积filter,注意这里是多通道卷积,为了避免与二维卷积混淆,在卷积尺寸末尾写上了通道数。这一层的输出尺寸为 ,之后将输出分别送到expand层中的 (64个)和 (64个)进行处理,注意这里不对16个通道进行切分(就是说这里和 MobileNet 里面的那种深度可分离卷积不一样,这里就是普通的卷积)。为了得到大小相同的输出,对 的卷积输入进行尺寸为 1 zero padding 。分别得到 的大小相同的特征图。将这两个特征图 concat 到一起得到 大小的特征图,加上 bias 参数,这样总参数为。







请到「今天看啥」查看全文