本文分享一篇来自 ECCV'20 Oral 的论文『MutualNet: Adaptive ConvNet via Mutual Learning from Network Width and Resolution』。

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

  • 项目链接:https://github.com/taoyang1122/MutualNet

      01      

动机

为了让CNN能够在资源受限的终端设备上运行,产生了多种神经网络轻量化方法,比如设计紧凑高效的网络结构、对不重要的连接进行剪枝。这些方法更关注网络本身的计算量大小,而没有关注输入图片分辨率的变化对整个网络的计算量和性能的影响。

EfficientNet平衡了网络宽度、网络深度和输入图片分辨率来设网络,但是EfficientNet中网络本身的规模和输入图片分辨率的调整是分离的,通过网格搜索得到它们的最优值。

CNN中一个普通卷积层的计算量为
























,其中



















分别表示输入feature map和输出feature map的通道数量,




是卷积核尺寸,






表示输出feature map的尺寸。为了减少卷积层的计算量,一个通常的做法是减小
















的值。比如group卷积的计算量为:
































,式中




表示group的数量。

而作者在减小
















的同时,也关注






的减少,即减少输入图像分辨率。

作者做了一个实验:US-Net使用MobileNetv1作为Backbone,为了满足13~569MFLOPs的网络计算量需求,在输入分辨率为






的情况下,需要将网络宽度变为原来的0.05 ~ 1倍;作者设计了US-Net+,能同时调整网络宽度和输入图像分辨率,为满足同样的计算量需求,将网络宽度减少为原来的0.25 ~ 1倍,在测试时调整输入图片分辨率为{224,192,160,128}。US-Net和US-Net+的精度与计算量的变化如下图所示:

从上图中可以看出,同时调整输入图片分辨率和网络宽度的US-Net+比只调整网络宽度的US-Net在同等计算量下性能更好。

另外,论文《Adascale: Towards real-time video object detection using adaptive scaling》中指出,减少输入图片分辨率,不一定降低网络性能,甚至可能会提高性能,因为能让网络减少对图片中冗余细节的过度关注。

基于上述观点,作者提出了mutual learning的方案,将网络宽度和输入分辨率的调整合并到一个统一的框架中,从而达到神经网络计算量和性能的更好平衡点。并以该方案为指导,设计出名为MutualNet的网络。

      02      

MutualNet

2.1 总体结构

作者提出了MutualNet,在分类任务中其训练框架如下图所示:

  • 使用MobileNetv1作为Backbone。

  • 上图中4个网络的网络宽度为原来的0.25~1倍,其中Full network的宽度为标准宽度(1倍),Sub-network3的宽度为标准宽度的0.25倍,Sub-network1和Sub-network2的宽度分别为标准宽度的



















    倍,






















  • Full network的输入图片分辨率为224,其他3个网络的输入图片分辨率从集合{224,192,160,128}中随机选取。

  • Full network学习ground-truth,其他网络利用蒸馏学习的方式,学习Full network的预测结果。

  • 图中的4个网络共享权重,由于Sub-network1、Sub-network2和Sub-network3的宽度都小于Full network,因此这3个网络都包含Full network的部分权重。假设某个Sub-network的宽度为Full network的




    倍,则该Sub-network每层的权重为Full Network对应层权重的前







    个,并用符号











    表示该Sub-network的权重;为统一表示,用符号











    表示Full Network的权重。

2.2 损失函数

若使用符号











表示某个网络的输入图片分辨率为






,则符号

























表示输入图片分辨率为




、宽度为标准宽度




倍的网络。

使用

























表示Full network,使用交叉熵损失函数和gound-truth训练,损失函数为:

使用表示3个Sub-network,在训练时随机从集合{224,192,160,128}中选取它们的输入图片分辨率,使用Full network的预测结果训练它们,损失函数为:

上式中的








表示KL散度。

总体的损失函数为:

