AutoSlim阅读笔记
(一) Title
论文地址:https://arxiv.org/abs/1903.11728
代码地址:https://github.com/JiahuiYu/slimmable_networks
前言:这个是应用到分类任务中的方法,如果说应用到目标检测任务中会有什么不同呢?
(二) Summary
本文目标
在资源受限(FLOPS,latency,memory footprint以及model size)的前提条件下,本文的研究内容是如何set channel numbers in a neural network?
本文工作
训练一个single可瘦身的网络来近似不同通道配置下的网络accuracy,然后迭代评估可训练的瘦身模型,并且以最小精度下降来贪婪地瘦层,通过single pass,我们能够获得在不同资源限制下的最优的channel配置。这里的问题是能不能在目标检测任务中应用这个剪枝方法呢?
实验结果
通过setting optimized channel numbers,AutoSlim-MobileNet-v2(305M FLOPs)取得了74.2%的top-1,比默认MobileNet-v2高2.4%,AutoSlim-ResNet-50(570M FLOPs)结果要比MobileNet-v1(569M FLOPs)高1.3%
本文贡献
- 提出了一个one-shot approach用于网络架构channel numbers的搜索
- 本文方法高效并且是有效可行的
- 取得了state-of-the-art speed-accuracy trade-offs通过设置最优的通道配置。
(三) Research Object
目前,网络中通道的数量往往是启发式的选择,在VGG中引入的一种启发式思路就是"一半大小,两倍通道",总体来说,就是通过启发方式来设计网络结构.
近期的一些工作中深入研究了微观building blocks的通道配置情况,这里的微观building blocks指的是(1x1,3x3卷积),这里更多的是高效卷积结构的设计
- 首先第一种就是bottleneck residual结构,包括1x1卷积和3x3卷积,这里的1x1卷积用来降低和增加卷积通道数,
- MobileNet v2中指出bottleneck设计并不高效,并提出了inverted residual block,其中1x1卷积用于expanding feature(6x expand),然后通过3x3的depthwise convolution之后projecting back
自动化通道配置方面的工作也在进行中,
- 文献[27]中表示相比于fine-tuning剪枝后的模型,从头开始训练这些pruned架构导致similar或者更好性能的模型,
- MNasNet中提出使用强化学习直接搜索网络结构以及filter sizes,优化的网络结构需要大量的网络samples以及computational cost.
关于如何在资源有限的情况下更好地设置neural network的通道数,首先想到的方法就是:
- 将所有可能的通道配置情况都训练full epoches,然后直接选择符合约束条件的最佳的模型,然而这种方式很明显是不可行的,计算量太大.
- 文献[35,36]中引入了slimmable网络can run at arbitrary width with equally or even better performance than same architecture trained individually.
为了应对上述的问题,本文提出的方法是训练一个slimmable network来近似不同通道配置下的network accuracy,本文采用slimmable models的原因:
- Training slimmable models要比brute-force方法(尝试所有的方案,在符合约束条件下挑选最佳方案)快得多.
- traind slimmable model 能够在任意宽度下执行,能够用来近似不同channel 设置下的性能。
- 相同trained slimmable model能够在不同的约束条件下使用,从而获得optimal channels
AutoSlim的训练阶段
- 首先,先训练slimmable model较少的epochs(所有训练epoch的10%或者20%)得到一个benchmark perfor