网站首页 > 技术文章 正文
作者 | 林洛君
编辑 | Camel
本文转载自“CSIG文档图像分析与识别专委会”公众号。文章简要介绍 ICLR 2019 论文“Slimmable Neural Networks”的主要工作。该论文主要提出了一种有限计算资源下动态调整模型复杂度的方法。
论文地址: https://arxiv.org/abs/1812.08928
一、研究背景
近年来,深度神经网络在移动手机、增强现实设备和自动驾驶汽车中的应用逐渐盛行。这些移动端的应用对算法运行效率有较高的要求。
现有的许多轻量级网络如MobileNet, ShuffleNet等,是通过Width Multiplier来控制模型的计算复杂度和内存占用。由于设备性能的差异,这些轻量化网络在不同的设备上具有不同的响应时间。为了在不同的设备上达到精度和速度的权衡,人们通常是训练得到多种宽度的模型,并针对不同的设备进行单独部署。
然而,作者认为这种方法缺乏灵活性,不能在运行时对模型进行动态调整。因此,作者提出了一种“可瘦身”的网络训练方式,能够在运行时根据精度和速度动态地调整网络宽度,从而在不同的设备上均可达到性能与效率的平衡。
二、Slimmable Neural Networks
(1)网络结构
Slimmable Neural Networks可以被认为是不同网络宽度的子网络的集合,这些子网络拥有同一个主干网络并且共享一部分参数。主干网络可以采用现有的各种网络结构如 MobileNet, ShuffleNet, ResNet 等等。
如Figure 1所示,它包含了1.0x, 0.75x, 0.5x, 0.25x这4种网络宽度的子网络,这些子网络共享一组参数,比如,1.0x网络的前面25%的通道与0.25x网络共享所有参数。这些子网络通过联合训练,获得了比单独训练更高的性能。在测试阶段,可根据设备需求在这 4 种网络宽度里进行切换,调整到合适的网络宽度。
(2)可切换的批归一化(Switchable Batch Normalization)
作者对上述的Slimmable Neural Networks进行联合训练,发现即使训练过程很稳定,测试结果却很糟糕,在ImageNet上的top-1准确率只有0.1%,如Figure 2中na?ve training曲线所示:
作者推断这是由于BN层在训练和测试时的统计量差异导致的。BN层在训练阶段使用当前batch的均值和方差进行归一化,并对每一次迭代的均值和方差以滑动平均的方式进行叠加最终得到对整个训练集的均值和方差的估计;在测试阶段,BN层使用整个训练集的估计的均值和方差进行归一化。
在Slimmable Neural Network中,每一个子网络对应不同的输入通道个数,导致相对应的特征具有不同的均值和方差,而这些不同分布的均值和方差仍以滑动平均的方式加入到对整体的均值和方差的估计当中。因此,测试阶段BN层的统计量是所有子网络的均值和方差估计的加权之和,而在训练阶段,BN层的统计量是通过每个子网络的单独计算。BN层统计量在训练和测试阶段的不一致导致了网络性能在这两个阶段的分裂表现。
因此,作者提出了Switchable Batch Normalization (SBN),也即对不同的子网络使用独立的BN层。对每个子网络的总体均值和方差分别进行估计,从而使得训练和测试阶段BN统计量一致。需要注意的是,BN层的参数也是根据不同子网络独立训练的。采用SBN训练的网络性能如Figure 2所示,每个子网络的测试误差均有了稳定的下降。
(3)训练算法
本文的主要目的之一在于优化所有宽度的网络的平均性能。因此作者提出了以下训练策略:每一次迭代,累加所有子网络的反向传播梯度后,再更新网络权重。
三、主要实验结果及可视化效果
(1)ImageNet分类
本文设置了每个子网络单独训练作为baseline (MobileNet v1 1.0x, MobileNet v1 0.75x等),与之对照的是相同主干网络的Slimmable Neural Networks (S-MobileNet v1, S-MobileNet v2等)。对比结果如Table 1所示,
TABLE 1. Results of ImageNet classification. We show top-1 error rates of individually trained networks and slimmable networks given same width configurations and FLOPs. We use S- to indicate slimmable methods(?),to denote our reproduced result.
我们将有提升效果的均以黄色方块标示。从表格中可知,一部分的Slimmable Neural Networks在ImageNet数据集上的准确率具有提升,一部分以MobileNet v2作为backbone的模型准确率有所下降。
(2)物体检测、实例分割、关键点检测
Slimmable Neural Network在COCO 2017上的检测、分割、关键点检测结果如Table 2所示,
TABLE 2. Average precision (AP) on COCO 2017 validation set with individually trained networks and slimmable networks. ResNet-50 models are used as backbones for Faster-RCNN, Mask-RCNN and Keypoints-RCNN based on detection frameworks (Girshick et al., 2018; Chen et al., 2018). Faster 1.0x indicates Faster-RCNN for object detection with ResNet-50 1.0x as backbone.
相比较于单独训练的baseline,Slimmable Neural Networks中的各个子网络的性能均有所提升,而且越小的模型提升的越明显。这是因为Slimmable Neural Networks中各个模型是联合训练的,其中大模型为小模型的提供了更好的初始化特征和更丰富的监督信号。
(3)可视化结果
本文进一步对网络作可视化分析。针对不同子网络中的某个特定通道,分别找到令该通道的响应值最高的前10张图片。如Figure 3所示,
每一行代表一个子网络的通道3_9的强响应图片,其中红色框表示该图被该模型错误识别,绿色框则表示可被正确识别的图片。可以看到,随着网络宽度的增加,通道3_9所负责识别的图片逐渐从白色(RGB值[255,255,0])转为黄色(RGB值[255,255,255])。这说明,即使共享一组参数,同样的神经元在不同的子网络里扮演着不同的角色。
四、总结
本文提出了一种有效的根据计算资源动态调整模型复杂度的方法,也即Slimmable Neural Networks。这是一种不同网络宽度的子网络的集合,这些子网络共享一组参数,并通过联合训练获得了比单独训练更高的性能。
此外,本文还提出了Switchable Batch Normalization,即不同的子网络使用单独的BN层,保证了训练和测试时统计量的统一分布,使测试性能稳定提升。
参考文献
[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and JianSun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, pp.770–778, 2016.
[2] Andrew G Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, WeijunWang, TobiasWeyand, Marco Andreetto, and Hartwig Adam. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017.
[3] Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, and Liang-Chieh Chen. Inverted residuals and linear bottlenecks:Mobile networks for classification, detection and segmentation. arXiv preprint arXiv:1801.04381, 2018.
[4] Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, and JianSun. Shufflenet: An extremely efficient convolutional neural network for mobile devices. arXiv preprint arXiv:1707.01083, 2017.
猜你喜欢
- 2024-11-01 ViT再升级!9个视觉transformer最新改进方案让性能飞跃
- 2024-11-01 EfficientFormer:高效低延迟的Vision Transformers
- 2024-11-01 腾讯 AI Lab 开源世界首款自动化模型压缩框架PocketFlow
- 2024-11-01 速度提200倍,爱奇艺北航提基于耦合知识蒸馏视频显著区域检测算法
- 2024-11-01 ICCV2019 | 港科大、清华与旷视提出元学习的自动化神经剪枝网络
- 2024-11-01 NetAdapt:MobileNetV3用到的自动化网络简化方法 | ECCV 2018
- 2024-11-01 新论文|一种新型吸附式无人机检测系统
- 2024-11-01 CVPR 2022 | 升级传统模型量化STE反向求导?CMU,脸书,港科提出新思路
- 2024-11-01 LeNet5那些经典的CNN网络结构到底是从何而来的?
- 2024-11-01 人人都是圣斗士,如何做好移动端动作捕捉特效?
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)