文献MULTI-SCALE DENSE NETWORKS FOR RESOURCE EFFICIENT IMAGE CLASSIFICATION中提出了一个称为MSDnet的神经网络结构,旨在解决前人网络计算量大,结构复杂,在移动端不能实时实现以及内存有限的问题,所以网络设计的出发点有两个,一个是实时性(anytime prediction),对输入能及时输出结果;另一个是分批分类(budget batch classification),对简单的图片做快速的决策,对困难的图片做详细的特征提取得到结果,达到节约内存的目的。换句话说,需要设计的网络结构要满足内存使用达到一定程度或者分类置信度足够高以后就立刻输出分类结果,而前人的网络结构与此是有冲突的,一方面,网络分类器直接连接的是最后一层,用到的是前面所有层的特征,也就不能根据图片特征的简单与否提前输出结果;另一方面,网络各个层提取的特征尺度不同,前面层提取精特征(fine feature),后面层由于经过了跨步卷积(strided convolution)或是池化(pooling),所以提取到的是表现整体的粗特征(coarse feature)。对第一个问题,作者采用密集连接的方法,把所有层都跟中间分类器连在一起(这里应该不是真的所有层而是前面的层),对于第二个问题,不同层提取了不同尺度的特征,于是作者便将输入图片一开始便通过跨步卷积下采样以降低分辨率,也就是网络一层就包括了多个分辨率,这样不同分辨率提取出不同尺度的特征,中间分类器前面层就相当于有了多个尺度的特征。结构大致如下:

作者指出,粗特征对分类器判别精度有很大贡献,表现为中间分类器的输出精度是其位置的函数,如下图所示,作者对比了DenseNet和ResNet两种网络下,中间分类器位置和输出精度的关系,从左图可以看出,中间分类器插入越靠后(靠近最终分类器),输出精确度越高,因为越靠后获取的粗特征越多,为了解决这个问题,所设计的MSD网络采用了多尺度的连接,如上图所示,某一层的一个尺度的特征图是由同尺度的前一层卷积和前一层精尺度的特征图跨步卷积级联得到的,下左图的黑色虚线可以看出,这种结构的确提高了前级分类器的判决精度;另外一个问题是,中间分类器的插入会影响最终分类器的输出,这可以从下右图中看出,作者认为这种精确度的降低是因为前级分类器的插入使得训练产生的短期特征只能提高中间分类器的精度,但是影响到了后面层乃至最终层的优化,而DenseNet用于采用了密集连接,前面层为产生短期特征而丢失的信息可以通过与前面层的直接相连恢复,所以受到的影响不大,最终分类器的输出大致与中间分类器相对独立,于是文献中也采用了密集连接的方法。

文献中采用的数据集是CIFAR-10、CIFAR-100跟ILSVRC2012,两个CIFAR数据集包含50000个训练集和10000个测试集,图像为32*32个像素,留出5000个数据作为验证集,数据集分别包含10跟100类,同时作者采用了标准数据增强技术,将图像四个边界分别采用零填充扩展四个像素并随机裁剪成32*32像素的图像,并以0.5的概率水平翻转图像,再通过减去通道平均值跟除以标准差的方法标准化图像(对图像裁剪、翻转变换和白化是常见的提高模型鲁棒性的数据增强方法,其中训练集随机裁剪而测试集则中心裁剪);ImgNet数据集包含1000类,共1200000个训练集跟50000个验证图像,作者在训练集中留出50000个用于估计MSDnet的自信度阈值,训练时采用相同的数据增强算法,测试时图像调整为256*256并中心裁剪成224*224大小。训练时作者采用SGD(随机梯度下降算法),批尺寸为64个。训练方式上,对CIFAR图像,作者采用Nesterov momentum优化算法(NAG),学习率为0.9,衰减率为,模型训练迭代300次,初始学习率为0.1,在第150次和225次迭代后学习率除以10,对ImgNet,各个参数相同,而批尺寸为256,迭代90次,在第30次跟60次时学习率降低。

MSD结构网络如上图所示,垂直方向上为不同尺度的图像,第一列feature map从上往下进行层层下采样,而第二列的feature map则是由前列同一尺度的feature map进行卷积跟上一尺度feature map的strided convolution二者级联得到;分类器包含两个卷积层、一个池化层跟一个线性层。测试实时性的时候就在给定时间达到以后输出最后一个分类器的分类结果,测试batch budget的时候就在置信度达到预先设置的阈值的时候输出分类结果。在这里表示Conv-BN-ReLU,下采样用的跨步卷积步长为2,中间层的
或
表示Conv(1x1)-BN-ReLU-Conv(3x3)-BN-ReLU
在训练前作者定义了一个表示运行到第k个分类器需要的计算成本,同时定义了一个置信率q,表示样本有q的概率在某个分类器有足够自信输出,这样样本在第k个分类器输出的概率就是
,z是归一化参数使得
,所以测试阶段要保证测试集
的计算成本没有超过我们预算B,即约束条件
,这样在验证集上就能确定阈值
,使得大约有
个样本在第k个分类器处退出。在这个文献用到的损失函数是交叉熵损失。当然实际应用中网络作了简化处理。

简化后的网络如上图,作者把网络分成S个block,在第i个block结束以后只留下S-i+1个尺度,而每次在要删减尺度时都会插入一个转换层,这个转换层使用1x1的卷积将级联特征连接起来并将通道数减半,随后再进行后面的跨步卷积,三个尺度的输出通道为6,12,24,每个分类器都包含两个3x3下采样卷积层,2x2平均池化层跟一个线性层。
本文介绍了MSDnet,一种为了解决深度学习模型计算量大、结构复杂而在移动端无法实时应用的问题而设计的网络结构。MSDnet强调实时性和分批分类,通过密集连接和多尺度特征提取实现这一目标。实验表明,该网络在CIFAR和ILSVRC2012数据集上表现出色,并且通过调整计算成本和置信度阈值,可以在不同计算预算下灵活输出结果。

827

被折叠的 条评论
为什么被折叠?