在训练时使用了不同分辨率的输入图片,使得网络能够学习到不同尺度的特征表示,以提高网络性能。

2.3 Mutual Learning

以2个Sub-network为例介绍Mutual Learning的原理。假设其中1个网络的输入图片分辨率为128,宽度为标准宽度的0.4倍,记作

























;另外1个网络的输入图片分辨率为192,宽度为标准宽度的0.8倍,记作

























。则在训练时,这两个网络的损失函数对于权重的梯度分别表示为

2个Sub-network共享权重,即

























每层的权重为

























对应层权重的前半部分,可以将

























的权重表示如下:

需要注意上式中的




表示向量拼接操作

由1.2节中的内容可知,在训练时2个网络的损失函数相加,假设2个损失函数的和为




,则的梯度为:

从上式中可以看出,

























中的权重在训练时的梯度为,该值与2个不同分辨率的输入图片有关,如下图所示:

Sub-network的输入图片分辨率是从集合{224,192,160,128}中随机选取的,Mutual Learning使得每个网络都能捕捉到不同尺度的特征。

2.4 推理

MutualNet可以在不同的输入图片分辨率-网络宽度配置下进行推理,为了寻找在某个特定计算量限制下,输入图片分辨率-网络宽度的最优组合,进行如下操作:

从[0.25,1]区间内以0.05的步长采样,作为当前网络宽度的倍数,从集合{224,192,160,128}中选取输入图片分辨率,在验证集上测试输入图片分辨率-网络宽度的所有组合,根据验证集的精度选择在某个特定计算量限制下的最优组合。

需要注意的是,上述选取过程中不需要重新训练,因为MutualNet可以适应不同的网络宽度和输入图片分辨率。

      03      

使用MutualNet增强单个网络性能

MutualNet不仅可以在网络性能和计算量之间达到一个很好的平衡,而且还能提升单个baseline网络的性能。因为Mutual learning使得网络在训练时输入不同的图片分辨率,从而可以提取不同尺度的特征。

与多尺度数据增强方法不同的是,Mutual learning能在同一个迭代中读取不同分辨率的输入图片;多尺度数据增强通常使得网络在同一个迭代中读取相同分辨率的输入图片,在不同迭代中读取不同分辨率的图片。

作者比较了MutualNet和其他方法对baseline网络的性能提升情况。

  • Cifar数据集

在Cifar-10和Cifar-100数据集上使用WideResNet作为baseline,MutualNet中网络宽度的变化范围为[0.9,1],输入分辨率的选取集合为{32,28,24,20}。实验结果如下表所示(表中的“AA”表示Auto Augmentation):

  • ImageNet数据集

在ImageNet数据集上使用ResNet-50作为baseline,MutualNet中网络宽度的变化范围为[0.9,1],输入分辨率的选取集合为{224,192,160,128}。实验结果如下表所示:

从结果可知,MutualNet对于baseline网络有很好的性能提升作用。此外,MutualNet还能和上表中其他方法结合,进一步提升baseline网络的性能。

      04      

实验

4.1 分类

分别使用MobileNetv1和MobileNetv2作为MutualNet的Backbone,并与US-Net做比较。

对于Backbone为MobileNetv1的MutualNet和US-Net,设置计算量限制为[13,569]MFLOPs,US-Net使用宽度[0.05,1]满足计算量限制,MutualNet使用宽度[0.25,1]和输入图片分辨率{224,192,160,128}满足计算量限制。

对于Backbone为MobileNetv2的MutualNet和US-Net,设置计算量限制为[57,300]MFLOPs,US-Net使用宽度[0.35,1]满足计算量限制,MutualNet使用宽度[0.7,1]和输入图片分辨率{224,192,160,128}满足计算量限制。

在ImageNet数据集上对比MutualNet和US-Net的性能,实验结果如下图所示:

从上图中可以看出,同等计算量限制下,MutualNet性能均高于US-Net,尤其是在计算量很低的情况下。说明了同时调整网络宽度和输入图片分辨率能够更好地达到性能和计算量的平衡点。

