介绍
SqueezeNet同这个系列要介绍的其它任一CNN模型一样不只关心模型分类精度,同样也重视其计算速度与模型体积大小。
作者列举了三项小的CNN模型的优点:
可以进行更高效率的分布式训练:在分布式训练中,模型可训练参数变小,意味着用于网络通讯的时间减少,这样整个分布式训练系统就能拥有更高的扩展效率;
可更高效地将新训练模型部署至端侧设备:当下很多AI驱动的APP或Service都需要不断将新训练得到的模型快速自云端部署至用户的客户端,小的CNN模型意味着更少的网络传播需求,进而更有利于新训练模型的频繁部署;
有效的FPGA或其它嵌入设备上的模型部署:因FPGA或其它移动等嵌入设备往往只有很少的片上内存可用(没有或有速度相对很慢的片外内存),因此它们也渴望高准确率同时占内存不多的小CNN模型。
然后在本论文中,作者提出了一种新的Fire module,用于构建整个SqueezeNet网络,最终其能在Imagenet上达到与Alexnet相似的分类准确率,但只需其不到1/50的参数。若再进一步使用当下较为成熟的一些model compression技术进行模型压缩,可以进一步将SqueezeNet的权重大小压缩为Alexnet模型的1/510,只有不到0.5MB。
作者还分析了CNN模型基于准确率与模型大小为优化目标所可以考虑的设计。并基于Fire module与SqueezeNet分别在微观与宏观两个层次上进行了探究。
SqueezeNet
网络架构设计策略
将3x3的conv filters替换为1x1的conv filters;
减少输入至3x3 conv layer的feature maps的input channels 数目;
将网络中所需的Downsample操作向后推迟。
以上三项策略中前两个是出于减少模型参数数量考虑,而后一个则是为了提高模型最终的分类准确率。三项策略都有据可考,在此不再详表。
Fire module
同Googlenet主要由Inception module组成或Resnet主要由Residual learning block组成一样,构成SqueezeNet网络的主要模块是Fire module。
它主要由两部分构成,分别为squeeze layer与expand layer。其中squeeze layer为1x1的conv layer,主要用于将输入此module的input channels数目进行缩减;而expand layer包含1x1的conv layer与3x3的conv layer,主要用于真正的feature maps的特征再融合,再表达。详细的fire module可见下图所示。
Fire_module
在Fire module中作者使用了三个hyper parameters用于表示它的构成。s1x1表示squeeze layer filters的数目;e1x1表示expand layer中1x1 conv filters的数目,e3x3则表示expand layer中3x3 conv filters的数目。因为在每个fire module内部s1x1要远小于e1x1+ e3x3,它们满足s1x1= SR * (e1x1+ e3x3)。而SR称为缩减系数,在这里只有0.125。
SqueezeNet网络结构
如下图所示为SqueezeNet的整体网络结构及它的两种加入Residual learning考虑的变形。
SqueezeNet网络结构
它的设计基本follow了在篇初提到的三项准则。下表为它里面的具体参数设置。
SqueezeNet内部架构详情
我们可以从它当中看出来VGG的一些影子。也是随网络加深,downsampling的使用而不断加大fire module输出 channels的数目。同时它为了提高分类准确率而尽量将模型的downsampling操作放在了后面。
SqueezeNet评估
在下表中,我们能看出通过与Alexnet相比较,SqueezeNet展示了其在使用当下已成熟的model compression技术前后所具有的性能及参数大小优势。它进一步表明了当下较为成熟的像model prunning/model compression/low bit quantization等技术都可用于像SqueezeNet这样的小CNN models。
SqueezeNet的准确率及参数缩减程序评估
CNN微观模块设计考虑
作者有从两个方面对fire module内部的设计结构进行探索。
首先考虑SR(缩减参数)的大小对网络分类性能的影响,以上对其评估时使用的SR为0.125。作者在0.125-1的区间内对其进行线性最优探索。发现开始随着SR增加,最终的网络accuracy确会提升,但其边际提升值却是愈来愈小,另外SR自0.75升至1时accuracy不升反降。
另外作者有考虑expand内部1x1 conv filters与3x3 conv filters的比例分配。发现一味提高3x3 conv所占比例并不能导致模型精度提高,反而是3x3 conv的比例为0.5时,模型精度达到了最大为85.3%。
下图中可见作者的详细实验结果。
Fire_module微观模块设计探索
CNN宏观网络结构设计考虑
作者在原来的SqueezeNet网络中引入了Residual network里面提的by-pass learning的思想。但因为当ic != oc时不能直接使用简单的identity-mapping,因此在某些modules上考虑引入了1x1的conv使得ic == oc。这样作者共设计了两种考虑了residual learning的网络变形。具体网络结构可见上面章节的图中,下图所示则为三种网络结果对比分别具有的accuracy及模型参数大小。
CNN宏观网络结构设计探索
作者:manofmountain
链接:https://www.jianshu.com/p/9a70942af217
來源:
著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。