squeezeNet阅读

引言

众所周知,小的卷积神经网络体系结构有三个优点:
1、较小的CNN在分布式训练过程中需要较少的服务器通信
2、较小的CNN只需较少的带宽就能将新模型从云端导出到客户端如无人驾驶汽车
3、较小的CNN更适合部署在FPGA和其他内存有限的硬件上
而Squeezenet就实现了在保持高准确率的基础上大量减少参数!(16年的准确度)但是从侧面也能够感受到squeezenet采取的策略是有效的!

绪论

展开讲上述的三个优点:
1、参数越少,训练愈快,分布式通信开销越少
2、在无人驾驶汽车上,功能的更新需要半自动化,越胆小的模型可使得更新更快更便捷
3、在FPGA芯片中装载模型当然是越小越好
关于现场可编程阵列FPGA的详细信息请见FPGA
并且说明了FPGA的10MB的片上存储器对于设定的小模型是足够的。

由以上几个优点,故本文提出了一个参数更少且精度能够达到与现有模型相当的体系结构。并由此提出一种更为严格的搜索新的CNN框架的设计空间。

而本文的组织结构如下:
第2板块回顾相关的工作,然后在3和4两个板块介绍和评估SqueezeNet结构,在之后理解CNN的架构设计选择是如何影响模型的数量级和准确度。在第5个板块,本文设计了一个卷积神经网络的微观搜索方案,定义组织和每个层和模块的空间维度。第6个板块,对于卷积神经网络的宏观设计进行探索。在最后第7个板块,对第3、4板块的对于相关设计者可供参考的地方做出总结。

相关工作

已有的模型压缩方法:

1、将奇异值分解(SVD)应用于预先训练好的CNN模型
2、网络:从一个预先训练好的模型开始,然后替换以零阈值以下的参数来形成稀疏矩阵,最后对稀疏的CNN进行微调
3、通过结合网络修剪量化(8位或更少)和霍夫曼编码以扩展工作,同时创建一种深度压缩方法,设计一个名为EIE的硬件加速器,直接操作压缩模型,实现实质性的加速和节能 —— ||这里不了解。

卷积神经网络微观

卷积块一般是三维的即3D的,hwc为三个最重要的维度。
文中提到了Googlenet的多种大小的卷积块的组合,然后本文也借鉴了这个创新点,讲混合卷积作为Squeezenet的一个组成部分。

卷积宏观

因为种种原因,本文定义CNN的宏观架构为端对端的多模块组成系统级的组织。

第三部分 体系结构

1、设计策略
2、基本模块 fire module
3、整体架构

overarching objective is identify a CNN architecture with few parameters and competitive accuracy.
因此三个策略如下:

first:使用1*1的卷积代替

second:减少3*3卷积的通道数

last:在网络的更深层下采样使得卷积层有大量的激活函数,恺明大神也已经证实这种做法是有效提高分类准确率的。

使用前两个策略减参,而使用第三个策略使得分类准确率最大化!

请看Fire module 如下图所示
是由压缩卷积和muti-scale卷积组成的一个特殊设计的基础块。
其中,第一部分的作用是压缩,以减少参数量。第二部分的作用是扩张,采用多尺度卷积的方式
获取不同大小感受野的信息。中间的激活层使用的是ReLU。
Fire Module 截取自原文

squeezenet模型 详情见下图 :
在原文中设计了三个基准,其中主干部分也就是第一个基本模型为:
一个卷积层连接一个下采样层,再跟随三个fire层,进行一次下采样,然后使用四个fire层,再进行最后一次下采样,尾接一个fire层和一个卷积层,全局平均池化后使用softmax输出判断结果!
第二个模型的改变就是在三五七九 fire层上加入跳过连接。
第三个模型就是在所有的fire层上加跳过连接,但是不一样的地方在于,二四六八的跳过连接是使用11的卷积!
在这里插入图片描述
在此基础上,看懂参数变化是理所应当的啦!
在这里插入图片描述
本文的实验结果是相当的喜人,保持准确率的基础上将模型的参数由4.8M 减少到 0.47M,并且对参数变化(改变1
1卷积和33的卷积即fire module的大小)使用折线图的方式进行说明。
经过一系列实验得到的超参数:
base = 128,incr = 128,pct = 0.5, freq = 2, SR = 0.125
再次强调一下原文中提出的结论:firemodule中的1
1和33卷积的比例是可变的,在Imagenet上的实验证明,33卷积比例的提高并不能带来更好的效果,只会增加参数量。

而上述的三个基准模型,最好的是第二个,参数量保持,并且效果达到最高!

top 1       top 5        model size
 57.5       80.3         4.8M
 60.4       82.5         4.8M  √√√√
 58.8       82.0         7.7M

这种控制参数的方式可以借鉴!

猜你喜欢

转载自blog.csdn.net/TTLoveYuYu/article/details/113807155