Github:https://github.com/JiahuiYu/slimmable_networks
ICLR 2019
论文针对不同的硬件设备需要训练部署不同的模型的问题,提出了只需要训练一个网络就可以根据实际硬件在不同设备进行切换的轻量神经网络slimmable neural networks。
论文提出的方法,通过减少width来减少内存的消耗。而减少深度并不能减少内存的消耗。
slimmable neural networks优点:
- 对于不同的硬件设备,只需要训练和开发一套模型就可以。
- 通过在不同的设备上运行,可以在速度和精度之间获得权衡。
- 该解决方案适用于,正常的卷积,组卷积,深度分离卷积,膨胀卷积,全连接,池化,和神经网络的其他层。同样的,该解决方案还适用于分类,检测,识别,超分等其他任务。
- 事实上,可以直接用现有的库在移动设备上运行该方案。
Switchable Batch Normalization (S-BN) :
论文中网络结构的训练,需要训练不同的通道数。提出了S-BN结构。
使用传统的BN训练,训练时候的loss很小,但是测试时候的loss却很大。而使用S-BN的话,训练和测试的loss都很小。
训练过程:
实验结果:
Imagenet分类任务上不同模型的参数量和top-1错误率:
Imagenet分类任务上模型不同switch 开关个数的影响:
可以看出相同的网络结构,更多的switch开关并没有起到更低的错误率。
Coco检测任务结果:
可视化和讨论:
S-MobileNet v1 的第3-9层的激活,在不同的switch倍数下,表现出不同的分类精度。倍数越大,分类越准确。
左面4个为浅层的BN(1_1到1_8),分别表示BN层的均值,方差,尺度,偏移。右面的4个为深层的BN(12_1到12_8),分别表示BN层的均值,方差,尺度,偏移。
对于浅层,均值,方差,尺度,偏移是非常接近的。而对于深层,均值,方差,尺度,偏移则相差较大。
总结:
(1)提出了slimmable networks
(2)提出了Switchable batch normalization