ShuffleNet系列论文:从v1-v2

 

v1 paper:https://arxiv.org/pdf/1707.01083.pdf

v2 paper:https://arxiv.org/abs/1807.11164

code:本文不提供code,参见各个框架的reademe

讲道理,存在mobilenet的情况下,我对shuffleNet的用法就少了很多,最大的存在感是shuffleNetV2提出了嵌入式芯片设计网络时的准则(gpu也是同理),这个才是关键所在,其他的一般情况下还是用mobilenet比较成熟,配合检测算法用的也比较多,部署框架支持的也多一些。其实我觉得v2提出来最重要的体验就是,解释了为啥resnext等网络,总是号称这么设计参数量减少了,但是跑起来远没有renet快,解释的相当到位,本文将介绍shufflenet的技术要点和变化,但不按照文章格式解析。

1、ShuffleNet V1

  1、原理

    我们直接看v1的结构图,相当直白:

    如上图所示,图a是常规的group conv结构,alexnet中用到了,当时其实也是为了增快速度,减少内存占用,跟精度没什么关系,带来的问题是,输出通道只和输入的某些通道有关,导致全局信息不流畅,网络表达能力差。图b在进行Gconv2之前,对输入的featuremap做一个随机分配,称之为“均匀打乱”。图c就是shufflel后的效果图。

    原文提到,code是如何操作的:

假定将输入层分为 g组,总通道数为g*n,首先你将通道那个维度拆分为(g,n)两个维度,然后将这两个维度转置变成(n,g),最后重新reshape成一个维度g*n。

2、shufflenet unit

    shuffle 单元结构如下图所示:

如上图所示,图a是mibilenet的结构单元,应该是类似于v1的结构,详情参见我上一篇博客;

图b是本文的一种模块,就是在第一个模块的基础上,conv替换为gconv,并加入了一个channel shuffle的操作,但是feature输出前后的size不会发生变化;

图c是本文的另外一个模块,在输入分支上添加了一个stride=2的avg pool,且在dwconv的位置去stride=2,然后将原来的resnet的add变成了特征的concat操作,将channel进行合并。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值