轻量级神经网络发展_宽度神经网络

轻量级神经网络发展_宽度神经网络文章目录轻量级神经网络——shuffleNetshuffleNet1逐点分组卷积(Pointwisegroupconvolution)✨✨✨通道重排(channelshuffle)✨✨✨shuffleNetUnit✨✨✨shuffleNet1的网络结果和效果轻量级神经网络——shuffleNetshuffleNet1  在之前,已经讨论过一种轻量级神经网络——MobileNet,文中对MobileNet的三个版本都做了详细的介绍,读此篇之前,建议先了解MobileNet,特别是要对其中的深度可

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

轻量级神经网络——shuffleNet

shuffleNet1

  在之前,已经讨论过一种轻量级神经网络——MobileNet,文中对MobileNet的三个版本都做了详细的介绍,读此篇之前,建议先了解MobileNet,特别是要对其中的深度可分离卷积有较清晰的认识,因为shuffleNet中的分组卷积和MobileNet的逐深度卷积(Depthwise Convolution)非常相似,故在此篇的描述过程中,我认为大家已经有了MobileNet的基础???

  shuffleNet1的论文只有9页,是不是还是很轻量的???我认为shuffleNet1中最主要的思想有两点,一是逐点分组卷积(Pointwise Group Convolution),二是通道重排(channel shuffle)。 下面就来具体的谈谈这两点???
 
 

逐点分组卷积(Pointwise group convolution)✨✨✨

  在说明逐点分组卷积之前先来了解一下什么是分组卷积和逐点卷积。所谓分组卷积,就是将原始的特征图分成几组后再分别对每一组进行卷积。用下图来进行解释,左图表示普通卷积,右图表示分组卷积。左图普通卷积输入特征图个数为12,采用了6个卷积核对输入图像进行卷积,得到了6个输出的特征图;右图分组卷积输入特征图的个数也是12,但其将12个特征图分成了3组(红、绿、黄),每组有4个特征图,这时同样需要6个卷积核,但需要注意的是这6个卷积核也被分成3组,即两两一组。然后将每组的输入特征图和对应的两个卷积核进行卷积,这时每组都会产生2个特征图,一共也会有6个输出特征图。注意:虽然普通卷积核分组卷积都需要6个卷积核,但他们卷积核的通道数是不一样的,对本列来说,普通卷积的卷积核通道数为12,而分组卷积的卷积核通道数为4。

image-20220228161354149

  上面谈到了普通卷积和分组卷积的区别,其实看过MobileNet的同学,应该感觉很熟悉,这和MobileNet里面的逐深度卷积(DW卷积)是非常像的,相当于DW卷积把组分得足够多,每个通道的特征图都为一组,因此不理解分组卷积的可以结合DW卷积思考思考???

  读到这里,很多读者可能要问了,为什么要采用分组卷积呢?分组卷积相对于普通卷积有什么优势呢?其实分组卷积可以有效的减少网络的容量,使网络更加轻量。下面还是结合上图来算算普通卷积核分组算计各自所消耗的参数量和计算量(不会计算参数量和计算量的请移步:神经网络参数量、计算量(FLOPS)、内存访问量(AMC)计算详解)【注意:这里假设卷积核大小为K*k,输出特征图大小为H*W】

image-20220228170351967

  通过上图,可以很明显的看出,分组卷积的参数量和计算量都比普通卷积要小。定量观察会发现,普通卷积的计算量和参数量都是分组卷积的3倍,刚好是所分的组数,这是一个一般性的结论。

  至此,分组卷积应该是叙述清楚了。这回再来谈谈逐点卷积,这个似乎真没啥好谈的了,再我的MobileNet博客中也提到过,逐点卷积其实就是卷积核为1*1的卷积。

  讨论完分组卷积和逐点卷积,就可以来定义逐点分组卷积了。顾名思义,逐点分组卷积就是将分组卷积核逐点卷积相结合,即表示卷积核大小为1*1的分组卷积。

 
 

通道重排(channel shuffle)✨✨✨

  上面介绍了逐点分组卷积,这里可以看一下逐点分组卷积后的效果,如下图所示:

image-20220228172700011

  可以看到,不同组之间是没有任何联系的,即得到的特征图只和对应组别的输入有关系。论文中也有这样的描述,这种分组因不同组之间没有任何联系,学习到的特征会非常有限,也很容易导致信息丢失,因此论文提出了channel shuffle。

