网站首页 > 技术文章 正文
作者 | 张凯
编辑 | CV君
报道 | 我爱计算机视觉(微信id:aicvml)
本文分享一篇来自 ECCV'20 Oral 的论文『MutualNet: Adaptive ConvNet via Mutual Learning from Network Width and Resolution』。
- 论文:MutualNet: Adaptive ConvNet via Mutual Learning from Network Width and Resolution
- 代码:https://github.com/taoyang1122/MutualNet
0.动机
为了让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的网络。
1.MutualNet
1.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的权重。
1.2 损失函数
若使用符号表示某个网络的输入图片分辨率为,则符号表示输入图片分辨率为、宽度为标准宽度倍的网络。
使用表示Full network,使用交叉熵损失函数和gound-truth训练,损失函数为:
使用表示3个Sub-network,在训练时随机从集合{224,192,160,128}中选取它们的输入图片分辨率,使用Full network的预测结果训练它们,损失函数为:
上式中的表示KL散度。总体的损失函数为:
在训练时使用了不同分辨率的输入图片,使得网络能够学习到不同尺度的特征表示,以提高网络性能。
1.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使得每个网络都能捕捉到不同尺度的特征。
1.4 推理
MutualNet可以在不同的输入图片分辨率-网络宽度配置下进行推理,为了寻找在某个特定计算量限制下,输入图片分辨率-网络宽度的最优组合,进行如下操作:
从[0.25,1]区间内以0.05的步长采样,作为当前网络宽度的倍数,从集合{224,192,160,128}中选取输入图片分辨率,在验证集上测试输入图片分辨率-网络宽度的所有组合,根据验证集的精度选择在某个特定计算量限制下的最优组合。
需要注意的是,上述选取过程中不需要重新训练,因为MutualNet可以适应不同的网络宽度和输入图片分辨率。
2.使用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网络的性能。
3.实验
3.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能够使得网络学习到不同尺度的特征。
3.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对于网络性能的提升。
4.总结
- 通过实验证明了同时考虑网络宽度和输入图片分辨率对设计高性能轻量级网络的重要性;
- 提出了Mutual learning方法,该方法能在网络训练时同时考虑网络宽度和输入图片分辨率,从而达到更好的性能-计算量平衡点,该方法具有通用性,能够适用于不同的网络架构和计算机视觉任务;
- 根据Mutual learning方法训练MutualNet,通过实验证明了相比于US-Net,MutualNet能在计算量受限的视觉任务中达到更好的性能;
- 由于Mutual learning在训练时能输入多种分辨率的图片从而提取不同尺度的特征, 因此不仅可以用来在轻量级网络设计中寻找最好的性能-计算量平衡点,还能用于提升单个baseline网络的性能。
仅用于学习交流!
猜你喜欢
- 2024-10-18 「NLP」BERT fintune 的艺术 女性人文艺术欣赏ppt
- 2024-10-18 大模型开发 - 一文搞懂Transformer工作原理
- 2024-10-18 向量的玩法规则,一起来啊! 向量入门
- 2024-10-18 Python Numpy库详细教程 numpy python2.7
- 2024-10-18 Numpy数组的索引与切片和变形拼接分裂
- 2024-10-18 端到端声源分离研究:现状、进展和未来
- 2024-10-18 别人家的高中生:入大学前,Ta详细梳理了GAN的发展脉络
- 2024-10-18 CIKM最佳论文:11亿节点的大型图,看闲鱼用图卷积过滤垃圾评论
- 2024-10-18 南方测绘推荐 | 武汉大学钟青岑:顾及路网约束的深度地图匹配方法
- 2024-10-18 Java实现7种常见密码算法 java实现凯撒密码
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)