【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)

Resolution Adaptive Networks for Efficient Inference

【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
论文地址:http://arxiv.org/abs/2003.07326
论文代码:http://github.com/yangle15/RANet-pytorch

Motivation

深度CNN带来了性能提升的同时也带来了过高的计算量,许多研究放在了如何进行网络加速上面,其中比较直接的是根据样本难易程度进行自动调整的自适应网络。基于对自适应网络的研究,论文提出了自适应网络RANet(Resolution Adaptive Network),思想如图1所示,网络包含多个不同输入分辨率和深度子网,样本先从最小的子网开始识别,若结果满足条件则退出,否则继续使用更大的子网进行识别,子网的特征不是独有的,下一级别的子网会融合上一级别的子网特征,从实验来看,论文在效果和性能上取得了很不错的trade-off。
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
如上图,(a)中的猫头鹰可被具有最低分辨率的子网1识别,因此,以下子网将不被使用。对于较难识别的图像(b),子网1无法提供可靠的预测。因此,对这个样本进行分类需要使用更多的子网去提取更细微的特征。

本文方法的好处是:实现准确率和计算消耗之间的平衡,减少图像的空间冗余!(来自与“简单”图像的低分辨率表征由于包含典型特征的易于识别,而一些“困难”图像则需要更为详细的空间信息.)
降低计算消耗,提高计算效率

Method

【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
构建K分类器的自适应模型,输入图片x,第k个分类器的输出如公式1,θk为分类器对应的子网参数
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
对于输入的图片,首先通过权重轻的子网络提取低分辨率的特征,如果这些特征能够让这个样本有足够的置信度完成分类那就不要再进一步提取特征了。这一步骤就是对其进行“easy”“hard”的判断,此处使用的是softmax输出的置信度来判断图片的复杂程度。
如果不能有足够的置信度,那么当前子网络的特征将融合到下一个提取特征分辨率更高特征的子网络中,根据置信度判断能不能完成分类,重复下去一直到某个子网完成分类或者所有的子网都遍历完不能完成分类。判断方法如下所示:
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)

如果第一个子网对样本做出了不可信的预测结果,则这些小尺度的中间特征也会被融合到更高分辨率的下一个子网中,由下一个子网进行预测,如此循环往复直到整个网络可以输出一个可信预测(或者计算到最后一个子网)
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
蓝色部分表示的是初始层:
它的作用是对一张输入的图片去生成H个基础特征,这些特征一共有S个尺寸,图2的初始层包含3个不同尺寸的特征,第一个特征(精细特征)通过Regular-Conv层产生,后面的特征(粗糙特征)通过Strided-Conv层产生。论文中对此具体的说明如下:
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
在图三中,(a)为dense blocks,即子网1,他可以看做是一个多分类的Densenet网络,用于处理最低分辨率的特征图。
(b,c)为fusion block:本文设计了两种不同的融合方式:
b保持输入的特征图大小:在这个过程中,首先使用regular-conv生成一个特征图,然后将上一子网的特征经过上采样双线性插值的方法变成和此个子网统一分辨率,然后将生成的特征融合起来(concatentation)。当前子网的前n块会融合前一个子网络的所有块,剩下是正常的Dense块。

c使用一个strided-conv层去降低特征图输入大小(就是图中的蓝色实线部分即为下采样操作,虚线为池化操作),由于此时降低了特征的尺度,来自于先前子网的特征就需要使用regular-conv去维持原先的低分辨率再去进行融合

Transition layer:去进一步压缩特征图,主要是为了减少计算损耗,提高计算效率!(来自于一篇19年的PAMI论文)

每个子网络的末尾都有多个分类器(满足置信度要求则可完成分类),损失函数使用的是交叉熵损失函数。

每张图片都是一个动态的过程,根据每张图片的特点去识别,而并非一定走完整个网络!
深度自适应+分辨率自适应

此外,论文还将他们的方法与MSDNet进行了比较,MSDNet的结构如下:
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
分类器位于最低分辨率尺度上,一旦中间的分类器不生成足够置信度的结果,所有接下来层的尺度的都将被执行。然而在本文的RANet中是某个尺度的子网络先执行,然后再执行下一个尺度的子网络。 这样的推理方案自然结合了分辨率和深度适应,完成了一个超越MSDNet的改进。

Experiments

在CIFAR-10和CIFAR-100上,Imagenet
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
限制单图的计算量FLOPs,直接记录自适应网络中所有分类器的性能以及其计算量进行对比

在较低的计算损耗下就能达到较高的准确率
【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
限制一批图片的资源总量,需要根据资源总量设定阈值来控制推理的提前退出,记录自适应网络的性能以及对应的资源限制。

可以看到:RANets的表现要优于其他模型,在相同的计算损耗下它能实现更高的分类准确率

借鉴意义与思考

【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
该图为论文中给出的一个难易图像的示例!

总结
该网络包含多个不同输入分辨率和深度的子网,难易样本的推理会自动使用不同的计算量,并且子网间的特征会进行融合。在性能和速度上取得了很不错的trade-off!
现实中很多图像在一个类别的内部,是有着明显的“hard”与“easy”的划分,而且一些庞大数据集的计算损耗问题是一个值得我们去深入思考的地方,本文的提高计算效率的RANet方法对于大规模图像识别任务是很有借鉴意义的!主要是可以有效解决“大规模”这个问题。

担忧:RANet在最终的分类准确率是未必能实现最优,从实验中也可以看到该方法准确率的增量不高,因此有必要去探索更好的细粒度图像特征表征的方法!