image-20220228181740259

  channel shuffle具体是怎么实现的呢?下图标绿框部分即为channel shuffle的操作,即从得到的特征图中提取出不同组别下的通道,并将他们组合在一起,最终channel shaffle完成后的结果如(c)中黄色虚线框所示。

轻量级神经网络发展_宽度神经网络

  上图中从绿框传变成黄色虚线框的过程即为channel shaffle通道重排过程,现将其分解出来,看看channel shaffle通道重排具体过程,如下图:

image-20220228183536486


图片来源于B站UP主:同济子豪兄

​  
 

shuffleNet Unit✨✨✨

  (a)是最原始的残差结构,(b)、©都是shuffleNet的单元结构。先来看看(a)是如何变成(b)的,首先是用逐点分组卷积代替了逐点卷积,同时在其后跟了一个channel shuffle操作,然后中间的3x3DWConv没有变化,最后的逐点卷积依旧换成了逐点分组卷积。©是用来降采样的,和(b)主要区别在shortcut分支中采用了3x3d的步长为2的AVG Pool、主分支中DWConv中的步长变成了2以及最后使用的是Concat而不是add,这样的结构会使输入图像尺寸减半,通道数翻倍。

image-20220228184042618

  还有一些细节需要在这里提一下,一是在第二个逐点分组卷积后并没有使用channel shuffle,这是因为此时得到的结果已经相当不错了,所以不需要进行通道重排了;二是在DWConv后并没有进行Relu激活,这个原因我在MobileNetV2中有说到,不知道的可以去看一看。

image-20220228190312831

image-20220228190556317

 
 

shuffleNet1的网络结果和效果

  下图网络结构的每一步变化也较好分析,不会的可以参考我之前的博客。需要注意的是黄框框住的g表示不同的分组数,如g=3表示将特征图分成3组进行分组卷积。

轻量级神经网络发展_宽度神经网络

  下面为shuffleNet和其他一些经典网络的性能比较,可以看出shuffleNet在FLOPs一定时优势还是很明显的???

image-20220228192650743


shuffleNet和主流模块堆叠而成的网络新能比较
   

image-20220228192934740


shuffleNet和主流网络性能比较
   

image-20220228193114237


shuffleNet和MobileNet图像分类性能比较
 

 
 
如若文章对你有所帮助,那就???

咻咻咻咻~~duang~~点个赞呗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195830.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • by 2_王开元 fitting

    by 2_王开元 fittingAvoid Overfitting By Early Stopping With XGBoost

    2022年4月20日
    106
  • 小程序列表跳转至详情_小程序相互跳转的方法

    小程序列表跳转至详情_小程序相互跳转的方法效果展示:列表页js部分:onLoad:function(options){varthat=this;wx.request({url:’你的接口’,data:{ 接口参数},header:{‘content-type’:’ap…

    2022年8月18日
    8
  • 如何在Mac上恢复已删除或丢失的分区「建议收藏」

    如何在Mac上恢复已删除或丢失的分区「建议收藏」数据丢失了怎么办?如何在Mac上恢复已删除或丢失的分区呢?别急,今天小编给大家整理了使用DiskDril数据恢复工具在Mac上恢复已删除或丢失的分区的教程,还在等什么,快来跟小编看看吧![dl]15-1501[/dl]1.为Mac安装DiskDrill下载了DiskDrill分区恢复软件,您就可以直接从您的应用程序菜单将其添加到Dock中。这将让您在需要恢复分区或更改设置时快速启动DiskDrill。2.连接外置驱动如果您要从外部驱动器(USB驱动器、智能卡等)

    2022年8月11日
    53
  • 软件测试的一点知识[1]

    软件测试的一点知识[1]

    2021年8月1日
    58
  • html弹性盒子布局,div+css3弹性盒子(flex box)布局「建议收藏」

    html弹性盒子布局,div+css3弹性盒子(flex box)布局「建议收藏」一、CSS3弹性盒子(FlexBox)弹性盒子是CSS3的一种新布局模式。CSS3弹性盒(FlexibleBox或flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。首先要明白几个概念:主轴:Flex容器的主轴主要用来配置Flex项目,默…

    2025年6月20日
    7
  • spring的配置文件-applicationContext.xml

    spring的配置文件-applicationContext.xml1.<beans>标签是spring的配置文件的根标签,其包含相关的命名空间,用于约束子标签的标识<?xmlversion=”1.0″encoding=”UTF-8″?><beansxmlns=”http://www.springframework.org/schema/beans”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xmlns:aop=”http://www.s

    2022年7月13日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号