模型压缩(3) - ShuffleNet

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

论文地址:Arxiv Paper

GitHub: Tensorflow, Caffe

   

主要是在Xception的基础上进一步改进    

Motivation:

  • Xception / ResNeXt 这种优化结构对于extremely small network的计算性能欠佳

    因为conv1x1耗时过长(在MobileNet中已验证)

    受AlexNet的启发,提出了group convolution,提高conv1x1的计算性能

  • Group convolution 的引入有局限性

    提出了channel shuffle增加了feature channel之间信息的流动性

ShuffleNet units

  • 图(a) ,带有depthwise conv的bottleneck module

    由三个部分组成:

    point wise 1x1 conv + Xception中的depthwise 3x3 conv + point wise 1x1 conv

    前面两个op组合构成了Xception,最后一个为了shortcut的channel匹配

  • 图(b),引入Group conv
1). 考虑conv1x1耗时较长(在MobileNet中已验证),因此受Alexnet启发,对conv1x1进行分组计算,
     将第一个point wise conv1x1 替换为 1x1 group conv
2). 用Group conv使得不同Group 的结果中信息隔离,因此增加channel shuffle层,交换信息
3). 接一个Xception 中的depthwise conv3x3
4). 与1)相同,将point wise conv1x1替换为1x1 group conv,提高computation performance    
 
  • 图(c),stride = 2的ShuffleNet

    1). shortcut上增加了avg_pooling

    2). 用concat替换element wise add

Channel shuffle原理

   

Reference

轻量级网络--ShuffleNet论文解读

ShuffleNet算法详解

ShuffleNet

posted @ 2018-04-21 21:10  Fighting-Lady  阅读(981)  评论(0编辑  收藏  举报