超越EfficientNet!MutualNet:一种自适应相互学习网络宽度和分辨率的网络

小白学视觉

共 5215字,需浏览 11分钟

 ·

2022-11-02 00:59

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

阅读大概需要15分钟

Follow小博主,每天更新前沿干货

【导读】今天给大家介绍一篇 ECCV 2020 Oral论文 ,该论文强调了同时考虑网络宽度和输入分辨率对有效网络设计的重要性。提出了一种新的互相学习的网络框架,即网络宽度和输入分辨率这两者互相学习,从而来实现自适应的精度-效率之间的平衡。

论文标题


  • 论文链接:https://arxiv.org/abs/1909.12978

  • 代码地址:https://github.com/taoyang1122/MutualNet


摘要


我们提出了一种width-resolution相互学习的方法(MutualNet),根据动态的资源约束来训练网络,这种方法在运行时实现了自适应精度-效率的平衡。我们的方法根据不同的输入分辨率来训练一批具有不同宽度的子网络,以相互学习每个子网络的多尺度表示。在不同的计算约束条件下,它在最先进的自适应网络US-Net上始终取得更好的ImageNet top-1精度,并且比最优的复合尺度的MobileNet和EfficientNet 的性能还高出1.5%。该方法在COCO目标检测和实例分割以及迁移学习上也得到了验证。令人惊讶的是,MutualNet的训练策略也可以提高单个网络的性能,在效率(GPU搜索时间:15000 vs. 0)和准确性(ImageNet: 77.6% vs. 78.6%),这两方面都显著超过了AutoAugmentation。


论文介绍


深度神经网络在多项感知任务上都很成功。然而,深度网络通常需要大量的计算资源,这使得它们很难部署在移动设备和嵌入式系统上。这激发了人们去研究,如何设计出更高效的卷积模块或裁剪掉不重要的网络连接,来降低神经网络中的冗余。然而,这些工作忽略了计算成本是由由网络规模和输入规模共同决定的。只想着降低网络的大小是没法实现最优的准确率-效率平衡的。EfficientNet 已经考虑到了网络深度、宽度和分辨率之间平衡的重要性,但是它只分别考虑了网络的大小和输入的大小。EfficientNet的论文作者针对不同配置进行网格搜索,选择性能最好的配置,同时提出在学习充分利用不同配置中嵌入的信息时,应同时考虑网络规模和输入规模。另一个阻碍深度网络实际部署的问题是,资源预算(例如,电池条件)在现实应用中是不同的,而传统网络只能在特定的限制下运行。为了解决这个问题,SlimNets提出训练一个单一的模型来满足运行时资源预算的变化。但他们只是减少网络宽度来满足更低的资源预算。因此,随着计算资源的减少,模型的性能会急剧下降。


在这里,我们提供一个具体的例子来说明在输入分辨率和网络宽度对于实现更好的精度-效率平衡的重要性。具体来说,为了在MobileNet v1 backbone上满足动态资源约束从13到569 MFLOPs ,US-Net 在面对输入是224×224224\times 224224×224的图片时,所需的网络宽度在[0.05,1.0],而这个要求也可以在{224,192,160,128}的范围内调节输入分辨率,而网络宽度在[0.25,1.0]×来得到满足。作者将第二个模型叫做US-Net+。如图1所示,推理时我们将不同的分辨率和网络宽度结合,可以实现更优的准确率-效率平衡。

基于上述观察,作者提出了一个相互学习的方法,将网络宽度和输入分辨率融入到一个统一的学习框架内。如图2所示,我们的框架为不同的子网络提供不同的输入分辨率。由于子网络之间共享权值,每个子网络可以学习其他子网络共享的知识,从而可以从网络尺度和输入分辨率中获取多尺度表示。表1提供了我们的框架与以前工作的比较。


综上所述,我们作出的贡献如下:


  1. 本文强调了输入分辨率对有效网络设计的重要性。以往的工作要么忽略它,要么将其脱离了网络结构而单独来看待它。相反,我们将网络宽度和输入分辨率嵌入到一个统一的互学习框架中,从而学习一个深度神经网络(MutualNet),它可以在准确率-效率之间实现自适应的平衡。

  2. 我们进行了大量的实验来证明MutualNet的有效性。在不同资源约束条件下,在不同的网络结构、数据集、任务上,它的性能明显优于单独训练的网络和US-Net据我们所知,本文应该是第一个在目标检测和实例分割任务上对任意约束自适应网络做benchmark的

  3. 作者进行了充分的消融实验,全面分析了本文提出来的相互学习方法。进一步证明了该框架可以作为即插即用策略来提高单个网络的性能,其性能显著优于流行的性能提升方法,如数据增广, SENet 和知识蒸馏等。

  4. 该框架是一个通用的训练机制,与模型无关。它可以用在任何的网络上,而无需调整其结构。这使得它与其它SOTA技术可以兼容(例如,神经结构搜索(NAS),AutoAugmentation)。


网络结构


不同分辨率包含不同的信息。作者想利用该特性,学到鲁棒的特征表示和更优的宽度-分辨率平衡。US-Net里的sandwich rule 可以看作为相互学习的一个机制,协作学习一组网络。由于子网络之间共享权重,协同优化,它们的知识可以互相迁移。较大的网络能够利用较小网络的特征。同样,较小网络也可以受益于较大网络的特征。因此,作者给各子网络输入不同的分辨率输入。通过共享知识,每个子网络都可以获取多尺度表示。

