61

什幺是多尺度密集网络 – MSDNet ?

 5 years ago
source link: https://www.tuicool.com/articles/rERjEri
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文讲述了康奈尔大学、复旦大学、清华大学和Facebook人工智能研究(FAIR)联合开发的多尺度密集网络MSDNet。该网络的作者在2017年的CVPR中提出了DenseNet(超过2900次引用,并获得了最佳论文奖)。并在2018年的 ICLR 中提出MSDNet(多尺度密集网络)得到了数十次引用。

使用MSDNet,训练多个不同资源要求的分类器来自适应不同的测试时间。因此,对于高性能计算设备,图像经过整个网络来完成图像分类。对于有限计算资源的设备,图像提前退出网络来完成相对粗略的图像分类。现在来让我们来看一下这个网络是如何工作的。

大纲:

计算受限的图像分类概念

MSDNet 架构

对随时分类和预算批分类的评估。

网络约减和惰性计算

结果

    1. 计算受限的图像分类概念

这里有两种对计算受限的图像分类的设置。

1.1 随时分类

给出任意的时间点,网络能强制输出预测。

例如:安卓应用上的移动APP。

1.2 预算批分类

一个固定的计算预算在一组大量的样例中共享,且花费在简单和困难样例上的时间并不平均。这在大型机器学习应用中很有用。

例如:搜索引擎,社交媒体公司、在线广告代理商,都要在有限硬件上处理大量数据。

截至2010年,谷歌图像搜索已经索引了超过100亿张图片,以后可能增长到1万亿张。一个新的模型处理每张图片即使慢了0.1秒,额外的开销也会增加3170年的CPU时间。

在预算批分类设置中,公司可以将节约在简单样例上的计算量用在困难样例上,从而提高平均准确度。

RFRBfm3.jpg!web

MSDNet的示例

如上图所示,MSDNet是一个多尺度的DenseNet。上面的路径用于没有缩小尺寸的图像,下面的路径用于更小尺度的图片。

举个例子,我们想分类一张猫的图片。在通过这个网络的过程中,这个分类有了0.6的分类置信度,大于阈值。我们可以提前离开,剩下的网络直接跳过,这样省下“简单”图像的计算时间。

另一方面,对于“困难”图像,我们可能需要经过更深的网络直到分类置信度高于阈值。

因此,通过平衡花费在“简单”和“困难”图像的时间可以节省计算时间。

    2. MSDNet架构

2.1. 架构

Fvq6fay.jpg!web

MSDNet架构

它的垂直布局是微型的S层卷积网络(S=3)。

对于第一层(l=1),通过下采样来获得较粗尺度的特征图。

对于l=1,尺度为s的后续层 ,所有尺度为s和s-1的前面层的特征图被连接。Conv(1×1)-BN-ReLU-Conv(3×3)-BN-ReLU被使用。

下面的图和表更准确地展示了某些s和l使用的特征图。

AziiQn7.jpg!web

在某些位置,有一些中间分类器插在网络中间。

每一个分类器有两个128维3*3的下采样卷积层,后接一个2*2的平均池化层和线性层。

在训练过程中,逻辑损失函数 L(fk)使用在每个分类器上,并最小化加权累计损失。

D代表训练集,w_k>=0是分类器k的权重。

经验上w_k=1。

2.2 不同网络的中间分类器的评估

你可能会问:为什幺不将中间分类器插入ResNet和DenseNet?为什幺我们必须需要MSDNet?作者也对此进行了评估。有两个主要原因。

riMF7br.jpg!web

在CIFAR-100数据集上使用不同网络的中间分类器的评估

2.2.1 第一个原因

问题:粗粒度特征的缺乏。传统的神经网络学习精粒度特征网络的前层和粗粒度特征在网络的后层。前层网络乏粗粒度特征,并且附加到这些层的提早退出分类器可能会产生令人不满意的高错误率。

左上图显示了中间分类器的结果,这些分类器也插入到ResNet和DenseNet中。分类器的准确性与其在网络中的位置高度相关。特别是在ResNet(蓝线)的情况下,可以观察到可见的“阶梯”模式,在第2和第4分类器之后有很大的改进 – 位于汇集层。

解决方案:多尺度特征图。MSDNet在整个网络中维护多个比例的特征表示,并且所有分类器仅使用粗粒度特征。

水平连接保留并进行高分辨率信息,这有助于在后续层中构建高质量的粗粒度特征。垂直连接在整个过程中产生粗粒度的特征,易于分类。

2.2.2. 第二个原因

问题:早期的分类器会影响以后的分类器。右上图显示了最终分类器的精度与单个中间分类器的位置的关系,相对于没有中间分类器的网络的精度。

引入中间分类器会损害最终的ResNet分类器(蓝线),将其准确度降低多达7%。ResNet中的这种精确度降低可能是由影响早期特征的中间分类器在短期而不是最终层优化而引起的。

