0. 前言
- 大概记一下SqueezeNet读后的一些记录,老文章了,网上很多笔记
- 文章结构写的很清晰,主题也很明确
- 本篇文章就是简单粗暴的从design space入手,凭空创造了一个网络,设计网络的时候有几条准则和思路(下面记一下正文里的点)
1. 从几个角度讲了一下CNN的发展
① 微架构(MicroArchitecture):
就是由少量layer组成的小模块,调参的时候通常针对这样的模块调整,而不是针对更细粒度的layer调整。
这种模块化的设计,在近年很多网络里面都有:什么double conv,inception block,dense block 等等
② 宏架构(MacroArchitecture):
提到了旁路连接(bypass connection),如resnet。这种是宏角度上去对网络进行的改进
③ 设计空间(Design Space):
文中提到了一个“shape of NN design space”
2. 网络设计策略
① Replace 3x3 filters with 1x1 filters
就是将(大部分的)3x3filters(conv层、pool层里的)换成1x1的尺寸,能够大幅降低计算量
② Decrease the number of input channels to 3x3 filters
降低了传给这些filters的输入的尺寸,①②两条都是降低计算量的
③ Downsample late in the network so that convolution layers have large activation
maps
这里的意思是,大部分网络都是开头的几层就开始降采样(stride>=2),这样从中间到末尾的网络层,那些隐层输出的尺寸都会很小。
这里有一句文章的核心观点:
Our intuition is that large activation maps (due to delayed downsampling) can lead to higher classification accuracy,这句话是说大的激活图(一般卷积后面都要有激活层)能够导致更高的分类精度(可能是保留的信息更多)
而激活图的尺寸由(1)输入尺寸(2)降采样层的选择决定
所以在开头的几层开始降采样和文章的这个观点不符,所以策略的第三条就是把降采样拖延到很后面再做。
3. Fire Module(微架构)
组成:
4. SqueezeNet(宏架构)
一个独立的卷积层(conv1)、
八个Fire模块(fire2-9)、
一个卷积层(conv10)、
一个softmax层
具体每层参数配置如下:
5. 超参数说明
看了一下一个高阅读量的同论文的论文笔记博客,https://blog.csdn.net/csdnldp/article/details/78648543,这篇的5.1里记录了一些文章中做消融实验部分的超参数的说明。但是博客有一些超参数的解释是错的(我在他博文底下一不小心生气地指出了),在他的基础上我修正一下,写在这里:
:第一个Fire module中expand filter的个数
:“增加expand filter”的频率
:增加的个expand filter,每freq个Fire module之后增加个expand filter
:第i个Fire module中,expand filters的个数
:压缩比,即the squeeze ratio ,为squeeze layer中filter个数除以Fire module中filter总个数得到的一个比例
:在expand layer有1∗1和3∗3两种卷积,这里定义的参数是3∗3卷积个占卷积总个数的比例