作者在上图2中提供了一个例子,来介绍该框架。作者训练了一个网络,其宽度范围从0.25到1.0。作者首先按照sandwich rule选择了2个子网络,即最小的(0.25×),最大的(1.0×),和2个随机宽度比值的α1,α2∈(0.25,1),然后,与传统的用224×224作为输入的ImageNet训练不同,作者将输入图像缩放到{224,196,160,128},将它们输入进不同的子网络中。作者将子网络的权重表示为W_{0,w}。其中w∈(0,1]是子网络的宽度,0:w意思是子网络会采用原网络每一层权重的w×100%, 代表一个r×r输入图片。然后表示子网络的输出,宽度是w,分辨率是r×r。对于最大的子网络(即图2中的原网络),作者总是用最高的分辨率输入和ground truth标签来训练它。原网络的损失是:

对于其它的子网络,作者随机从{224,196,160,128}中选择一个输入分辨率,用原网络的输出来训练它。第i个子网络的损失是:

其中KLDiv是 Kullback-Leibler散度。原网络和子网络的总的损失是:

用最高分辨率来训练原网络的原因是,最高分辨率包含着更多的细节信息。同样,原网络也具有最强的学习能力,获取图像数据的判别信息。

Mutual learning from width and resolution. 这一部分,作者解释了为何该框架能够从不同的宽度和分辨率中相互学习。为了展示简单些,作者只考虑了2个网络宽度,0.4×,0.8×,2个分辨率128,192。如图3所示,0.4×的子网络选择输入分辨率为128,而0.8×的子网络选择输入分辨率为192。然后,作者将0.4×的子网络定义为

将0.8×的子网络定义为


由于0.8×的子网络与0.4×的子网络共享权重,我们可以将它的梯度拆分为:

其中⊕是向量concat操作。因为这2个子网络的梯度在训练时会积累起来,总的梯度计算如下:

因此,0.4×的子网络的梯度就是,由2部分组成。第一部分来自于它自己(0:0.4×),分辨率是128。第二部分来自于0.8×子网络(即0:0.4×部分),分辨率是192。因此,子网络能够从不同的输入分辨率和网络尺度中获取多尺度特征表示。因为网络宽度的随机选取,该框架的每个子网络都可以学习多尺度特征表示。

模型推理:训练好的模型可以在不同的宽度-分辨率配置上执行。目的是在给定资源下找到最佳的配置。一个简单的实现方式就是query table。特别地,作者用step-size 0.05×来从0.25×到1.0×中选取网络的宽度,从{224,192,160,128}中选择分辨率。作者在验证集上测试了所有的宽度-分辨率配置,根据约束条件(FLOPs或延迟)选择最佳的一个。因为无需重复训练,整个流程只要训练一次。

实验结果


在ImageNet数据集上,作者将MutualNet和US-Net等独立训练的网络进行了比较。作者也在两个轻量级模型MobileNetV1和MobileNetV2上评价了该框架。这2个网络也分别代表了非残差和残差结构。


作者首先在MobileNetV1和MobileNetV2主干网络上将本文框架与US-Net做比较。图4是准确率-FLOPs的曲线。可以看到本文框架一直要比US-Net效果好。在较小的计算开支下,MutualNet 取得了显著的提升。这是因为,MutualNet 既考虑了网络宽度,也考虑了输入分辨率,能够在二者间找到平衡。例如,假设资源限制在150 MFLOPs,给定输入分辨率为224,US-Net 必须降低其网络宽度到0.5×,而MutualNet 可以通过平衡的配置(0.7×−160) 来满足该预算,实现更高的准确率(65.6%(MutualNet) vs. 62.9%(US-Net),如图4a)。另一方面,MutualNet 能够学习多尺度特征,进一步提升每个子网络的性能。可以看到,即使对于相同的配置(1.0×−224),MutualNet 也要超过US-Net,即在MobileNetV1上 72.4%(MutualNet) vs. 71.7% (US-Net),在MobileNetV2上 72.9%(MutualNet) vs. 71.5% (US-Net),如图4。

与单独训练的网络进行比较,效果图展示:

EfficientNet 指出了平衡网络宽度、深度、分辨率的重要性。但是它是单独考虑这些因素。作者在这3个维度上使用网格搜索法,单独地训练每个配置,根据约束条件来找到最佳的配置。而MutualNet则是在一个统一的框架中融入宽度和分辨率。当资源约束在 2.3 BFLOPs,作者用最佳的EfficientNet来改造MobileNetV1,并与MutualNet进行比较。具体效果显示如下:


在目标检测和分割任务上,多尺度数据增广也很流行。首先,作者从原则方面介绍MutualNet与多尺度数据增广不同。其次,本文方法要远比多尺度数据增广好。具体实验效果如下:

作者也在COCO数据集和实例分割任务上做了评测。基于Mask-RCNN-FPN和以VGG-16作为主干网络的MMDetection toolbox做的实验。


Conclusion


本文强调了同时考虑网络宽度和输入分辨率对有效网络设计的重要性。提出了一种新的网络互相学习框架,在这里即网络宽度和输入分辨率之间的相互学习,来实现自适应的精度-效率之间的trade-off。大量的实验表明,它可以显著地提高每个触发器在各种数据集和任务上的推理性能。互相学习是提高单网络性能的有效训练策略。该框架的通用性使其能够很好地转换到其它问题上。通过向框架中添加其他网络维度,例如网络深度和位宽,这也使得逻辑扩展很容易获得。该框架还可以扩展到视频输入和3D神经网络,在其中便可以利用空间和时间信息。(感觉这个套路后续可出好多论文

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇



下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报