解决方案:密集连接。相比之下,DenseNet(红线)受这种影响的影响要小得多。这是因为在DenseNet中,使用连接而不是在ResNet中使用加法来组合要素图。较早层的特征映射可以绕过与后续层的密集连接。最终分类器的性能变得(或多或少)独立于中间分类器的位置。

    3.任意时间分类和预算批分类评估

3.1. 任意时间分类

在任意时间分类中,存在一个可用于每个测试样例的有限的计算预算B>0。

在任意时间设置的测试期间,输入通过神经网络传播直到预算B全部用完并且输出最接近的预测

3.2. 预算批分类

在预算批分类中,在预先知道的有限计算预算B>0的情况下,模型需要去分类一个Dtest样例集合{x1, …, xM} 。

预算批处理可能会花费少于B/M的计算用于分类简单样例,同时花费更多的B/M计算应用于困难样例。

因此,当我们拥有一大批的测试样例,预算B就被认为是一个软约束。

在测试时,示例遍历网络并且如果其预测置信度(作为置信度量的softmax概率的最大值)超过预定阈值θk,则在分类器fk之后退出。在开始训练之前,我们计算需要将网络处理到第K个分类器的计算成本Ck。

我们用0<q≤1表示固定的退出概率,到达分类器的样本将获得具有足够置信度的分类以退出。

BZ7FzuV.jpg!web

一个样本在K分类其中退出的可能性

z是归一化常数在这里。

我们需要确保在Dtest中对所有样品进行分类的总成本不超过我们的预算B,从而产生约束:

然后,我们可以解决上述问题,并在保留/验证集上指定阈值,使得大约一小部分qkvalidation样本在第k个分类器处退出。

    4.网络减少和懒惰计算

有两种直接的方法可以进一步降低MSDNets的计算要求。

qeM3Uza.jpg!web

首先,在网络的最后一层之前保持所有更精细的比例是低效的。减小网络大小的一个简单策略是沿深度维度将其分成S块,并且仅在第i个块中保持最粗糙(S-i + 1)比例,如上所示。这降低了训练和测试的计算成本。

其次,由于第1层的分类器仅使用最粗尺度的特征,因此第1层中的更精细的特征图(以及先前S-2层中的一些更精细的特征图)不会影响该分类器的预测。因此,“对角块”中的计算被分组,使得我们仅沿着评估下一个分类器所需的路径传播该示例。当我们需要停止因为计算预算耗尽时,这最小化了不必要的计算。这种策略称为懒惰计算。

    5.结果

5.1 数据集

CIFAR-10 & CIFAR-100,这两个CIFAR数据集包括了50000张训练图像和10000张测试图像,且均为32×32像素大小。5000张训练图像作为一个验证集。数据集分别包含10个类和100个类。训练集采用标准数据扩充、随机裁剪和水平翻转,小批量大小为64。

ImageNet: ImageNet数据集包含1,000个类,总共有120万张训练图像和50,000张验证图像。从训练集中提取50000幅图像,用于估计MSDNet分类器的置信阈值。应用了标准数据增强。在测试时,将224×224像素大小中心裁剪的图像调整为256×256像素进行分类。小批量大小为256。

在ImageNet上,使用4个scale,即S=4,每层分别生成16、32、64和64个feature map。在进入MSDNets的第一层之前,首先通过7×7卷积和3×3 max pooling(均使用stride 2)对原始图像进行变换。

5.2 消融实验

YRZbUjz.jpg!web

CIFAR-100的消融实验

使用一个包含6个中间分类器的MSDNet,有三个主要组件,多尺度特征图、密集连接和中间分类器,每次删除其中一个组件

如果去掉MSDNet中的所有三个部分,就得到了一个规则的类vgg卷积网络

让我们公平地进行对比,我们保持网络的计算成本相近,约3.0×10⁸FLOPs,并且适应网络的宽度,如每层的输出通道数。

当然,原始的MSDNet(黑色)具有最高的精度。

去掉密集连通性(橙色)后,整体精度会受到极大的影响。

再加上去除多尺度卷积(淡蓝色),精度只在低成本区域受到影响。这与作者的动机是一致的,即多尺度设计在早期就引入了区分特征。

作者还提到,去掉所有3个组件后,在特定的预算下,它(Star)的性能与MSDNet类似。(但我无法从图中找到星星……)

5.3. 随时分类

MSDNet 有24层

分类器对第2×(i+1)层的输出进行操作,i=1,…,11。

在ImageNet上,第i个分类器作用于(k×i+3)第i层,i=1,…,5,其中k=4, 6, 7。

BfaAzmi.jpg!web

ImageNet(左)、CIFAR-100(中)、CIFAR-10(右)  上及时分类准确率top1

ResNetMC:带有MC(多个分类器)的ResNet,62层,每个空间分辨率有10个残余块(对于三个分辨率):早期退出分类器在每个分辨率的第4和第8个残余块的输出上,产生总共 6个中间分类器(加上最终的分类层)。

