Innse.Xu
Gao Huang, Danlu Chen, Tianhong Li, Felix Wu, Laurens van der Maaten, Kilian Q. Weinberger
2018
(一种多尺度的DenseNet)
在实际的应用上,存在着这样一个问题:当前最新、性能最好的模型要把它应用在真实环境上会有一定的困难。因为这些模型往往比较大,需要更多的计算资源,而真实环境中计算资源和时间等都有很大的限制,所以难以运用上这些模型。
那么在一些资源有限的场景下,自适应地满足资源限制的前提下,尽可能地提高模型的精确度与性能是当前研究的问题。
本文针对现实世界中的两种典型的场景提出解决方案:
1. Anytime classification
对于每个测试样本(一张图片),存在有限的计算资源预算 B>0 B > 0 ,且每个样本的 B B 都不同。相当于每次给模型输入一张图像,然后根据计算资源预算来给出预测结果,并且这种场景要求一种实时性,如在无人驾驶汽车有要求。
对于第二种情况,这里就引进了一种思想:对于简单图像仅采用浅层的速度较快的网络来分类,而对于难分类图像再采用深层的速度慢一点的网络来分类。
基于该思想作者在网络中间引入了多个分类出口(intermediate classifiers),对于简单图像可以直接从浅层的分类出口即可得到结果,而difficult图像可能要到网络较深的某一层才能得到结果。但是如果只是这样简单地在中间添加分类器,利用中间特征来分类,对于浅层的特征用来分类效果是比较差的,因为浅层的特征的语义信息较弱。
为了解决这个问题本文引入了两个核心:Multi-Scale Feature Maps与Dense Connectivity。
+ Multi-Scale Feature Maps产生了高水平的特征表达,即使少量几层网络也适合用来分类,同时当使用全网络来评估时也保持着高精度。
+ Dense Connectivity在已存在于网络的每一层的特征表达添加额外的features,特征重用提高特征利用率,同时隐含着深度监督。
首先,定义对于样本 x x ,定义模型 f(x) f ( x ) 的loss在budget为 B B 的情况下为
整体网络结构可以划分成以下几个部分来详细阐述:
一个scale为3的4层MSDNet网络的结构如上图所示,
1. 水平方向的结构与DenseNet相似,文中称水平的操作是对前层相同scale的feature maps进行concat,结果为regular conv;
2. 垂直方向与对角线的操作是进行down-sampling,得到的结果是strided conv。
使用dense connections使每一层都能直接接收其前层的输入:
1. 通过特征重用减少了冗余的计算
2. 用与resnet相似的方法解决梯度消失的问题让学习更容易
这里的dense connections不止来自于水平方向的前层,还有来自于上一个scale的前层的特征。
特别地,该网络的第一层有其特殊之处。
定义 x(s)l为第l层尺寸为s x l ( s ) 为 第 l 层 尺 寸 为 s 的feature maps,其中原始输入为 x10 x 0 1
其中 h0(⋅) h 0 ( ⋅ ) 为regular conv变换, h~0(⋅) h ~ 0 ( ⋅ ) 为strided conv变换。这样第一层的输出为 {x(1)1,⋯,x(S)1} { x 1 ( 1 ) , ⋯ , x 1 ( S ) } 。
其他层的操作如下,
其中, [⋯] [ ⋯ ] 为沿着通道维concat操作。
这里我的理解是,当 s>1 s > 1 时,对于第 l l 层的输出,把scale为s的所有前层( l−1 l − 1 层)的输出concat起来作为 hl(⋅) h l ( ⋅ ) 的输入,以及把scale为s-1的所有前层( l−1 l − 1 层)的输出concat起来作为 h~0(⋅) h ~ 0 ( ⋅ ) 的输入,最后将 hl(⋅) h l ( ⋅ ) 与 h~0(⋅) h ~ 0 ( ⋅ ) 的输出都concat起来作为第 l l 层的输出。
为了更容易理解,我找到了一个网络结构的三维图(原图在论文的GitHub地址上)。
这里只画出了右边的表格的 l=4,s=3 l = 4 , s = 3 的连接,蓝红的连接分别对应表格中的 h~34与h34 h ~ 4 3 与 h 4 3
至于这里的 hl(⋅) h l ( ⋅ ) 与 h~0(⋅) h ~ 0 ( ⋅ ) 具体指什么,在本文的实验中作者的设置为
+ First layer
+ h1 h 1 : Conv(3×3)−BN−ReLU C o n v ( 3 × 3 ) − B N − R e L U
+ h~1 h ~ 1 :使用步长为2做降采样
+ Subsequent layers
hl与h~l h l 与 h ~ l 都定义为 Conv(1×1)−BN−ReLU−Conv(3×3)−BN−ReLU C o n v ( 1 × 1 ) − B N − R e L U − C o n v ( 3 × 3 ) − B N − R e L U
从网络的二维结构图可以看到,分类器并没有连接着某一层的所有scale的特征,而是选择使用scale最大的feature maps来做分类,即coarsest scale的feature maps。
在最后的分类器前,还有几层结构:两个通道维为128的 3×3 3 × 3 的降采样conv +2×2 avgpooling+linear layers + 2 × 2 a v g p o o l i n g + l i n e a r l a y e r s
当然第二种情况也有budget的限制:对于样本 Dtest D t e s t 与budget B B ,有
定义 L(fk) L ( f k ) 为每个分类器的loss,则需要最小化加权loss:
其中 D D 为训练集,且第 k k 个分类器的权重 wk≥0 w k ≥ 0 ,权重w可由先验知识决定。
文章在CIFAR-10、CIFAR-100与ImageNet的数据集上进行实验,配置细节如下:
3种scale,每种scale的通道数分别为6、12、24
文章还做了几个值得一说的验证实验。
文章使用了3种不同网络深度的MSDNet以及在ResNet和DenseNet上直接添加intermediate classifiers。结果在average budget比较小的时候,MSDNet的效果要远远好于ResNet和DenseNet,这就证明了用原网络低层的高分辨率特征直接做分类是行不通的,而使用了multi-scale feature的MSDNet的准确率明显提升。
文章移除了Dense Connetivity,结果影响了整体的准确率,证明了dense connectivity的有效性。
不同点
这里阐述一下我总结的几个不同点,欢迎补充。
特征融合的方法不同:
分类方法不同:
共同点