在不同的网络宽度和输入图片分辨率设置下,单独训练MobileNetv1和MobileNetv2。

对于MobileNetv1,网络宽度为{1,0.75,0.5,0.25},输入图片分辨率为{224,192,160,128},组合成16个网络。

对于MobileNetv2,网络宽度为{1,0.75,0.5,0.35},输入图片分辨率为{224,192,160,128},组合成16个网络。

在ImageNet数据集上对比单独训练的MobileNetv1、MobileNetv2和MutualNet,结果如下图所示:

从上图中可以看出,在同等计算量限制下,MutualNet找到的网络宽度和输入图片分辨率的平衡点使得网络性能更好。此外从上图中右下角的表格上也能看出,即使是同样的网络宽度和输入图片分辨率配置,MutualNet也能有更好的性能,因为Mutual learning能够使得网络学习到不同尺度的特征。

4.2 检测和分割

在COCO数据集上以Mask-RCNN-FPN为基础构建MutualNet,Backbone为VGG-16,使用MMDetection代码实现,VGG-16使用在ImageNet上预训练的权重。

分别训练MutualNet和US-Net,宽度范围为[0.25,1]。对于US-Net,输入图片分辨率为






;对于MutualNet,输入图片分辨率从集合














中随机选取,Full network和多个Sub-network共享FPN和detection head,Sub-network也学习ground-truth。在不同计算量限制下,在检测任务和分割任务中2个网络的结果如下图所示:

同等计算量限制下,MutualNet的性能优于US-Net。即使是在与独立训练的网络同样的配置下,MutualNet性能也更好。充分说明了Mutual learning对于网络性能的提升。

      05      

总结

  • 通过实验证明了同时考虑网络宽度和输入图片分辨率对设计高性能轻量级网络的重要性;

  • 提出了Mutual learning方法,该方法能在网络训练时同时考虑网络宽度和输入图片分辨率,从而达到更好的性能-计算量平衡点,该方法具有通用性,能够适用于不同的网络架构和计算机视觉任务;

  • 根据Mutual learning方法训练MutualNet,通过实验证明了相比于US-Net,MutualNet能在计算量受限的视觉任务中达到更好的性能;

  • 由于Mutual learning在训练时能输入多种分辨率的图片从而提取不同尺度的特征, 因此不仅可以用来在轻量级网络设计中寻找最好的性能-计算量平衡点,还能用于提升单个baseline网络的性能。

仅用于学习交流!

备注:部署

模型压缩与应用部署交流群

模型压缩、网络压缩、神经网络加速、轻量级网络设计、知识蒸馏、应用部署、MNN、NCNN等技术,

若已为CV君其他账号好友请直接私信。

在看,让更多人看到  