DenseNetMC:带有MC的DenseNet,52层,三个dense block,每个dense block有16层。6个中间分类器连接到每个块的第6层和第12层,也与该块中所有之前的层紧密连接。

ResNetMC和DenseNetMC完成所有的评估都需要大约1.3×10⁸ FLOPs。

此外,还对不同深度的ResNets/DenseNets进行了综合评价。在测试时,按照网络大小的升序对网络进行评估,以获得测试数据的预测。所有的预测都在评估的分类器上求平均值。在ImageNet上,深度从10层到50层不等的ResNets和DenseNets的集合,深度从36层到121层不等。

在CIFAR-100上,MSDNet在任何范围内都明显优于ResNetMC和DenseNetMC。这是因为在仅仅几层之后MSDNets就生成了比ResNets或DenseNets早期的高分辨率特征图更适合分类的低分辨率特征图。

在算力极低的情况下,总体具有优势,因为它们的预测是由第一个(小)网络执行的,该网络专门针对低算力进行优化。然而,当算力增加时,总体的准确性并没有增加得那幺快。

和MSDNets不同的是,该集合反复的重复类似底层特征的计算。

当所有网络都是浅层时,集合精度会迅速饱和。

5.4. 预算批分类

在CIFAR-10和CIFAR-100上,MSDNet网络的范围从10层到36层。第k个分类器附加到{1+…+ k}层。

ImageNet上使用了与及时分类相同的网络。

R7JVBb3.jpg!web

ImageNet(左)、CIFAR-100(中)、CIFAR-10(右) 上Budgeted Batch Classification精度top1

在 Budgeted Batch Classification 中,预测模型接收一批M个实例和一个用于对所有M个实例进行分类的计算预算B. 使用动态评估。

在ImageNet上,M = 128,比较五个DenseNets,五个ResNets,一个AlexNet和一个GoogLeNet。

5个ResNet的集合: “简单”图像只通过最小的ResNet-10传送,而“复杂”图像由所有5个ResNet模型分类。(预测在整体中的所有评估网络中取平均值)。

在CIFAR-100、M=256上,比较了不同大小的ResNets, DenseNets,Stochastic Depth Networks,Wide ResNets,FractalNets,ResNetMC和DenseNetMC。

如图所示,使用了三个不同深度的MSDNets,将它们组合在一起,覆盖了大范围的计算预算。

例如,在ImageNet上,平均预算为1.7×10⁹ FLOPs,MSDNet达到了前75%的精度,比具有相同FLOP数量的ResNet高出约6%。

与计算效率高的DenseNets相比,MSDNet使用少约2至3倍的FLOP来实现相同的分类精度。

在CIFAR-100上,MSDNets在所有预算中始终优于所有基准。

MSDNet的性能与110层ResNet相当,仅使用十分之一的算力。

MSDNet的效率比DenseNets,Stochastic Depth Networks,Wide ResNets和FractalNets高出5倍。

与任何时间预测设置的结果相似,MSDNet具有多个中间分类器,其性能显着优于ResNetsMC和DenseNetsMC,这进一步证明了MSDNet中的粗粒度特征对于早期层的高性能非常重要。

5.5. 信息可视化

qmAZfan.jpg!web

在ImageNet上可视化简单和困难的图像

简单图像(顶行):退出第一个分类器并正确分类。

复杂图像(下一行):退出第一个分类器,分类不正确,然而最后一个分类器分类正确,属于非典型图像。

5.6. 计算效率更高的DenseNets

一种更有效的DenseNet被发现并研究。作者还认为这是在探索MSDNet过程中的一个有趣发现。

bERRvuR.jpg!web

随时分类(左)和预算批分类(右)

DenseNet*:通过将每个过渡层之后的增长率加倍来修改原始DenseNets,以便将更多过滤器应用于低分辨率特征图。

DenseNet*(绿色)在计算效率方面明显优于原始的DenseNet(红色)。

在随时分类中,不同深度的DenseNets*的集合只比MSDNet稍差。

在预算批分类中,MSDNet的性能仍然大大优于不同深度的DenseNets*。

对于今后的工作,作者计划在分类之外进行研究(比如图像分割)将MSDNet与模型压缩、空间自适应计算和更有效的卷积操作相结合。对我而已,这篇论文有很多重要的事实和概念,所以我写了这幺长的文章。

参考文献

[2018 ICLR] [MSDNet]

Multi-Scale Dense Networks for Resource Efficient Image Classification

原标题 :Review: MSDNet — Multi-Scale Dense Networks (Image Classification)

作者 |  Sik-Ho Tsang

翻译 | 莫尔•哈该、Yao Lu、Winteryangwt、唐里、鸢尾

编辑 | 王立鱼

原文链接:

https://towardsdatascience.com/review-msdnet-multi-scale-dense-networks-image-classification-4d949955f6d5


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK