DeepRebirth: Accelerating Deep Neural Network Execution on Mobile Devices
作者将CNN中的层分为两种:(1)Tensor Layer,如conv,fc;(2)Non-tensor Layer,如pooling,norm。作者发现网络进行前向推理时,Non-tensor layer也会占用不少时间和内存,作者提出用单独的Tensor layer来替换Tensor layer和其后临近的Non-tensor layer能减少网络运行时间。
Streamline Slimming
- norm layer:直接删去
- pooling layer:将pooling layer中的stride移到conv layer中
Branch Slimming
Branch Slimming主要针对的是GoogLeNet中的Inception结构,这个部分将Inception结构中的最左边(conv_1x1)和最右边(pooling+conv_1x1)删去了,仅保留了中间两个分支,调整了输入输出通道,这个部分需要注意网络最后的输出通道数,修改方法没有指定要求
对于一个预训练网络,逐层进行合并,新层采用标准初始方式,学习率为其它层的10倍,最后微调整个网络
结论:实现了3倍加速,2.5被运行内存节省,只带来了0.4的top-5 acc drop