MutualNet:一种“宽度-输入分辨率”互相学习的网络轻量化方法相关推荐

  1. 对深度学习模型的轻量化处理

    前言 模型的压缩技术是指对深度学习模型进行压缩以减小其大小和计算量,以便在资源有限的设备上部署.常用的压缩技术包括模型剪枝.量化.低秩分解等,下面分别简单的介绍一下. 正文 模型剪枝(Model Pr ...

  2. 端到端的基于深度学习的网络入侵检测方法

    摘要 当前网络入侵检测大多使用人工特征,但是人工特征往往不能适应新型攻击,重新设计人工特征又需要专家知识.对此,提出了一种算法,该算法从网络流量数据中提取会话作为样本,并将样本送入两个神经网络,会话的 ...

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

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]今天给大家介绍一篇 ECCV 2020 Oral论文 ,该论文强调了同时考虑网络宽度和 ...

  4. excel乘法公式怎么输入_深度学习可以不要乘法,北大、华为诺亚新论文:加法替代,效果不变,延迟大降...

    机器之心报道 参与:思.一鸣 深度学习对算力要求太高,怎么简化计算复杂度呢?北大.华为诺亚方舟实验室等提出完全用加法代替乘法,用 L1 距离代替卷积运算,从而显著减少计算力消耗. 和加法运算相比,乘法 ...

  5. python预测数据的方法_学习各种预测数据的方法

    除了根据平均值预测数值以外,还有其他方法.本文介绍其中三种,大家来一起学习各种预测数据的方法. 问题:预测参加研究班的10人中昨天饮酒的人数. 1.根据平均值预测 通过统计"认为偏多的人数& ...

  6. 【AI不惑境】网络的宽度如何影响深度学习模型的性能?

    大家好,这是专栏<AI不惑境>的第三篇文章,讲述模型宽度与模型性能的关系. 进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考.如果说学习是一个从模仿,到追随,到创造的过程 ...

  7. VALSE学习(一):high-resolution representation learning-高分辨率表示学习-姿态估计

    VALSE2019会议 一.相关概念 表示学习 :又称学习表示.在深度学习领域内,表示是指通过模型的参数,采用何种形式.何种方式来表示模型的输入观测样本X.表示学习指学习对观测样本X有效的表示. 表示 ...

  8. 图像翻译/UDA-CoCosNet v2: Full-Resolution Correspondence Learning for Image Translation图像翻译的全分辨率对应学习

    CoCosNet v2: Full-Resolution Correspondence Learning for Image Translation图像翻译的全分辨率对应学习 0.摘要 1.概述 2. ...

  9. 网络的宽度如何影响深度学习模型的性能?

    大家好,这是专栏<AI不惑境>的第三篇文章,讲述模型宽度与模型性能的关系. 进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考.如果说学习是一个从模仿,到追随,到创造的过程 ...

最新文章

  1. 福布斯发布2019全球品牌价值100强:华为上榜苹果夺冠
  2. Dubbo框架设计原理
  3. uva 10801 Lift Hopping
  4. oracle用户锁定及修改密码
  5. 如何在win7(xp)home version下安装 rose 32 bit
  6. 安装Vuecli新版本正常,但是显示版本是低版本
  7. Oracle死锁情况
  8. 问题记录——sqlserver视图重命名的陷阱
  9. revit建筑样板_Revit怎么玩转预制管道?这技能可有点高级了啊
  10. SGU[222] Little Rooks
  11. CMU 15-213 Introduction to Computer Systems学习笔记(3) Floating Point
  12. 励志,一年绝境翻盘,大厂的逆袭之路
  13. 社交网络电影计算机分析,基于社交网络的电影票房分析--以豆瓣电影和新浪微博为例...
  14. 使用Audacity分析浊音、清音和爆破音的时域以及频域特征
  15. 饭后的不良习惯,看看你中了几招?
  16. 计算机汉字录入试题,上机试题:汉字录入题.doc.doc
  17. FPGA控制TDC-GPX2时间间隔测量(一)
  18. bind9 dlz mysql_Bind9和MySQL DLZ缓冲区错误
  19. 计算机启动读取硬件配置信息,开机自检画面如何查看电脑硬件配置信息
  20. 插入字符到指定字符数组中指定位置

热门文章

  1. php加密后无法读取,无法解密的php加密文件
  2. 事件CEvent的使用
  3. 字符串匹配——枚举法
  4. poj 1182 食物链的一种解法(详解),非向量法
  5. 常用的后端命令 【笔记】
  6. 当前服务器文件夹不存在,供应商文件夹不存在,无法创建
  7. linux中mysql导入文件,linux下mysql导入sql文件命令
  8. 程序怎么在matlab运行不了,这个程序在MATLAB 7.0中为什么运行不起来 那个工具箱怎么装...
  9. 添加公共引用目录_3分钟解决200页Word生成目录的问题,无需插件,领导看了直夸奖...
  10. sql语句分组mysql_以数据库字段分组显示数据的sql语句(详细介绍)